1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-17 07:40:47 +03:00

Improved handling of use option sentences

This commit is contained in:
Graham Nelson 2020-08-03 12:11:27 +01:00
parent 0b901f8a47
commit 3d2acd99cc
96 changed files with 3731 additions and 3428 deletions

View file

@ -1,6 +1,6 @@
# Inform 7
v10.1.0-alpha.1+6Q86 'Krypton' (2 August 2020)
v10.1.0-alpha.1+6Q87 'Krypton' (3 August 2020)
## About Inform 7

View file

@ -1,3 +1,3 @@
Prerelease: alpha.1
Build Date: 2 August 2020
Build Number: 6Q86
Build Date: 3 August 2020
Build Number: 6Q87

View file

@ -728,7 +728,7 @@ by <a href="../linguistics-module/index.html" class="internal">linguistics</a>:
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">relationship</span><span class="plain-syntax">, </span><span class="reserved-syntax">binary_predicate</span><span class="plain-syntax">)</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="P-wtmd.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresscurrent">cm</li><li class="progresssection"><a href="1-mr.html">mr</a></li><li class="progresssection"><a href="1-wtc.html">wtc</a></li><li class="progresssection"><a href="1-htc.html">htc</a></li><li class="progresssection"><a href="1-cp.html">cp</a></li><li class="progresssection"><a href="1-pp.html">pp</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="1-mr.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="P-wtmd.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresscurrent">cm</li><li class="progresssection"><a href="1-mr.html">mr</a></li><li class="progresssection"><a href="1-wtc.html">wtc</a></li><li class="progresssection"><a href="1-htc.html">htc</a></li><li class="progresssection"><a href="1-cp.html">cp</a></li><li class="progresssection"><a href="1-pp.html">pp</a></li><li class="progresssection"><a href="1-cs.html">cs</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="1-mr.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -184,7 +184,7 @@ bit or the &lt;k-kind&gt; bit set, which as we see above is <span class="extract
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="1-htc.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-cm.html">cm</a></li><li class="progresssection"><a href="1-mr.html">mr</a></li><li class="progresssection"><a href="1-wtc.html">wtc</a></li><li class="progresssection"><a href="1-htc.html">htc</a></li><li class="progresscurrent">cp</li><li class="progresssection"><a href="1-pp.html">pp</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="1-pp.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="1-htc.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-cm.html">cm</a></li><li class="progresssection"><a href="1-mr.html">mr</a></li><li class="progresssection"><a href="1-wtc.html">wtc</a></li><li class="progresssection"><a href="1-htc.html">htc</a></li><li class="progresscurrent">cp</li><li class="progresssection"><a href="1-pp.html">pp</a></li><li class="progresssection"><a href="1-cs.html">cs</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="1-pp.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

247
docs/core-module/1-cs.html Normal file
View file

@ -0,0 +1,247 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Compilation Settings</title>
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
</script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Preform-Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
<nav role="navigation">
<h1><a href="../index.html">
<img src="../docs-assets/Inform.png" height=72">
</a></h1>
<ul><li><a href="../compiler.html">compiler tools</a></li>
<li><a href="../other.html">other tools</a></li>
<li><a href="../extensions.html">extensions and kits</a></li>
<li><a href="../units.html">unit test tools</a></li>
</ul><h2>Compiler Webs</h2><ul>
<li><a href="../inbuild/index.html">inbuild</a></li>
<li><a href="../inform7/index.html">inform7</a></li>
<li><a href="../inter/index.html">inter</a></li>
</ul><h2>Inbuild Modules</h2><ul>
<li><a href="../supervisor-module/index.html">supervisor</a></li>
</ul><h2>Inform7 Modules</h2><ul>
<li><a href="index.html"><span class="selectedlink">core</span></a></li>
<li><a href="../kinds-module/index.html">kinds</a></li>
<li><a href="../if-module/index.html">if</a></li>
<li><a href="../multimedia-module/index.html">multimedia</a></li>
<li><a href="../index-module/index.html">index</a></li>
</ul><h2>Inter Modules</h2><ul>
<li><a href="../bytecode-module/index.html">bytecode</a></li>
<li><a href="../building-module/index.html">building</a></li>
<li><a href="../codegen-module/index.html">codegen</a></li>
</ul><h2>Services</h2><ul>
<li><a href="../arch-module/index.html">arch</a></li>
<li><a href="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</a></li>
<li><a href="../html-module/index.html">html</a></li>
<li><a href="../inflections-module/index.html">inflections</a></li>
<li><a href="../linguistics-module/index.html">linguistics</a></li>
<li><a href="../problems-module/index.html">problems</a></li>
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'Compilation Settings' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#1">Chapter 1: Configuration and Control</a></li><li><b>Compilation Settings</b></li></ul></div>
<p class="purpose">Settings affecting the compilation of the current project.</p>
<p class="commentary firstcommentary"><a id="SP1"></a><b>&#167;1. </b>The Inform compiler has many settings coming from outside: for example, a
command-line switch allows indexing to be turned off. This is not something a
program's own source text should be able to control. But it also has settings
such as whether or not to use the serial comma, which should indeed be
controllable from source text.
</p>
<p class="commentary">Those are called "compilation settings", and are a ragbag accumulated through
two decades of historical accident. Most correspond to use options. Some are
meaningful only for works of IF and are inert for Basic Inform projects.
</p>
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">AUTHORIAL_MODESTY_UO</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">DYNAMIC_MEMORY_ALLOCATION_UO</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">MEMORY_ECONOMY_UO</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">NO_DEPRECATED_FEATURES_UO</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">NUMBERED_RULES_UO</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">TELEMETRY_RECORDING_UO</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">SCORING_UO</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">NO_SCORING_UO</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">ENGINEERING_NOTATION_UO</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">UNABBREVIATED_OBJECT_NAMES_UO</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">INDEX_FIGURE_THUMBNAILS_UO</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">UNDO_PREVENTION_UO</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">SERIAL_COMMA_UO</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">PREDICTABLE_RANDOMISATION_UO</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">COMMAND_LINE_ECHOING_UO</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">AMERICAN_DIALECT_UO</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">FULL_LENGTH_ROOM_DESCRIPTIONS_UO</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">ABBREVIATED_ROOM_DESCRIPTIONS_UO</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">VERBOSE_ROOM_DESCRIPTIONS_UO</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">BRIEF_ROOM_DESCRIPTIONS_UO</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">SUPERBRIEF_ROOM_DESCRIPTIONS_UO</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b>Note that Inform recognises these by their English names, so there would be no
need to translate this to other languages.
</p>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;notable-use-option-name&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">authorial</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">modesty</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { AUTHORIAL_MODESTY_UO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">dynamic</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">memory</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">allocation</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { DYNAMIC_MEMORY_ALLOCATION_UO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">memory</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">economy</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { MEMORY_ECONOMY_UO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">no</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">deprecated</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">features</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { NO_DEPRECATED_FEATURES_UO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">numbered</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">rules</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { NUMBERED_RULES_UO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">telemetry</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">recordings</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { TELEMETRY_RECORDING_UO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">scoring</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { SCORING_UO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">no</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">scoring</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { NO_SCORING_UO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">engineering</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">notation</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { ENGINEERING_NOTATION_UO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">unabbreviated</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">object</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">names</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { UNABBREVIATED_OBJECT_NAMES_UO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">index</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">figure</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">thumbnails</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { INDEX_FIGURE_THUMBNAILS_UO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">undo</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">prevention</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { UNDO_PREVENTION_UO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">serial</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">comma</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { SERIAL_COMMA_UO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">predictable</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">randomisation</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { PREDICTABLE_RANDOMISATION_UO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">command</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">line</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">echoing</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { COMMAND_LINE_ECHOING_UO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">american</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">dialect</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { AMERICAN_DIALECT_UO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">full-length</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">room</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">descriptions</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { FULL_LENGTH_ROOM_DESCRIPTIONS_UO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">abbreviated</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">room</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">descriptions</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { ABBREVIATED_ROOM_DESCRIPTIONS_UO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">verbose</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">room</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">descriptions</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { VERBOSE_ROOM_DESCRIPTIONS_UO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">brief</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">room</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">descriptions</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { BRIEF_ROOM_DESCRIPTIONS_UO, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">superbrief</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">room</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">descriptions</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { SUPERBRIEF_ROOM_DESCRIPTIONS_UO, - }</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="SP3"></a><b>&#167;3. </b>Some of the pragma-like settings are stored here:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">compilation_settings</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">allow_engineering_notation</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">American_dialect</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">command_line_echoing</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">dynamic_memory_allocation</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">index_figure_thumbnails</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">memory_economy_in_force</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">no_deprecated_features</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">no_verb_verb_exists</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">number_rules_in_index</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">predictable_randomisation</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">ranking_table_given</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">room_description_level</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">scoring_option_set</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">serial_comma</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">story_author_given</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">undo_prevention</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">use_exact_parsing_option</span><span class="plain-syntax">;</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">compilation_settings</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">compilation_settings</span><span class="plain-syntax"> </span><span class="identifier-syntax">global_compilation_settings</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure compilation_settings is accessed in 6/nv, 10/pl, 13/rsfk, 14/ds2, 21/rl, 21/rl2, 26/uoart and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b>Very early in compilation, the following is called:
</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">CompilationSettings::initialise_gcs</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">CompilationSettings::initialise_gcs</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_2">&#167;2.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="identifier-syntax">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">allow_engineering_notation</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">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">American_dialect</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">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">command_line_echoing</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">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">dynamic_memory_allocation</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">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">index_figure_thumbnails</span><span class="plain-syntax"> = </span><span class="constant-syntax">50</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">memory_economy_in_force</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">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">no_deprecated_features</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">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">no_verb_verb_exists</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">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">number_rules_in_index</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">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">predictable_randomisation</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">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">ranking_table_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="identifier-syntax">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">room_description_level</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">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">scoring_option_set</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NOT_APPLICABLE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">serial_comma</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">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">story_author_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="identifier-syntax">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">undo_prevention</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">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">use_exact_parsing_option</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="SP5"></a><b>&#167;5. </b>And when (for example) a "Use..." sentence triggers one of these, the
following function is called. (Note that this is not the only way that
the above settings can be changed.)
</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">CompilationSettings::set</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">CompilationSettings::set</span></span>:<br/>New Use Option Requests - <a href="4-nuor.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">U</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="identifier-syntax">source_file</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">compilation_settings</span><span class="plain-syntax"> *</span><span class="identifier-syntax">g</span><span class="plain-syntax"> = &amp;</span><span class="identifier-syntax">global_compilation_settings</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">U</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">AUTHORIAL_MODESTY_UO:</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Extensions::corresponding_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</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="identifier-syntax">Extensions::set_general_authorial_modesty</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">Extensions::set_authorial_modesty</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">break</span><span class="plain-syntax">;</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">ABBREVIATED_ROOM_DESCRIPTIONS_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">room_description_level</span><span class="plain-syntax"> = </span><span class="constant-syntax">3</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">AMERICAN_DIALECT_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">American_dialect</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">BRIEF_ROOM_DESCRIPTIONS_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">room_description_level</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</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">COMMAND_LINE_ECHOING_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">command_line_echoing</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">ENGINEERING_NOTATION_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">allow_engineering_notation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">FULL_LENGTH_ROOM_DESCRIPTIONS_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">room_description_level</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</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">MEMORY_ECONOMY_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">memory_economy_in_force</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">NO_DEPRECATED_FEATURES_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">no_deprecated_features</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">NO_SCORING_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">scoring_option_set</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</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">NUMBERED_RULES_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">number_rules_in_index</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">PREDICTABLE_RANDOMISATION_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">predictable_randomisation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">SCORING_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">scoring_option_set</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">SERIAL_COMMA_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">serial_comma</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">SUPERBRIEF_ROOM_DESCRIPTIONS_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">room_description_level</span><span class="plain-syntax"> = </span><span class="constant-syntax">3</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">TELEMETRY_RECORDING_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">ProblemBuffer::set_telemetry</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">UNABBREVIATED_OBJECT_NAMES_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">use_exact_parsing_option</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">UNDO_PREVENTION_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">undo_prevention</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">VERBOSE_ROOM_DESCRIPTIONS_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">room_description_level</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">U</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">DYNAMIC_MEMORY_ALLOCATION_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">dynamic_memory_allocation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">N</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">INDEX_FIGURE_THUMBNAILS_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">index_figure_thumbnails</span><span class="plain-syntax"> = </span><span class="identifier-syntax">N</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="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP6"></a><b>&#167;6. </b>Exact parsing in the <a href="../lexicon-module/index.html" class="internal">lexicon</a> module results from one such setting:
</p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">PARSE_EXACTLY_LEXICON_CALLBACK</span><span class="plain-syntax"> </span><a href="1-cs.html#SP6" class="function-link"><span class="function-syntax">CompilationSettings::parse_exactly</span></a>
</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">CompilationSettings::parse_exactly</span><span class="plain-syntax">(</span><span class="identifier-syntax">excerpt_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">em</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">em</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">meaning_code</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NOUN_MC</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_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">use_exact_parsing_option</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</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">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="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="1-pp.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-cm.html">cm</a></li><li class="progresssection"><a href="1-mr.html">mr</a></li><li class="progresssection"><a href="1-wtc.html">wtc</a></li><li class="progresssection"><a href="1-htc.html">htc</a></li><li class="progresssection"><a href="1-cp.html">cp</a></li><li class="progresssection"><a href="1-pp.html">pp</a></li><li class="progresscurrent">cs</li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="2-up.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

View file

@ -188,6 +188,7 @@ will divide according to these units.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><a href="1-wtc.html#SP4" class="function-link"><span class="function-syntax">Task::advance_stage_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SUBDIVIDING_CSEQ</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Dividing source into compilation units"</span><span class="plain-syntax">, -1);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="1-cs.html#SP4" class="function-link"><span class="function-syntax">CompilationSettings::initialise_gcs</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::begin</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="8-hdn.html#SP8" class="function-link"><span class="function-syntax">Sentences::Headings::make_the_tree</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="8-hdn.html#SP16" class="function-link"><span class="function-syntax">Sentences::Headings::write_as_xml</span></a><span class="plain-syntax">)</span>
@ -231,7 +232,7 @@ so on. Those absolute basics are made here.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><a href="1-wtc.html#SP4" class="function-link"><span class="function-syntax">Task::advance_stage_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MODEL_CSEQ</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Making the model world"</span><span class="plain-syntax">, -1);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="13-rsfk.html#SP24" class="function-link"><span class="function-syntax">Kinds::RunTime::kind_declarations</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="26-uo.html#SP18" class="function-link"><span class="function-syntax">UseOptions::compile</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="26-uoart.html#SP3" class="function-link"><span class="function-syntax">RTUseOptions::compile</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="15-pr.html#SP27" class="function-link"><span class="function-syntax">Properties::emit</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="15-epv.html#SP3" class="function-link"><span class="function-syntax">Properties::Emit::allocate_attributes</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Actions::name_all</span><span class="plain-syntax">)</span>
@ -281,13 +282,13 @@ so on. Those absolute basics are made here.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><a href="1-wtc.html#SP4" class="function-link"><span class="function-syntax">Task::advance_stage_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">INTER_CSEQ</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Generating inter"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="26-uo.html#SP19" class="function-link"><span class="function-syntax">UseOptions::compile_icl_commands</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="26-uoart.html#SP4" class="function-link"><span class="function-syntax">RTUseOptions::compile_pragmas</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="26-fc.html#SP2" class="function-link"><span class="function-syntax">FundamentalConstants::emit_build_number</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Bibliographic::compile_constants</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="9-ef.html#SP6" class="function-link"><span class="function-syntax">Extensions::Files::ShowExtensionVersions_routine</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Kinds::Constructors::compile_I6_constants</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH_IF</span><span class="plain-syntax">(</span><span class="identifier-syntax">scoring_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">PL::Score::compile_max_score</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="26-uo.html#SP22" class="function-link"><span class="function-syntax">UseOptions::TestUseOption_routine</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="26-uoart.html#SP1" class="function-link"><span class="function-syntax">RTUseOptions::TestUseOption_routine</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="21-ac.html#SP14" class="function-link"><span class="function-syntax">Activities::compile_activity_constants</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="21-ac.html#SP14" class="function-link"><span class="function-syntax">Activities::Activity_before_rulebooks_array</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="21-ac.html#SP14" class="function-link"><span class="function-syntax">Activities::Activity_for_rulebooks_array</span></a><span class="plain-syntax">)</span>
@ -366,13 +367,13 @@ so on. Those absolute basics are made here.
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="13-rsfk.html#SP18" class="function-link"><span class="function-syntax">Kinds::RunTime::compile_heap_allocator</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="22-pav.html#SP8" class="function-link"><span class="function-syntax">Phrases::Constants::compile_closures</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="13-rsfk.html#SP16" class="function-link"><span class="function-syntax">Kinds::RunTime::compile_structures</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::check_response_usages</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::check_response_usages</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="22-tp2.html#SP6" class="function-link"><span class="function-syntax">Phrases::Timed::check_for_unused</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Showme::compile_SHOWME_details</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="22-tp2.html#SP4" class="function-link"><span class="function-syntax">Phrases::Timed::TimedEventsTable</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="22-tp2.html#SP4" class="function-link"><span class="function-syntax">Phrases::Timed::TimedEventTimesTable</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Naming::compile_cap_short_name</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="26-uo.html#SP24" class="function-link"><span class="function-syntax">UseOptions::configure_template</span></a><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="26-uoart.html#SP2" class="function-link"><span class="function-syntax">RTUseOptions::configure_template</span></a><span class="plain-syntax">)</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-htc.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_9"></a><b>&#167;2.9. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Generate index and bibliographic file</span><span class="named-paragraph-number">2.9</span></span><span class="comment-syntax"> =</span>
@ -385,7 +386,7 @@ so on. Those absolute basics are made here.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="1-htc.html#SP2">&#167;2</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="1-wtc.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-cm.html">cm</a></li><li class="progresssection"><a href="1-mr.html">mr</a></li><li class="progresssection"><a href="1-wtc.html">wtc</a></li><li class="progresscurrent">htc</li><li class="progresssection"><a href="1-cp.html">cp</a></li><li class="progresssection"><a href="1-pp.html">pp</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="1-cp.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="1-wtc.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-cm.html">cm</a></li><li class="progresssection"><a href="1-mr.html">mr</a></li><li class="progresssection"><a href="1-wtc.html">wtc</a></li><li class="progresscurrent">htc</li><li class="progresssection"><a href="1-cp.html">cp</a></li><li class="progresssection"><a href="1-pp.html">pp</a></li><li class="progresssection"><a href="1-cs.html">cs</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="1-cp.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -382,7 +382,7 @@ rather than <span class="extract"><span class="extract-syntax">core</span></span
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="1-cm.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-cm.html">cm</a></li><li class="progresscurrent">mr</li><li class="progresssection"><a href="1-wtc.html">wtc</a></li><li class="progresssection"><a href="1-htc.html">htc</a></li><li class="progresssection"><a href="1-cp.html">cp</a></li><li class="progresssection"><a href="1-pp.html">pp</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="1-wtc.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="1-cm.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-cm.html">cm</a></li><li class="progresscurrent">mr</li><li class="progresssection"><a href="1-wtc.html">wtc</a></li><li class="progresssection"><a href="1-htc.html">htc</a></li><li class="progresssection"><a href="1-cp.html">cp</a></li><li class="progresssection"><a href="1-pp.html">pp</a></li><li class="progresssection"><a href="1-cs.html">cs</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="1-wtc.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -133,7 +133,7 @@ a final status indicator.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="1-cp.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-cm.html">cm</a></li><li class="progresssection"><a href="1-mr.html">mr</a></li><li class="progresssection"><a href="1-wtc.html">wtc</a></li><li class="progresssection"><a href="1-htc.html">htc</a></li><li class="progresssection"><a href="1-cp.html">cp</a></li><li class="progresscurrent">pp</li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="2-up.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="1-cp.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-cm.html">cm</a></li><li class="progresssection"><a href="1-mr.html">mr</a></li><li class="progresssection"><a href="1-wtc.html">wtc</a></li><li class="progresssection"><a href="1-htc.html">htc</a></li><li class="progresssection"><a href="1-cp.html">cp</a></li><li class="progresscurrent">pp</li><li class="progresssection"><a href="1-cs.html">cs</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="1-cs.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

File diff suppressed because one or more lines are too long

View file

@ -246,7 +246,7 @@ Still:
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">expocount</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">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">exposign</span><span class="plain-syntax">) { </span><span class="identifier-syntax">expo</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">expo</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">distinctive</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">e_notation_used</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">allow_engineering_notation</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">e_notation_used</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">allow_engineering_notation</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">e_notation_problem_issued</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">e_notation_problem_issued</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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>

View file

@ -113,7 +113,7 @@ a <span class="extract"><span class="extract-syntax">pcalc_prop</span></span> st
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax">; </span><span class="comment-syntax"> next atom in the list for this proposition</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">pcalc_prop</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure pcalc_prop is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/pr, 11/bas, 11/tc, 11/sc, 11/sm, 11/tcp, 12/ap, 12/ca, 12/dtd, 12/cad, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/pc, 26/ts, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure pcalc_prop is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/pr, 11/bas, 11/tc, 11/sc, 11/sm, 11/tcp, 12/ap, 12/ca, 12/dtd, 12/cad, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 26/ts, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. </b>The Universe is filled with atoms, but they come in different kinds, called
elements. For us, an "element" is the identifying number, stored in the
<span class="extract"><span class="extract-syntax">element</span></span> field, which tells Inform what kind of atom something is. The

View file

@ -960,8 +960,8 @@ has essentially no memory constraints compared with the Z-machine.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">max_heap</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">total_heap_allocation</span><span class="plain-syntax"> &lt; </span><a href="26-uo.html#SP14" class="function-link"><span class="function-syntax">UseOptions::get_dynamic_memory_allocation</span></a><span class="plain-syntax">())</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">total_heap_allocation</span><span class="plain-syntax"> = </span><a href="26-uo.html#SP14" class="function-link"><span class="function-syntax">UseOptions::get_dynamic_memory_allocation</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">total_heap_allocation</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">dynamic_memory_allocation</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">total_heap_allocation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">dynamic_memory_allocation</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">max_heap</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">total_heap_allocation</span><span class="plain-syntax">) </span><span class="identifier-syntax">max_heap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">max_heap</span><span class="plain-syntax">*2;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">TargetVMs::is_16_bit</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::vm</span></a><span class="plain-syntax">()))</span>
<span class="plain-syntax"> </span><a href="13-rsfk.html#SP24" class="function-link"><span class="function-syntax">Kinds::RunTime::compile_nnci</span></a><span class="plain-syntax">(</span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MEMORY_HEAP_SIZE_HL</span><span class="plain-syntax">), </span><span class="identifier-syntax">max_heap</span><span class="plain-syntax">);</span>

View file

@ -2213,7 +2213,7 @@ loops, or other control structures; for instance,
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">no_deprecated_features</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_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">no_deprecated_features</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG_DASH</span><span class="plain-syntax">(</span><span class="string-syntax">"(4I.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">ph</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">type_data</span><span class="plain-syntax">.</span><span class="element-syntax">now_deprecated</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="constant-syntax">THIS_IS_AN_INTERESTING_PROBLEM</span><span class="plain-syntax"> {</span>

View file

@ -110,7 +110,7 @@ pointers:
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_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">Rvalues::from_rulebook</span></span>:<br/>The Creator - <a href="5-tc.html#SP5_4_2_4">&#167;5.4.2.4</a><br/>Rulebooks - <a href="21-rl2.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax">, </span><a href="21-rl2.html#SP10" class="function-link"><span class="function-syntax">Rulebooks::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">)) }</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_table</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">Rvalues::from_table</span></span>:<br/>Tables - <a href="19-tb.html#SP18_7">&#167;18.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="reserved-syntax">table</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_table</span><span class="plain-syntax">) }</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_table_column</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">Rvalues::from_table_column</span></span>:<br/>Table Columns - <a href="19-tc.html#SP4">&#167;4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">table_column</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="reserved-syntax">table_column</span><span class="plain-syntax">, </span><a href="19-tc.html#SP6" class="function-link"><span class="function-syntax">Tables::Columns::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">)) }</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_use_option</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">Rvalues::from_use_option</span></span>:<br/>Use Options - <a href="26-uo.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="reserved-syntax">use_option</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_use_option</span><span class="plain-syntax">) }</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_use_option</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">Rvalues::from_use_option</span></span>:<br/>New Use Option Requests - <a href="4-nuor.html#SP3_2">&#167;3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="reserved-syntax">use_option</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_use_option</span><span class="plain-syntax">) }</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::from_verb_form</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">Rvalues::from_verb_form</span></span>:<br/>Constants and Descriptions - <a href="10-cad.html#SP1_1">&#167;1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">verb_form</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) { </span><span class="identifier-syntax">CONV_FROM</span><span class="plain-syntax">(</span><span class="identifier-syntax">verb_form</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_verb</span><span class="plain-syntax">) }</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b>Contrariwise, here's how to get back again:
@ -139,7 +139,7 @@ pointers:
<span class="reserved-syntax">rulebook</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_rulebook</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">Rvalues::to_rulebook</span></span>:<br/><a href="14-rv.html#SP20">&#167;20</a>, <a href="14-rv.html#SP24_3">&#167;24.3</a><br/>Make Assertions - <a href="5-ma.html#SP5_3_18">&#167;5.3.18</a>, <a href="5-ma.html#SP5_3_25_2">&#167;5.3.25.2</a><br/>Rule Placement Sentences - <a href="21-rps.html#SP2">&#167;2</a></span></button><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">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">rulebook</span><span class="plain-syntax">) }</span>
<span class="reserved-syntax">table</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_table</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">Rvalues::to_table</span></span>:<br/><a href="14-rv.html#SP24_3">&#167;24.3</a><br/>Tables of Definitions - <a href="19-tod.html#SP6">&#167;6</a></span></button><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">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">table</span><span class="plain-syntax">) }</span>
<span class="reserved-syntax">table_column</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_table_column</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">Rvalues::to_table_column</span></span>:<br/><a href="14-rv.html#SP20">&#167;20</a>, <a href="14-rv.html#SP23_5">&#167;23.5</a>, <a href="14-rv.html#SP24_3">&#167;24.3</a><br/>Simplifications - <a href="11-sm.html#SP4">&#167;4</a><br/>Lvalues - <a href="14-lv.html#SP12_3">&#167;12.3</a><br/>Table Columns - <a href="19-tc.html#SP13">&#167;13</a></span></button><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">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">table_column</span><span class="plain-syntax">) }</span>
<span class="reserved-syntax">use_option</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_use_option</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">Rvalues::to_use_option</span></span>:<br/><a href="14-rv.html#SP24_3">&#167;24.3</a><br/>Use Options - <a href="26-uo.html#SP7">&#167;7</a></span></button><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">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">use_option</span><span class="plain-syntax">) }</span>
<span class="reserved-syntax">use_option</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_use_option</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">Rvalues::to_use_option</span></span>:<br/><a href="14-rv.html#SP24_3">&#167;24.3</a><br/>New Use Option Requests - <a href="4-nuor.html#SP4">&#167;4</a></span></button><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">CONV_TO</span><span class="plain-syntax">(</span><span class="reserved-syntax">use_option</span><span class="plain-syntax">) }</span>
<span class="identifier-syntax">verb_form</span><span class="plain-syntax"> *</span><span class="function-syntax">Rvalues::to_verb_form</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">Rvalues::to_verb_form</span></span>:<br/><a href="14-rv.html#SP24_3">&#167;24.3</a></span></button><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">CONV_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">verb_form</span><span class="plain-syntax">) }</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. </b>With enumerated kinds, the possible values are in general stored as instance
@ -422,7 +422,7 @@ in the proposition.
<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">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::is_CONSTANT_of_kind</span><button class="popup" onclick="togglePopup('usagePopup51')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup51">Usage of <span class="code-font"><span class="function-syntax">Rvalues::is_CONSTANT_of_kind</span></span>:<br/><a href="14-rv.html#SP9">&#167;9</a>, <a href="14-rv.html#SP10">&#167;10</a>, <a href="14-rv.html#SP11">&#167;11</a>, <a href="14-rv.html#SP12">&#167;12</a><br/>Refine Parse Tree - <a href="5-rpt.html#SP15">&#167;15</a><br/>The Creator - <a href="5-tc.html#SP2">&#167;2</a><br/>Make Assertions - <a href="5-ma.html#SP5_3_26_1_1">&#167;5.3.26.1.1</a>, <a href="5-ma.html#SP5_3_41_6">&#167;5.3.41.6</a><br/>Literal Patterns - <a href="6-lp.html#SP34_4">&#167;34.4</a><br/>Architecture of the S-Parser - <a href="10-aots.html#SP10">&#167;10</a><br/>Constants and Descriptions - <a href="10-cad.html#SP3">&#167;3</a>, <a href="10-cad.html#SP5">&#167;5</a><br/>Type Expressions and Values - <a href="10-teav.html#SP12_2">&#167;12.2</a><br/>Conditions and Phrases - <a href="10-cap.html#SP12_1">&#167;12.1</a><br/>I6 Schemas - <a href="12-is.html#SP7_1">&#167;7.1</a><br/>Dash - <a href="14-ds2.html#SP17">&#167;17</a>, <a href="14-ds2.html#SP19_5_2">&#167;19.5.2</a><br/>Responses - <a href="17-rs.html#SP11">&#167;11</a><br/>Tables of Definitions - <a href="19-tod.html#SP2_1">&#167;2.1</a><br/>Focus and Outcome - <a href="21-fao.html#SP9">&#167;9</a>, <a href="21-fao.html#SP10">&#167;10</a><br/>Compile Invocations - <a href="25-ci.html#SP4_2">&#167;4.2</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_1_1_4_6">&#167;3.1.1.4.6</a>, <a href="25-cii.html#SP3_1_1_4_9">&#167;3.1.1.4.9</a>, <a href="25-cii.html#SP3_1_1_4_10">&#167;3.1.1.4.10</a>, <a href="25-cii.html#SP3_5_8_1">&#167;3.5.8.1</a>, <a href="25-cii.html#SP3_7_3">&#167;3.7.3</a><br/>Use Options - <a href="26-uo.html#SP7">&#167;7</a></span></button><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">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rvalues::is_CONSTANT_of_kind</span><button class="popup" onclick="togglePopup('usagePopup51')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup51">Usage of <span class="code-font"><span class="function-syntax">Rvalues::is_CONSTANT_of_kind</span></span>:<br/><a href="14-rv.html#SP9">&#167;9</a>, <a href="14-rv.html#SP10">&#167;10</a>, <a href="14-rv.html#SP11">&#167;11</a>, <a href="14-rv.html#SP12">&#167;12</a><br/>New Use Option Requests - <a href="4-nuor.html#SP4">&#167;4</a><br/>Refine Parse Tree - <a href="5-rpt.html#SP15">&#167;15</a><br/>The Creator - <a href="5-tc.html#SP2">&#167;2</a><br/>Make Assertions - <a href="5-ma.html#SP5_3_26_1_1">&#167;5.3.26.1.1</a>, <a href="5-ma.html#SP5_3_41_6">&#167;5.3.41.6</a><br/>Literal Patterns - <a href="6-lp.html#SP34_4">&#167;34.4</a><br/>Architecture of the S-Parser - <a href="10-aots.html#SP10">&#167;10</a><br/>Constants and Descriptions - <a href="10-cad.html#SP3">&#167;3</a>, <a href="10-cad.html#SP5">&#167;5</a><br/>Type Expressions and Values - <a href="10-teav.html#SP12_2">&#167;12.2</a><br/>Conditions and Phrases - <a href="10-cap.html#SP12_1">&#167;12.1</a><br/>I6 Schemas - <a href="12-is.html#SP7_1">&#167;7.1</a><br/>Dash - <a href="14-ds2.html#SP17">&#167;17</a>, <a href="14-ds2.html#SP19_5_2">&#167;19.5.2</a><br/>Responses - <a href="17-rs.html#SP11">&#167;11</a><br/>Tables of Definitions - <a href="19-tod.html#SP2_1">&#167;2.1</a><br/>Focus and Outcome - <a href="21-fao.html#SP9">&#167;9</a>, <a href="21-fao.html#SP10">&#167;10</a><br/>Compile Invocations - <a href="25-ci.html#SP4_2">&#167;4.2</a><br/>Compile Invocations Inline - <a href="25-cii.html#SP3_1_1_4_6">&#167;3.1.1.4.6</a>, <a href="25-cii.html#SP3_1_1_4_9">&#167;3.1.1.4.9</a>, <a href="25-cii.html#SP3_1_1_4_10">&#167;3.1.1.4.10</a>, <a href="25-cii.html#SP3_5_8_1">&#167;3.5.8.1</a>, <a href="25-cii.html#SP3_7_3">&#167;3.7.3</a></span></button><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">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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="constant-syntax">CONSTANT_NT</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Compare::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
@ -902,7 +902,7 @@ kinds of value:
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="17-rs.html#SP4" class="function-link"><span class="function-syntax">Strings::response_constant_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</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">iname</span><span class="plain-syntax">) </span><a href="27-em.html#SP4" class="function-link"><span class="function-syntax">Emit::holster</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">Holsters::holster_pair</span><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::now_rule_needs_response</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</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="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::now_rule_needs_response</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</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="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>

View file

@ -139,7 +139,7 @@ a value with the owner; it isn't that either/or properties are unloved.)
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">property</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure property is accessed in 2/sq, 2/si, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/rv, 14/lv, 14/ds2, 15/ep, 15/vp, 15/cp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/pu, 22/dptd, 22/po, 22/pav, 22/tp, 25/cii, 26/uo, 26/ts and here.</li></ul>
<ul class="endnotetexts"><li>The structure property is accessed in 2/sq, 2/si, 4/nuor, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/rv, 14/lv, 14/ds2, 15/ep, 15/vp, 15/cp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/pu, 22/dptd, 22/po, 22/pav, 22/tp, 25/cii, 26/ts, 26/uoart and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. </b>The only four properties which have special significance to core Inform
(though plugins are interested in many others):
</p>

View file

@ -160,7 +160,7 @@ organised as linked lists; hence the <span class="extract"><span class="extract-
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">inference</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure inference is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/pc, 26/ts, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure inference is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 26/ts, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP7"></a><b>&#167;7. Creation. </b>The following routine coins a newly minted inference which is not yet attached
to any subject: but it will not stay unattached for long. Note that if nothing
has been said about likelihood, the sentence is assumed to be factually certain.

View file

@ -106,7 +106,7 @@ its name in the output code:
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Strings::response_constant_iname</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">Strings::response_constant_iname</span></span>:<br/><a href="17-rs.html#SP6_1">&#167;6.1</a>, <a href="17-rs.html#SP7_1">&#167;7.1</a>, <a href="17-rs.html#SP7_2">&#167;7.2</a><br/>RValues - <a href="14-rv.html#SP24_3">&#167;24.3</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">marker</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">response_message</span><span class="plain-syntax"> *</span><span class="identifier-syntax">RM</span><span class="plain-syntax"> = </span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::rule_defines_response</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">marker</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">response_message</span><span class="plain-syntax"> *</span><span class="identifier-syntax">RM</span><span class="plain-syntax"> = </span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::rule_defines_response</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">marker</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="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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">RM</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">constant_iname</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 response value"</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">RM</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">constant_iname</span><span class="plain-syntax">;</span>
@ -143,11 +143,11 @@ but also (in most cases) a <span class="extract"><span class="extract-syntax">TX
<span class="plain-syntax"> </span><span class="identifier-syntax">resp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">original_stack_frame</span><span class="plain-syntax"> = </span><a href="24-sf.html#SP7" class="function-link"><span class="function-syntax">Frames::boxed_frame</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">resp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">responding_rule</span><span class="plain-syntax"> = </span><span class="identifier-syntax">owner</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">resp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">response_marker</span><span class="plain-syntax"> = </span><span class="identifier-syntax">marker</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">resp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">original_text</span><span class="plain-syntax"> = </span><a href="17-ts.html#SP5" class="function-link"><span class="function-syntax">Strings::TextSubstitutions::new_text_substitution</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">phsf</span><span class="plain-syntax">, </span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">marker</span><span class="plain-syntax">, </span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">owner</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">resp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">original_text</span><span class="plain-syntax"> = </span><a href="17-ts.html#SP5" class="function-link"><span class="function-syntax">Strings::TextSubstitutions::new_text_substitution</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">phsf</span><span class="plain-syntax">, </span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">marker</span><span class="plain-syntax">, </span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">owner</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">resp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">launcher_compiled</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">resp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">via_I6</span><span class="plain-syntax"> = </span><span class="identifier-syntax">via_I6</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">resp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">via_I6_routine_compiled</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">resp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">resp_package</span><span class="plain-syntax"> = </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::package_within</span></a><span class="plain-syntax">(</span><span class="constant-syntax">RESPONSES_HAP</span><span class="plain-syntax">, </span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">resp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">responding_rule</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">resp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">resp_package</span><span class="plain-syntax"> = </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::package_within</span></a><span class="plain-syntax">(</span><span class="constant-syntax">RESPONSES_HAP</span><span class="plain-syntax">, </span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">resp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">responding_rule</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">resp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">resp_iname</span><span class="plain-syntax"> = </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">AS_BLOCK_CONSTANT_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">resp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">resp_package</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">resp</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">constant_iname</span><span class="plain-syntax"> = </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">AS_CONSTANT_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">resp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">resp_package</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">VH</span><span class="plain-syntax">) {</span>
@ -408,14 +408,14 @@ text for the response than the one we first created.
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</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">marker</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">marker</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="identifier-syntax">marker</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">26</span><span class="plain-syntax">; </span><span class="identifier-syntax">marker</span><span class="plain-syntax">++) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">response_message</span><span class="plain-syntax"> *</span><span class="identifier-syntax">resp</span><span class="plain-syntax"> = </span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::rule_defines_response</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">marker</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">response_message</span><span class="plain-syntax"> *</span><span class="identifier-syntax">resp</span><span class="plain-syntax"> = </span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::rule_defines_response</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">marker</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">resp</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">text_substitution</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ts</span><span class="plain-syntax"> = </span><span class="identifier-syntax">resp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">original_text</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><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::get_response_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">marker</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><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::get_response_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">marker</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) { </span><span class="comment-syntax"> i.e., if the rule gives us a better text</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::get_response_sentence</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">marker</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::get_response_sentence</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">marker</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ts</span><span class="plain-syntax"> = </span><a href="17-ts.html#SP5" class="function-link"><span class="function-syntax">Strings::TextSubstitutions::new_text_substitution</span></a><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">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">marker</span><span class="plain-syntax">, </span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">marker</span><span class="plain-syntax">, </span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">resp</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">original_text</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">dont_need_after_all</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ts_iname</span><span class="plain-syntax"> = </span><a href="17-ts.html#SP7" class="function-link"><span class="function-syntax">Strings::TextSubstitutions::text_substitution_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ts</span><span class="plain-syntax">);</span>
@ -503,7 +503,7 @@ divided up by the extensions containing the rules which produce them.
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tally</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">contiguous_match</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">no_cms</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">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">marker</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="identifier-syntax">marker</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">26</span><span class="plain-syntax">; </span><span class="identifier-syntax">marker</span><span class="plain-syntax">++)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::rule_defines_response</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">marker</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::rule_defines_response</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">marker</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">tally</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Extensions::corresponding_to</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Lexer::file_of_origin</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax">)));</span>
@ -554,7 +554,7 @@ a given response even at compile time. But the rules code looks after that:
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Strings::assert_response_value</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">Strings::assert_response_value</span></span>:<br/>Make Assertions - <a href="5-ma.html#SP5_3_41_6">&#167;5.3.41.6</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">marker</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="plain-syntax"> </span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::now_rule_needs_response</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">marker</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::now_rule_needs_response</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">marker</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP10"></a><b>&#167;10. </b>When we index a response, we also provide a paste button for the source
@ -562,7 +562,7 @@ text to assert a change:
</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">Strings::index_response</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">Strings::index_response</span></span>:<br/>Rules - <a href="21-rl.html#SP25_3">&#167;25.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">marker</span><span class="plain-syntax">, </span><span class="reserved-syntax">response_message</span><span class="plain-syntax"> *</span><span class="identifier-syntax">resp</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Strings::index_response</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">Strings::index_response</span></span>:<br/>Rules - <a href="21-rl.html#SP24_3">&#167;24.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">marker</span><span class="plain-syntax">, </span><span class="reserved-syntax">response_message</span><span class="plain-syntax"> *</span><span class="identifier-syntax">resp</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">"&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"style=\"color: #ffffff; "</span>
@ -656,13 +656,13 @@ text needs to be printed in a particular way.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;r&gt;&gt;</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">rule_being_compiled</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> (</span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::rule_is_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rule_being_compiled</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> (</span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::rule_is_named</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rule_being_compiled</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">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ResponseContextWrong</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"lettered responses can only be used in named rules"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"not in any of the other contexts in which quoted text can appear."</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::rule_defines_response</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rule_being_compiled</span><span class="plain-syntax">, </span><span class="identifier-syntax">code</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::rule_defines_response</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rule_being_compiled</span><span class="plain-syntax">, </span><span class="identifier-syntax">code</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ResponseDuplicated</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"this duplicates a response letter"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"which is not allowed: if a bracketed letter like (A) is used to mark "</span>
@ -675,7 +675,7 @@ text needs to be printed in a particular way.
<span class="plain-syntax"> </span><span class="reserved-syntax">response_message</span><span class="plain-syntax"> *</span><span class="identifier-syntax">resp</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="17-rs.html#SP5" class="function-link"><span class="function-syntax">Strings::response_cue</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">rule_being_compiled</span><span class="plain-syntax">, </span><span class="identifier-syntax">code</span><span class="plain-syntax">, </span><span class="identifier-syntax">SW</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="24-sf.html#SP7" class="function-link"><span class="function-syntax">Frames::boxed_frame</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phsf</span><span class="plain-syntax">), </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::now_rule_defines_response</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rule_being_compiled</span><span class="plain-syntax">, </span><span class="identifier-syntax">code</span><span class="plain-syntax">, </span><span class="identifier-syntax">resp</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::now_rule_defines_response</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rule_being_compiled</span><span class="plain-syntax">, </span><span class="identifier-syntax">code</span><span class="plain-syntax">, </span><span class="identifier-syntax">resp</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">downs</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">()); </span><span class="identifier-syntax">downs</span><span class="plain-syntax">--; }</span>
<span class="plain-syntax"> }</span>
</pre>

View file

@ -359,7 +359,7 @@ compiling it.
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><a href="26-rt.html#SP1" class="function-link"><span class="function-syntax">Routines::begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ts</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ts_routine_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_stack_frame</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ts</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">parked_stack_frame</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">ts</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">responding_to_rule</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">ts</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">responding_to_marker</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">response_message</span><span class="plain-syntax"> *</span><span class="identifier-syntax">resp</span><span class="plain-syntax"> = </span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::rule_defines_response</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">response_message</span><span class="plain-syntax"> *</span><span class="identifier-syntax">resp</span><span class="plain-syntax"> = </span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::rule_defines_response</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ts</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">responding_to_rule</span><span class="plain-syntax">, </span><span class="identifier-syntax">ts</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">responding_to_marker</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">resp</span><span class="plain-syntax">) </span><span class="identifier-syntax">phsf</span><span class="plain-syntax"> = </span><a href="17-rs.html#SP8" class="function-link"><span class="function-syntax">Strings::frame_for_response</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">resp</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>

View file

@ -116,7 +116,7 @@ column ID numbers used at run-time.
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">table_contribution</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">table_contribution</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure table_contribution is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/pc, 26/ts, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure table_contribution is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 26/ts, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b>These are convenient during parsing.
</p>

View file

@ -98,7 +98,7 @@ predicate associated with each possible table column C.
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">table_column</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure table_column is accessed in 2/sq, 2/si, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/uo, 26/ts and here.</li></ul>
<ul class="endnotetexts"><li>The structure table_column is accessed in 2/sq, 2/si, 4/nuor, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/ts, 26/uoart and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. </b>When a column appears in a particular table, this is recorded with the
following structure. Note that it's possible for a kind to be named explicitly,
as when a column has a heading like:

View file

@ -372,7 +372,7 @@ a message which diagnoses the problem rather better.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="1-pp.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">up</li><li class="progresssection"><a href="2-sq.html">sq</a></li><li class="progresssection"><a href="2-si.html">si</a></li><li class="progresssection"><a href="2-pwst.html">pwst</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="2-sq.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="1-cs.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">up</li><li class="progresssection"><a href="2-sq.html">sq</a></li><li class="progresssection"><a href="2-si.html">si</a></li><li class="progresssection"><a href="2-pwst.html">pwst</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="2-sq.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -131,7 +131,7 @@ instance has its own <span class="extract"><span class="extract-syntax">equation
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">equation_symbol</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure equation_symbol is accessed in 2/sq, 2/si, 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 5/rpt, 5/tc, 5/ma, 5/pk, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 6/nv, 7/rlt, 7/nv, 8/rs, 9/ef, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/pr, 15/ep, 15/vp, 15/ps, 15/cp, 15/spr, 16/is, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/rsft, 19/tod, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/pu, 22/dptd, 22/po, 22/pav, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/pc, 26/ts, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure equation_symbol is accessed in 2/sq, 2/si, 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 5/rpt, 5/tc, 5/ma, 5/pk, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 6/nv, 7/rlt, 7/nv, 8/rs, 9/ef, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/pr, 15/ep, 15/vp, 15/ps, 15/cp, 15/spr, 16/is, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/rsft, 19/tod, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/pu, 22/dptd, 22/po, 22/pav, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 26/ts, 26/uoart, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b>In addition, there are some standing symbols used by all equations: the
constant "pi", for example. They're stored in this linked list:
</p>

View file

@ -100,7 +100,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">activity_crossref</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">activity_crossref</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure activity is accessed in 2/sq, 2/si, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/uo, 26/ts and here.</li><li>The structure activity_list is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/pc, 26/ts, 27/cm and here.</li><li>The structure activity_crossref is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/pc, 26/ts, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure activity is accessed in 2/sq, 2/si, 4/nuor, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/ts, 26/uoart and here.</li><li>The structure activity_list is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 26/ts, 27/cm and here.</li><li>The structure activity_crossref is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 26/ts, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b></p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">STARTING_VIRTUAL_MACHINE_ACT</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span>

View file

@ -150,7 +150,7 @@ its outcomes.
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">rulebook_outcome</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure named_rulebook_outcome is accessed in 2/sq, 2/si, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/rv, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/uo, 26/ts and here.</li><li>The structure rulebook_outcome is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/pc, 26/ts, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure named_rulebook_outcome is accessed in 2/sq, 2/si, 4/nuor, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/rv, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/ts, 26/uoart and here.</li><li>The structure rulebook_outcome is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 26/ts, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP5"></a><b>&#167;5. </b></p>
<pre class="displayed-code all-displayed-code code-font">
@ -601,13 +601,13 @@ can be used in a void context as a sort of return-from-rule phrase.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">foc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rules_always_test_actor</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="plain-syntax"> </span><span class="string-syntax">"Setting always test actor for destination rulebook\n"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::set_always_test_actor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::set_always_test_actor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</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">foc</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rulebook_focus</span><span class="plain-syntax"> == </span><span class="constant-syntax">PARAMETER_FOCUS</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="plain-syntax"> </span><span class="string-syntax">"Setting never test actor for destination rulebook\n"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::set_never_test_actor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::set_never_test_actor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>

View file

@ -231,7 +231,7 @@ generated from the PHUD elsewhere.
<span class="plain-syntax"> </span><span class="reserved-syntax">goto</span><span class="plain-syntax"> </span><span class="identifier-syntax">NotSingleAction</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PL::Actions::Lists::extract_actions_only</span><span class="plain-syntax">(</span><span class="identifier-syntax">PW</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">an</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PL::Actions::Lists::get_single_action</span><span class="plain-syntax">(</span><span class="identifier-syntax">anl</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::set_marked_for_anyone</span></a><span class="plain-syntax">(</span><a href="21-rb.html#SP6" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::set_marked_for_anyone</span></a><span class="plain-syntax">(</span><a href="21-rb.html#SP6" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">br</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PL::Actions::Lists::get_explicit_anyone_flag</span><span class="plain-syntax">(</span><span class="identifier-syntax">anl</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">anl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
@ -683,7 +683,7 @@ handled in the "Rules" section.
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">count</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> </span><a href="21-rb.html#SP19" class="function-link"><span class="function-syntax">Rules::Bookings::br_start_index_line</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">prev</span><span class="plain-syntax">, </span><span class="identifier-syntax">billing</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">resp_count</span><span class="plain-syntax"> += </span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">rc</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> *</span><span class="identifier-syntax">resp_count</span><span class="plain-syntax"> += </span><a href="21-rl.html#SP24" class="function-link"><span class="function-syntax">Rules::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="identifier-syntax">rc</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">count</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -80,7 +80,7 @@ MathJax = {
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#21">Chapter 21: Rules and Rulebooks</a></li><li><b>Rules</b></li></ul></div>
<p class="purpose">Rule structures abstract the Inform 7 concept of a rule, which may be defined either by an Inform 6 routine or by higher-level source text from a phrase structure.</p>
<ul class="toc"><li><a href="21-rl.html#SP1">&#167;1. Definitions</a></li><li><a href="21-rl.html#SP5">&#167;5. The rule structure</a></li><li><a href="21-rl.html#SP8">&#167;8. The kind of a rule</a></li><li><a href="21-rl.html#SP9">&#167;9. Definitions</a></li><li><a href="21-rl.html#SP10">&#167;10. Applicability constraints</a></li><li><a href="21-rl.html#SP12">&#167;12. Logging</a></li><li><a href="21-rl.html#SP13">&#167;13. Specificity of rules</a></li><li><a href="21-rl.html#SP15">&#167;15. As constant values</a></li><li><a href="21-rl.html#SP16">&#167;16. Variables accessible from here</a></li><li><a href="21-rl.html#SP17">&#167;17. Automatic placement into rulebooks</a></li><li><a href="21-rl.html#SP18">&#167;18. Check safety of placement constraints</a></li><li><a href="21-rl.html#SP19">&#167;19. Run-time representation</a></li><li><a href="21-rl.html#SP20">&#167;20. Printing rule names at run time</a></li><li><a href="21-rl.html#SP22">&#167;22. Compilation</a></li><li><a href="21-rl.html#SP23">&#167;23. Indexing</a></li><li><a href="21-rl.html#SP26">&#167;26. Actor testing</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="21-rl.html#SP1">&#167;1. Definitions</a></li><li><a href="21-rl.html#SP5">&#167;5. The rule structure</a></li><li><a href="21-rl.html#SP8">&#167;8. The kind of a rule</a></li><li><a href="21-rl.html#SP9">&#167;9. Definitions</a></li><li><a href="21-rl.html#SP10">&#167;10. Applicability constraints</a></li><li><a href="21-rl.html#SP12">&#167;12. Logging</a></li><li><a href="21-rl.html#SP13">&#167;13. Specificity of rules</a></li><li><a href="21-rl.html#SP15">&#167;15. As constant values</a></li><li><a href="21-rl.html#SP16">&#167;16. Variables accessible from here</a></li><li><a href="21-rl.html#SP17">&#167;17. Automatic placement into rulebooks</a></li><li><a href="21-rl.html#SP18">&#167;18. Check safety of placement constraints</a></li><li><a href="21-rl.html#SP19">&#167;19. Run-time representation</a></li><li><a href="21-rl.html#SP20">&#167;20. Printing rule names at run time</a></li><li><a href="21-rl.html#SP22">&#167;22. Compilation</a></li><li><a href="21-rl.html#SP23">&#167;23. Indexing</a></li><li><a href="21-rl.html#SP25">&#167;25. Actor testing</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1"></a><b>&#167;1. Definitions. </b></p>
@ -143,7 +143,7 @@ see below.
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">rule</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure rule is accessed in 2/sq, 2/si, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/prcd, 22/dptd, 22/po, 22/pav, 25/cii, 26/uo, 26/ts and here.</li></ul>
<ul class="endnotetexts"><li>The structure rule is accessed in 2/sq, 2/si, 4/nuor, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/prcd, 22/dptd, 22/po, 22/pav, 25/cii, 26/ts, 26/uoart and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. </b></p>
<pre class="displayed-code all-displayed-code code-font">
@ -702,7 +702,7 @@ do.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">memory_economy_in_force</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_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">memory_economy_in_force</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">PRINT_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_text</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"(rulebook "</span><span class="plain-syntax">);</span>
@ -731,7 +731,7 @@ do.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">memory_economy_in_force</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_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">memory_economy_in_force</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">PRINT_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_text</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"(rule at address "</span><span class="plain-syntax">);</span>
@ -833,7 +833,7 @@ what we compile, of course, is the phrase in question.
<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">Rules::unimport</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">Rules::unimport</span></span>:<br/><a href="21-rl.html#SP26">&#167;26</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::unimport</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">Rules::unimport</span></span>:<br/><a href="21-rl.html#SP25">&#167;25</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">defn_compiled</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) { </span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">do_not_import</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax">; }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">defn_compiled</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">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">do_not_import</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
@ -876,37 +876,26 @@ as the definition of the rule in future.
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">italicised_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">W</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP24"></a><b>&#167;24. </b>A use option controls whether little rule numbers are shown in the index.
I wonder how useful this really is, but it was much requested at one time.
<p class="commentary firstcommentary"><a id="SP24"></a><b>&#167;24. </b>And off we go:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">use_numbered_rules</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::set_numbered_rules</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">Rules::set_numbered_rules</span></span>:<br/>Use Options - <a href="26-uo.html#SP13_1">&#167;13.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">use_numbered_rules</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP25"></a><b>&#167;25. </b>And off we go:
</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">Rules::index</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">Rules::index</span></span>:<br/>Rule Bookings - <a href="21-rb.html#SP18">&#167;18</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule_context</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::index</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">Rules::index</span></span>:<br/>Rule Bookings - <a href="21-rb.html#SP18">&#167;18</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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">rulebook</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule_context</span><span class="plain-syntax"> </span><span class="identifier-syntax">rc</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">no_responses_indexed</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">italicised_text</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="21-rl.html#SP25_1" class="named-paragraph-link"><span class="named-paragraph">Index the italicised text to do with the rule</span><span class="named-paragraph-number">25.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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="21-rl.html#SP25_2" class="named-paragraph-link"><span class="named-paragraph">Index the rule name along with Javascript buttons</span><span class="named-paragraph-number">25.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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">italicised_text</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="21-rl.html#SP24_1" class="named-paragraph-link"><span class="named-paragraph">Index the italicised text to do with the rule</span><span class="named-paragraph-number">24.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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="21-rl.html#SP24_2" class="named-paragraph-link"><span class="named-paragraph">Index the rule name along with Javascript buttons</span><span class="named-paragraph-number">24.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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">italicised_text</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-rl.html#SP25_4" class="named-paragraph-link"><span class="named-paragraph">Index some text extracted from the first line of the otherwise anonymous rule</span><span class="named-paragraph-number">25.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-rl.html#SP25_5" class="named-paragraph-link"><span class="named-paragraph">Index a link to the first line of the rule's definition</span><span class="named-paragraph-number">25.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">use_numbered_rules</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="21-rl.html#SP25_6" class="named-paragraph-link"><span class="named-paragraph">Index the small type rule numbering</span><span class="named-paragraph-number">25.6</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-rl.html#SP25_7" class="named-paragraph-link"><span class="named-paragraph">Index any applicability conditions</span><span class="named-paragraph-number">25.7</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-rl.html#SP24_4" class="named-paragraph-link"><span class="named-paragraph">Index some text extracted from the first line of the otherwise anonymous rule</span><span class="named-paragraph-number">24.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-rl.html#SP24_5" class="named-paragraph-link"><span class="named-paragraph">Index a link to the first line of the rule's definition</span><span class="named-paragraph-number">24.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">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">number_rules_in_index</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="21-rl.html#SP24_6" class="named-paragraph-link"><span class="named-paragraph">Index the small type rule numbering</span><span class="named-paragraph-number">24.6</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-rl.html#SP24_7" class="named-paragraph-link"><span class="named-paragraph">Index any applicability conditions</span><span class="named-paragraph-number">24.7</span></a></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">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-rl.html#SP25_3" class="named-paragraph-link"><span class="named-paragraph">Index any response texts in the rule</span><span class="named-paragraph-number">25.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="21-rl.html#SP24_3" class="named-paragraph-link"><span class="named-paragraph">Index any response texts in the rule</span><span class="named-paragraph-number">24.3</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="identifier-syntax">no_responses_indexed</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP25_1"></a><b>&#167;25.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index the italicised text to do with the rule</span><span class="named-paragraph-number">25.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP24_1"></a><b>&#167;24.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index the italicised text to do with the rule</span><span class="named-paragraph-number">24.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -920,12 +909,12 @@ I wonder how useful this really is, but it was much requested at one time.
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;/i&gt;&amp;nbsp;&amp;nbsp;"</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-rl.html#SP25">&#167;25</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP25_2"></a><b>&#167;25.2. </b></p>
<ul class="endnotetexts"><li>This code is used in <a href="21-rl.html#SP24">&#167;24</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP24_2"></a><b>&#167;24.2. </b></p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">MAX_PASTEABLE_RULE_NAME_LENGTH</span><span class="plain-syntax"> </span><span class="constant-syntax">500</span>
</pre>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index the rule name along with Javascript buttons</span><span class="named-paragraph-number">25.2</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index the rule name along with Javascript buttons</span><span class="named-paragraph-number">24.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -956,8 +945,8 @@ I wonder how useful this really is, but it was much requested at one time.
<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">c</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-rl.html#SP25">&#167;25</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP25_3"></a><b>&#167;25.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index any response texts in the rule</span><span class="named-paragraph-number">25.3</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="21-rl.html#SP24">&#167;24</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP24_3"></a><b>&#167;24.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index any response texts in the rule</span><span class="named-paragraph-number">24.3</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -972,8 +961,8 @@ I wonder how useful this really is, but it was much requested at one time.
<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"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">Index::extra_div_close_nested</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">no_responses_indexed</span><span class="plain-syntax"> = </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-rl.html#SP25">&#167;25</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP25_4"></a><b>&#167;25.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index some text extracted from the first line of the otherwise anonymous rule</span><span class="named-paragraph-number">25.4</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="21-rl.html#SP24">&#167;24</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP24_4"></a><b>&#167;24.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index some text extracted from the first line of the otherwise anonymous rule</span><span class="named-paragraph-number">24.4</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -984,8 +973,8 @@ I wonder how useful this really is, but it was much requested at one time.
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">")"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-rl.html#SP25">&#167;25</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP25_5"></a><b>&#167;25.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index a link to the first line of the rule's definition</span><span class="named-paragraph-number">25.5</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="21-rl.html#SP24">&#167;24</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP24_5"></a><b>&#167;24.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index a link to the first line of the rule's definition</span><span class="named-paragraph-number">24.5</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -995,8 +984,8 @@ I wonder how useful this really is, but it was much requested at one time.
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">)));</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-rl.html#SP25">&#167;25</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP25_6"></a><b>&#167;25.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index the small type rule numbering</span><span class="named-paragraph-number">25.6</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="21-rl.html#SP24">&#167;24</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP24_6"></a><b>&#167;24.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index the small type rule numbering</span><span class="named-paragraph-number">24.6</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -1006,8 +995,8 @@ I wonder how useful this really is, but it was much requested at one time.
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"primitive"</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">"span"</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-rl.html#SP25">&#167;25</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP25_7"></a><b>&#167;25.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index any applicability conditions</span><span class="named-paragraph-number">25.7</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="21-rl.html#SP24">&#167;24</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP24_7"></a><b>&#167;24.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index any applicability conditions</span><span class="named-paragraph-number">24.7</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -1018,43 +1007,43 @@ I wonder how useful this really is, but it was much requested at one time.
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&amp;nbsp;%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">acl</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">where_imposed</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="21-rl.html#SP25">&#167;25</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP26"></a><b>&#167;26. Actor testing. </b>With some rules (those which have I7 definitions and which are action based),
<ul class="endnotetexts"><li>This code is used in <a href="21-rl.html#SP24">&#167;24</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP25"></a><b>&#167;25. Actor testing. </b>With some rules (those which have I7 definitions and which are action based),
it's possible to change the way that applicability testing is done. Since this
can only affect rules we compile ourselves, we ignore all of these calls for
rules with I6 definitions, i.e., where <span class="extract"><span class="extract-syntax">defn_as_phrase</span></span> is <span class="extract"><span class="extract-syntax">NULL</span></span>.
</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">Rules::set_always_test_actor</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">Rules::set_always_test_actor</span></span>:<br/>Focus and Outcome - <a href="21-fao.html#SP12">&#167;12</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::set_always_test_actor</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">Rules::set_always_test_actor</span></span>:<br/>Focus and Outcome - <a href="21-fao.html#SP12">&#167;12</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">defn_as_phrase</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax"> = &amp;(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">runtime_context_data</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="22-prcd.html#SP4" class="function-link"><span class="function-syntax">Phrases::Context::set_always_test_actor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">);</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">Rules::set_never_test_actor</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">Rules::set_never_test_actor</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP19">&#167;19</a><br/>Focus and Outcome - <a href="21-fao.html#SP12">&#167;12</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::set_never_test_actor</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">Rules::set_never_test_actor</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP19">&#167;19</a><br/>Focus and Outcome - <a href="21-fao.html#SP12">&#167;12</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">defn_as_phrase</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax"> = &amp;(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">runtime_context_data</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="22-prcd.html#SP4" class="function-link"><span class="function-syntax">Phrases::Context::set_never_test_actor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">);</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">Rules::set_marked_for_anyone</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">Rules::set_marked_for_anyone</span></span>:<br/>Rule Bookings - <a href="21-rb.html#SP9">&#167;9</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::set_marked_for_anyone</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">Rules::set_marked_for_anyone</span></span>:<br/>Rule Bookings - <a href="21-rb.html#SP9">&#167;9</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</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">R</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">defn_as_phrase</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax"> = &amp;(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">runtime_context_data</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="22-prcd.html#SP4" class="function-link"><span class="function-syntax">Phrases::Context::set_marked_for_anyone</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">, </span><span class="identifier-syntax">to</span><span class="plain-syntax">);</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">Rules::suppress_action_testing</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">Rules::suppress_action_testing</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP19">&#167;19</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::suppress_action_testing</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">Rules::suppress_action_testing</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP19">&#167;19</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">defn_as_phrase</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax"> = &amp;(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">runtime_context_data</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="22-prcd.html#SP5" class="function-link"><span class="function-syntax">Phrases::Context::suppress_action_testing</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">);</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">Rules::copy_actor_test_flags</span><button class="popup" onclick="togglePopup('usagePopup32')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup32">Usage of <span class="code-font"><span class="function-syntax">Rules::copy_actor_test_flags</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP19">&#167;19</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R_to</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R_from</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::copy_actor_test_flags</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">Rules::copy_actor_test_flags</span></span>:<br/>Rulebooks - <a href="21-rl2.html#SP19">&#167;19</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R_to</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R_from</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">R_from</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">R_to</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">"improper catf"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd_from</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
@ -1072,18 +1061,18 @@ rules with I6 definitions, i.e., where <span class="extract"><span class="extrac
<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">Rules::rule_is_named</span><button class="popup" onclick="togglePopup('usagePopup33')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup33">Usage of <span class="code-font"><span class="function-syntax">Rules::rule_is_named</span></span>:<br/>Responses - <a href="17-rs.html#SP12_1_1">&#167;12.1.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">int</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::rule_is_named</span><button class="popup" onclick="togglePopup('usagePopup32')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup32">Usage of <span class="code-font"><span class="function-syntax">Rules::rule_is_named</span></span>:<br/>Responses - <a href="17-rs.html#SP12_1_1">&#167;12.1.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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</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><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">explicitly_named</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">response_message</span><span class="plain-syntax"> *</span><span class="function-syntax">Rules::rule_defines_response</span><button class="popup" onclick="togglePopup('usagePopup34')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup34">Usage of <span class="code-font"><span class="function-syntax">Rules::rule_defines_response</span></span>:<br/>Text Substitutions - <a href="17-ts.html#SP12">&#167;12</a><br/>Responses - <a href="17-rs.html#SP4">&#167;4</a>, <a href="17-rs.html#SP7_1">&#167;7.1</a>, <a href="17-rs.html#SP7_3_1">&#167;7.3.1</a>, <a href="17-rs.html#SP12_1_1">&#167;12.1.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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">response_message</span><span class="plain-syntax"> *</span><span class="function-syntax">Rules::rule_defines_response</span><button class="popup" onclick="togglePopup('usagePopup33')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup33">Usage of <span class="code-font"><span class="function-syntax">Rules::rule_defines_response</span></span>:<br/>Text Substitutions - <a href="17-ts.html#SP12">&#167;12</a><br/>Responses - <a href="17-rs.html#SP4">&#167;4</a>, <a href="17-rs.html#SP7_1">&#167;7.1</a>, <a href="17-rs.html#SP7_3_1">&#167;7.3.1</a>, <a href="17-rs.html#SP12_1_1">&#167;12.1.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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code</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">R</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">code</span><span class="plain-syntax"> &lt; </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">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">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">lettered_responses</span><span class="plain-syntax">[</span><span class="identifier-syntax">code</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">Rules::check_response_usages</span><button class="popup" onclick="togglePopup('usagePopup35')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup35">Usage of <span class="code-font"><span class="function-syntax">Rules::check_response_usages</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::check_response_usages</span><button class="popup" onclick="togglePopup('usagePopup34')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup34">Usage of <span class="code-font"><span class="function-syntax">Rules::check_response_usages</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</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">rule</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">rule</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">l</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">l</span><span class="plain-syntax">&lt;26; </span><span class="identifier-syntax">l</span><span class="plain-syntax">++) {</span>
@ -1116,24 +1105,24 @@ rules with I6 definitions, i.e., where <span class="extract"><span class="extrac
<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">Rules::now_rule_defines_response</span><button class="popup" onclick="togglePopup('usagePopup36')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup36">Usage of <span class="code-font"><span class="function-syntax">Rules::now_rule_defines_response</span></span>:<br/>Translation Requests - <a href="4-tr.html#SP7_4">&#167;7.4</a><br/>Responses - <a href="17-rs.html#SP12_1_1">&#167;12.1.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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code</span><span class="plain-syntax">, </span><span class="reserved-syntax">response_message</span><span class="plain-syntax"> *</span><span class="identifier-syntax">resp</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::now_rule_defines_response</span><button class="popup" onclick="togglePopup('usagePopup35')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup35">Usage of <span class="code-font"><span class="function-syntax">Rules::now_rule_defines_response</span></span>:<br/>Translation Requests - <a href="4-tr.html#SP7_4">&#167;7.4</a><br/>Responses - <a href="17-rs.html#SP12_1_1">&#167;12.1.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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code</span><span class="plain-syntax">, </span><span class="reserved-syntax">response_message</span><span class="plain-syntax"> *</span><span class="identifier-syntax">resp</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">R</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">"null rule defines response"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">lettered_responses</span><span class="plain-syntax">[</span><span class="identifier-syntax">code</span><span class="plain-syntax">] = </span><span class="identifier-syntax">resp</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">Rules::now_rule_needs_response</span><button class="popup" onclick="togglePopup('usagePopup37')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup37">Usage of <span class="code-font"><span class="function-syntax">Rules::now_rule_needs_response</span></span>:<br/>RValues - <a href="14-rv.html#SP24_3">&#167;24.3</a><br/>Responses - <a href="17-rs.html#SP9">&#167;9</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::now_rule_needs_response</span><button class="popup" onclick="togglePopup('usagePopup36')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup36">Usage of <span class="code-font"><span class="function-syntax">Rules::now_rule_needs_response</span></span>:<br/>RValues - <a href="14-rv.html#SP24_3">&#167;24.3</a><br/>Responses - <a href="17-rs.html#SP9">&#167;9</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</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">"null rule uses response"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">lettered_responses_used</span><span class="plain-syntax">[</span><span class="identifier-syntax">code</span><span class="plain-syntax">] = </span><span class="identifier-syntax">current_sentence</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">Wordings::nonempty</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">-&gt;</span><span class="element-syntax">lettered_responses_value</span><span class="plain-syntax">[</span><span class="identifier-syntax">code</span><span class="plain-syntax">] = </span><span class="identifier-syntax">W</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP22" class="function-link"><span class="function-syntax">Rules::unimport</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::get_response_value</span><button class="popup" onclick="togglePopup('usagePopup38')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup38">Usage of <span class="code-font"><span class="function-syntax">Rules::get_response_value</span></span>:<br/>Responses - <a href="17-rs.html#SP7_1">&#167;7.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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">Rules::get_response_value</span><button class="popup" onclick="togglePopup('usagePopup37')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup37">Usage of <span class="code-font"><span class="function-syntax">Rules::get_response_value</span></span>:<br/>Responses - <a href="17-rs.html#SP7_1">&#167;7.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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code</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">R</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">"null rule uses response"</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">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">lettered_responses_value</span><span class="plain-syntax">[</span><span class="identifier-syntax">code</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">Rules::get_response_sentence</span><button class="popup" onclick="togglePopup('usagePopup39')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup39">Usage of <span class="code-font"><span class="function-syntax">Rules::get_response_sentence</span></span>:<br/>Responses - <a href="17-rs.html#SP7_1">&#167;7.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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Rules::get_response_sentence</span><button class="popup" onclick="togglePopup('usagePopup38')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup38">Usage of <span class="code-font"><span class="function-syntax">Rules::get_response_sentence</span></span>:<br/>Responses - <a href="17-rs.html#SP7_1">&#167;7.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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code</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">R</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">"null rule uses response"</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">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">lettered_responses_used</span><span class="plain-syntax">[</span><span class="identifier-syntax">code</span><span class="plain-syntax">];</span>
<span class="plain-syntax">}</span>
@ -1143,7 +1132,7 @@ rules with I6 definitions, i.e., where <span class="extract"><span class="extrac
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> &amp;(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">defn_as_phrase</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">stack_frame</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Rules::package</span><button class="popup" onclick="togglePopup('usagePopup40')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup40">Usage of <span class="code-font"><span class="function-syntax">Rules::package</span></span>:<br/>Responses - <a href="17-rs.html#SP5">&#167;5</a>, <a href="17-rs.html#SP7_1">&#167;7.1</a><br/>Phrase Usage - <a href="22-pu.html#SP6">&#167;6</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="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">Rules::package</span><button class="popup" onclick="togglePopup('usagePopup39')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup39">Usage of <span class="code-font"><span class="function-syntax">Rules::package</span></span>:<br/>Responses - <a href="17-rs.html#SP5">&#167;5</a>, <a href="17-rs.html#SP7_1">&#167;7.1</a><br/>Phrase Usage - <a href="22-pu.html#SP6">&#167;6</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="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rule_package</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -176,7 +176,7 @@ have affected it in this way:
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">placement_affecting</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure placement_affecting is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/pc, 26/ts, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure placement_affecting is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 26/ts, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP6"></a><b>&#167;6. </b>As rulebooks are declared, the first few are quietly copied into
a small array: that way, we can always obtain a pointer to, say, the
turn sequence rules by looking up <span class="extract"><span class="extract-syntax">built_in_rulebooks[TURN_SEQUENCE_RB]</span></span>.
@ -610,7 +610,7 @@ built (for instance, scene endings).
<span class="plain-syntax"> </span><a href="21-sv.html#SP3" class="function-link"><span class="function-syntax">StackedVariables::compile_frame_creator</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">owned_by_rb</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="21-rl2.html#SP14" class="function-link"><span class="function-syntax">Rulebooks::get_stv_creator_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">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">memory_economy_in_force</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">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">memory_economy_in_force</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">RULEBOOK_VAR_CREATORS_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::named_array_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="reserved-syntax">rulebook</span><span class="plain-syntax">) {</span>
@ -936,7 +936,7 @@ sub-section on linked lists of booked rules in the section on Rules.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rb</span><span class="plain-syntax"> == </span><span class="identifier-syntax">built_in_rulebooks</span><span class="plain-syntax">[</span><span class="constant-syntax">SETTING_ACTION_VARIABLES_RB</span><span class="plain-syntax">]) {</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::set_never_test_actor</span></a><span class="plain-syntax">(</span><a href="21-rb.html#SP6" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::set_never_test_actor</span></a><span class="plain-syntax">(</span><a href="21-rb.html#SP6" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><a href="21-fao.html#SP12" class="function-link"><span class="function-syntax">Rulebooks::Outcomes::modify_rule_to_suit_focus</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">my_focus</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><a href="21-rb.html#SP6" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">));</span>
@ -945,7 +945,7 @@ sub-section on linked lists of booked rules in the section on Rules.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">side</span><span class="plain-syntax"> == </span><span class="constant-syntax">INSTEAD_SIDE</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="plain-syntax"> </span><span class="string-syntax">"Copying actor test flags from rule being replaced\n"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::copy_actor_test_flags</span></a><span class="plain-syntax">(</span><a href="21-rb.html#SP6" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">), </span><span class="identifier-syntax">ref_rule</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::copy_actor_test_flags</span></a><span class="plain-syntax">(</span><a href="21-rb.html#SP6" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_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="plain-syntax"> </span><span class="string-syntax">"Copying former rulebook's variable permissions to displaced rule\n"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP16" class="function-link"><span class="function-syntax">Rules::acquire_stvol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ref_rule</span><span class="plain-syntax">, </span><span class="identifier-syntax">rb</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">accessible_from_rb</span><span class="plain-syntax">);</span>
@ -958,7 +958,7 @@ sub-section on linked lists of booked rules in the section on Rules.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="21-rl2.html#SP12" class="function-link"><span class="function-syntax">Rulebooks::focus</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rb</span><span class="plain-syntax">) == </span><span class="constant-syntax">ACTION_FOCUS</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP16" class="function-link"><span class="function-syntax">Rules::acquire_action_variables</span></a><span class="plain-syntax">(</span><a href="21-rb.html#SP6" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</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">rb</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">fragmentation_stem_length</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::suppress_action_testing</span></a><span class="plain-syntax">(</span><a href="21-rb.html#SP6" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::suppress_action_testing</span></a><span class="plain-syntax">(</span><a href="21-rb.html#SP6" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="22-prcd.html#SP9" class="function-link"><span class="function-syntax">Phrases::Context::ensure_avl</span></a><span class="plain-syntax">(</span><a href="21-rb.html#SP6" class="function-link"><span class="function-syntax">Rules::Bookings::get_rule</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">the_new_rule</span><span class="plain-syntax">));</span>
@ -1013,7 +1013,7 @@ code are the real outcome of the code in this section.
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Rulebooks::RulebookNames_array</span><button class="popup" onclick="togglePopup('usagePopup32')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup32">Usage of <span class="code-font"><span class="function-syntax">Rulebooks::RulebookNames_array</span></span>:<br/>Construction Sequence - <a href="22-cs.html#SP13">&#167;13</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">RULEBOOKNAMES_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::named_array_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</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_economy_in_force</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_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">memory_economy_in_force</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::array_numeric_entry</span></a><span class="plain-syntax">(0);</span>
<span class="plain-syntax"> </span><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::array_numeric_entry</span></a><span class="plain-syntax">(0);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>

View file

@ -101,7 +101,7 @@ 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">stacked_variable_owner_list</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure stacked_variable is accessed in 2/sq, 2/si, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/uo, 26/ts and here.</li><li>The structure stacked_variable_list is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/pc, 26/ts, 27/cm and here.</li><li>The structure stacked_variable_owner is private to this section.</li><li>The structure stacked_variable_owner_list is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/pc, 26/ts, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure stacked_variable is accessed in 2/sq, 2/si, 4/nuor, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/ts, 26/uoart and here.</li><li>The structure stacked_variable_list is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 26/ts, 27/cm and here.</li><li>The structure stacked_variable_owner is private to this section.</li><li>The structure stacked_variable_owner_list is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 26/ts, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b></p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -91,7 +91,7 @@ own right, a functional-programming sort of device. For example:
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">constant_phrase</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure constant_phrase is accessed in 2/sq, 2/si, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 25/cii, 26/uo, 26/ts and here.</li></ul>
<ul class="endnotetexts"><li>The structure constant_phrase is accessed in 2/sq, 2/si, 4/nuor, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 25/cii, 26/ts, 26/uoart and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. </b>Here we create a new named phrase ("doubling", say):
</p>

View file

@ -104,7 +104,7 @@ valid as values, since a condition is not also a value in Inform 7.
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">name</span><span class="plain-syntax">; </span><span class="comment-syntax"> text of name</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">phrase_option</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure phrase_option is accessed in 2/sq, 2/si, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/pav, 25/cii, 26/uo, 26/ts and here.</li></ul>
<ul class="endnotetexts"><li>The structure phrase_option is accessed in 2/sq, 2/si, 4/nuor, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/pav, 25/cii, 26/ts, 26/uoart and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. Creation. </b>By default, a phrase has no options.
</p>

View file

@ -159,31 +159,31 @@ the following only blanks out a PHRCD structure ready for that to happen.
</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">Phrases::Context::set_always_test_actor</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">Phrases::Context::set_always_test_actor</span></span>:<br/>Rules - <a href="21-rl.html#SP26">&#167;26</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::set_always_test_actor</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">Phrases::Context::set_always_test_actor</span></span>:<br/>Rules - <a href="21-rl.html#SP25">&#167;25</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</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">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">always_test_actor</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::clear_always_test_actor</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">Phrases::Context::clear_always_test_actor</span></span>:<br/>Rules - <a href="21-rl.html#SP26">&#167;26</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::clear_always_test_actor</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">Phrases::Context::clear_always_test_actor</span></span>:<br/>Rules - <a href="21-rl.html#SP25">&#167;25</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</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">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">always_test_actor</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">endif</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::set_never_test_actor</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">Phrases::Context::set_never_test_actor</span></span>:<br/>Rules - <a href="21-rl.html#SP26">&#167;26</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::set_never_test_actor</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">Phrases::Context::set_never_test_actor</span></span>:<br/>Rules - <a href="21-rl.html#SP25">&#167;25</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</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">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">never_test_actor</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::set_marked_for_anyone</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">Phrases::Context::set_marked_for_anyone</span></span>:<br/>Rules - <a href="21-rl.html#SP26">&#167;26</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::set_marked_for_anyone</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">Phrases::Context::set_marked_for_anyone</span></span>:<br/>Rules - <a href="21-rl.html#SP25">&#167;25</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</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">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">marked_for_anyone</span><span class="plain-syntax"> = </span><span class="identifier-syntax">to</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::get_marked_for_anyone</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">Phrases::Context::get_marked_for_anyone</span></span>:<br/>Rules - <a href="21-rl.html#SP26">&#167;26</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::get_marked_for_anyone</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">Phrases::Context::get_marked_for_anyone</span></span>:<br/>Rules - <a href="21-rl.html#SP25">&#167;25</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</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">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">marked_for_anyone</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
@ -212,7 +212,7 @@ the following only blanks out a PHRCD structure ready for that to happen.
<span class="plain-syntax">}</span>
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::suppress_action_testing</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">Phrases::Context::suppress_action_testing</span></span>:<br/>Rules - <a href="21-rl.html#SP26">&#167;26</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Phrases::Context::suppress_action_testing</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">Phrases::Context::suppress_action_testing</span></span>:<br/>Rules - <a href="21-rl.html#SP25">&#167;25</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">ph_runtime_context_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">phrcd</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">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PL::Actions::Patterns::suppress_action_testing</span><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">phrcd</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ap</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>

View file

@ -156,7 +156,7 @@ connect this existing one to the phrase.
<span class="plain-syntax"> </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::markup_wording</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rule_package</span><span class="plain-syntax">, </span><span class="constant-syntax">RULE_NAME_HMD</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">declaration_node</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP9" class="function-link"><span class="function-syntax">Rules::set_I7_definition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ph_iname</span><span class="plain-syntax"> = </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_localised_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">RULE_FN_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">ph</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">owning_module</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="22-pu.html#SP6_3" class="named-paragraph-link"><span class="named-paragraph">Do some tedious business for indexing the rule later on</span><span class="named-paragraph-number">6.3</span></a></span><span class="plain-syntax">;</span>

View file

@ -90,7 +90,7 @@ defined as "At 9:00 AM: ..." But two values are special:
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">use_as_event</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure use_as_event is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/pc, 26/ts, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure use_as_event is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 26/ts, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b>Timed events are stored in two simple arrays, processed by run-time code.
</p>

View file

@ -144,7 +144,7 @@ marks it as deallocated.
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure local_variable is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/pc, 26/ts, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure local_variable is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 26/ts, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b>A local variable needs to be stored somewhere at run-time. The obvious
correspondence is to put these into I6 local variables, which are, in effect,
CPU registers. We won't need to do much in the way of register-allocation,
@ -393,7 +393,7 @@ scratch work-space which can be used in the compiled code.
<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">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::add_named_call_as_symbol</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">LocalVariables::add_named_call_as_symbol</span></span>:<br/>Literal Patterns - <a href="6-lp.html#SP27">&#167;27</a><br/>Adjective Meanings - <a href="7-am.html#SP44">&#167;44</a><br/>Relations - <a href="7-rlt.html#SP15_2">&#167;15.2</a>, <a href="7-rlt.html#SP17">&#167;17</a>, <a href="7-rlt.html#SP29_1">&#167;29.1</a><br/>New Verbs - <a href="7-nv.html#SP17_1">&#167;17.1</a>, <a href="7-nv.html#SP17_2">&#167;17.2</a><br/>Extension Files - <a href="9-ef.html#SP6">&#167;6</a><br/>Cinders and Deferrals - <a href="12-cad.html#SP5">&#167;5</a><br/>Compile Deferred Propositions - <a href="12-cdp.html#SP2_1_5">&#167;2.1.5</a>, <a href="12-cdp.html#SP2_1_5_2">&#167;2.1.5.2</a><br/>Runtime Support for Kinds - <a href="13-rsfk.html#SP16_3">&#167;16.3</a>, <a href="13-rsfk.html#SP24_1">&#167;24.1</a>, <a href="13-rsfk.html#SP24_2">&#167;24.2</a>, <a href="13-rsfk.html#SP24_3">&#167;24.3</a>, <a href="13-rsfk.html#SP24_5">&#167;24.5</a>, <a href="13-rsfk.html#SP24_6_1">&#167;24.6.1</a>, <a href="13-rsfk.html#SP24_6_2">&#167;24.6.2</a>, <a href="13-rsfk.html#SP24_6_5">&#167;24.6.5</a>, <a href="13-rsfk.html#SP24_6_6">&#167;24.6.6</a>, <a href="13-rsfk.html#SP25">&#167;25</a><br/>Responses - <a href="17-rs.html#SP6_2">&#167;6.2</a>, <a href="17-rs.html#SP7_2">&#167;7.2</a><br/>Table Columns - <a href="19-tc.html#SP8">&#167;8</a><br/>Runtime Support for Tables - <a href="19-rsft.html#SP2">&#167;2</a><br/>Rules - <a href="21-rl.html#SP20">&#167;20</a><br/>Rule Bookings - <a href="21-rb.html#SP24_1_1">&#167;24.1.1</a><br/>Rulebooks - <a href="21-rl2.html#SP14_1">&#167;14.1</a><br/>Focus and Outcome - <a href="21-fao.html#SP10">&#167;10</a><br/>Stacked Variables - <a href="21-sv.html#SP3">&#167;3</a><br/>Chronology - <a href="24-ch.html#SP7">&#167;7</a><br/>Use Options - <a href="26-uo.html#SP22_1">&#167;22.1</a>, <a href="26-uo.html#SP22_2">&#167;22.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">LocalVariables::add_named_call_as_symbol</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">LocalVariables::add_named_call_as_symbol</span></span>:<br/>Literal Patterns - <a href="6-lp.html#SP27">&#167;27</a><br/>Adjective Meanings - <a href="7-am.html#SP44">&#167;44</a><br/>Relations - <a href="7-rlt.html#SP15_2">&#167;15.2</a>, <a href="7-rlt.html#SP17">&#167;17</a>, <a href="7-rlt.html#SP29_1">&#167;29.1</a><br/>New Verbs - <a href="7-nv.html#SP17_1">&#167;17.1</a>, <a href="7-nv.html#SP17_2">&#167;17.2</a><br/>Extension Files - <a href="9-ef.html#SP6">&#167;6</a><br/>Cinders and Deferrals - <a href="12-cad.html#SP5">&#167;5</a><br/>Compile Deferred Propositions - <a href="12-cdp.html#SP2_1_5">&#167;2.1.5</a>, <a href="12-cdp.html#SP2_1_5_2">&#167;2.1.5.2</a><br/>Runtime Support for Kinds - <a href="13-rsfk.html#SP16_3">&#167;16.3</a>, <a href="13-rsfk.html#SP24_1">&#167;24.1</a>, <a href="13-rsfk.html#SP24_2">&#167;24.2</a>, <a href="13-rsfk.html#SP24_3">&#167;24.3</a>, <a href="13-rsfk.html#SP24_5">&#167;24.5</a>, <a href="13-rsfk.html#SP24_6_1">&#167;24.6.1</a>, <a href="13-rsfk.html#SP24_6_2">&#167;24.6.2</a>, <a href="13-rsfk.html#SP24_6_5">&#167;24.6.5</a>, <a href="13-rsfk.html#SP24_6_6">&#167;24.6.6</a>, <a href="13-rsfk.html#SP25">&#167;25</a><br/>Responses - <a href="17-rs.html#SP6_2">&#167;6.2</a>, <a href="17-rs.html#SP7_2">&#167;7.2</a><br/>Table Columns - <a href="19-tc.html#SP8">&#167;8</a><br/>Runtime Support for Tables - <a href="19-rsft.html#SP2">&#167;2</a><br/>Rules - <a href="21-rl.html#SP20">&#167;20</a><br/>Rule Bookings - <a href="21-rb.html#SP24_1_1">&#167;24.1.1</a><br/>Rulebooks - <a href="21-rl2.html#SP14_1">&#167;14.1</a><br/>Focus and Outcome - <a href="21-fao.html#SP10">&#167;10</a><br/>Stacked Variables - <a href="21-sv.html#SP3">&#167;3</a><br/>Chronology - <a href="24-ch.html#SP7">&#167;7</a><br/>Use Options at Run Time - <a href="26-uoart.html#SP1_1">&#167;1.1</a>, <a href="26-uoart.html#SP1_2">&#167;1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v</span><span class="plain-syntax"> = </span><a href="24-lv.html#SP11" class="function-link"><span class="function-syntax">LocalVariables::add_named_call</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="24-lv.html#SP47" class="function-link"><span class="function-syntax">LocalVariables::declare_this</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">v</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>

View file

@ -464,7 +464,7 @@ exceptional case.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="26-jl.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresssection"><a href="26-fc.html">fc</a></li><li class="progresssection"><a href="26-i6i.html">i6i</a></li><li class="progresssection"><a href="26-uo.html">uo</a></li><li class="progresssection"><a href="26-lt.html">lt</a></li><li class="progresssection"><a href="26-jl.html">jl</a></li><li class="progresscurrent">ct</li><li class="progresssection"><a href="26-rt.html">rt</a></li><li class="progresssection"><a href="26-iti.html">iti</a></li><li class="progresssection"><a href="26-pl.html">pl</a></li><li class="progresssection"><a href="26-pc.html">pc</a></li><li class="progresssection"><a href="26-ts.html">ts</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="26-rt.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="26-jl.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresssection"><a href="26-fc.html">fc</a></li><li class="progresssection"><a href="26-i6i.html">i6i</a></li><li class="progresssection"><a href="26-lt.html">lt</a></li><li class="progresssection"><a href="26-jl.html">jl</a></li><li class="progresscurrent">ct</li><li class="progresssection"><a href="26-rt.html">rt</a></li><li class="progresssection"><a href="26-iti.html">iti</a></li><li class="progresssection"><a href="26-pl.html">pl</a></li><li class="progresssection"><a href="26-pc.html">pc</a></li><li class="progresssection"><a href="26-ts.html">ts</a></li><li class="progresssection"><a href="26-uoart.html">uoart</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="26-rt.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -210,7 +210,7 @@ Inform's own version number), but it belongs nowhere else either, so:
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="25-cp.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresscurrent">fc</li><li class="progresssection"><a href="26-i6i.html">i6i</a></li><li class="progresssection"><a href="26-uo.html">uo</a></li><li class="progresssection"><a href="26-lt.html">lt</a></li><li class="progresssection"><a href="26-jl.html">jl</a></li><li class="progresssection"><a href="26-ct.html">ct</a></li><li class="progresssection"><a href="26-rt.html">rt</a></li><li class="progresssection"><a href="26-iti.html">iti</a></li><li class="progresssection"><a href="26-pl.html">pl</a></li><li class="progresssection"><a href="26-pc.html">pc</a></li><li class="progresssection"><a href="26-ts.html">ts</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="26-i6i.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="25-cp.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresscurrent">fc</li><li class="progresssection"><a href="26-i6i.html">i6i</a></li><li class="progresssection"><a href="26-lt.html">lt</a></li><li class="progresssection"><a href="26-jl.html">jl</a></li><li class="progresssection"><a href="26-ct.html">ct</a></li><li class="progresssection"><a href="26-rt.html">rt</a></li><li class="progresssection"><a href="26-iti.html">iti</a></li><li class="progresssection"><a href="26-pl.html">pl</a></li><li class="progresssection"><a href="26-pc.html">pc</a></li><li class="progresssection"><a href="26-ts.html">ts</a></li><li class="progresssection"><a href="26-uoart.html">uoart</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="26-i6i.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -313,7 +313,7 @@ requests, which, again, we do by instructing the Template code.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="26-fc.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresssection"><a href="26-fc.html">fc</a></li><li class="progresscurrent">i6i</li><li class="progresssection"><a href="26-uo.html">uo</a></li><li class="progresssection"><a href="26-lt.html">lt</a></li><li class="progresssection"><a href="26-jl.html">jl</a></li><li class="progresssection"><a href="26-ct.html">ct</a></li><li class="progresssection"><a href="26-rt.html">rt</a></li><li class="progresssection"><a href="26-iti.html">iti</a></li><li class="progresssection"><a href="26-pl.html">pl</a></li><li class="progresssection"><a href="26-pc.html">pc</a></li><li class="progresssection"><a href="26-ts.html">ts</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="26-uo.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="26-fc.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresssection"><a href="26-fc.html">fc</a></li><li class="progresscurrent">i6i</li><li class="progresssection"><a href="26-lt.html">lt</a></li><li class="progresssection"><a href="26-jl.html">jl</a></li><li class="progresssection"><a href="26-ct.html">ct</a></li><li class="progresssection"><a href="26-rt.html">rt</a></li><li class="progresssection"><a href="26-iti.html">iti</a></li><li class="progresssection"><a href="26-pl.html">pl</a></li><li class="progresssection"><a href="26-pc.html">pc</a></li><li class="progresssection"><a href="26-ts.html">ts</a></li><li class="progresssection"><a href="26-uoart.html">uoart</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="26-lt.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -108,7 +108,7 @@ and <span class="extract"><span class="extract-syntax">+)</span></span> Inform 7
<span class="plain-syntax"> </span><a href="26-iti.html#SP2" class="function-link"><span class="function-syntax">I6T::interpreter_shared</span></a><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="constant-syntax">INDEXT_MODE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">indext_file</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">I6T::interpret_i6t</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">I6T::interpret_i6t</span></span>:<br/>Inform 6 Inclusions - <a href="26-i6i.html#SP7">&#167;7</a>, <a href="26-i6i.html#SP8">&#167;8</a><br/>Use Options - <a href="26-uo.html#SP18">&#167;18</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sf</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N_escape</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">I6T::interpret_i6t</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">I6T::interpret_i6t</span></span>:<br/>Inform 6 Inclusions - <a href="26-i6i.html#SP7">&#167;7</a>, <a href="26-i6i.html#SP8">&#167;8</a><br/>Use Options at Run Time - <a href="26-uoart.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sf</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N_escape</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="26-iti.html#SP2" class="function-link"><span class="function-syntax">I6T::interpreter_shared</span></a><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="constant-syntax">I6TCODE_MODE</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</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="identifier-syntax">N_escape</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
@ -397,7 +397,7 @@ time.) <span class="extract"><span class="extract-syntax">{-index:name}</span></
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="26-rt.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresssection"><a href="26-fc.html">fc</a></li><li class="progresssection"><a href="26-i6i.html">i6i</a></li><li class="progresssection"><a href="26-uo.html">uo</a></li><li class="progresssection"><a href="26-lt.html">lt</a></li><li class="progresssection"><a href="26-jl.html">jl</a></li><li class="progresssection"><a href="26-ct.html">ct</a></li><li class="progresssection"><a href="26-rt.html">rt</a></li><li class="progresscurrent">iti</li><li class="progresssection"><a href="26-pl.html">pl</a></li><li class="progresssection"><a href="26-pc.html">pc</a></li><li class="progresssection"><a href="26-ts.html">ts</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="26-pl.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="26-rt.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresssection"><a href="26-fc.html">fc</a></li><li class="progresssection"><a href="26-i6i.html">i6i</a></li><li class="progresssection"><a href="26-lt.html">lt</a></li><li class="progresssection"><a href="26-jl.html">jl</a></li><li class="progresssection"><a href="26-ct.html">ct</a></li><li class="progresssection"><a href="26-rt.html">rt</a></li><li class="progresscurrent">iti</li><li class="progresssection"><a href="26-pl.html">pl</a></li><li class="progresssection"><a href="26-pc.html">pc</a></li><li class="progresssection"><a href="26-ts.html">ts</a></li><li class="progresssection"><a href="26-uoart.html">uoart</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="26-pl.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -200,7 +200,7 @@ specification <span class="extract"><span class="extract-syntax">--&gt; 0</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="26-lt.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresssection"><a href="26-fc.html">fc</a></li><li class="progresssection"><a href="26-i6i.html">i6i</a></li><li class="progresssection"><a href="26-uo.html">uo</a></li><li class="progresssection"><a href="26-lt.html">lt</a></li><li class="progresscurrent">jl</li><li class="progresssection"><a href="26-ct.html">ct</a></li><li class="progresssection"><a href="26-rt.html">rt</a></li><li class="progresssection"><a href="26-iti.html">iti</a></li><li class="progresssection"><a href="26-pl.html">pl</a></li><li class="progresssection"><a href="26-pc.html">pc</a></li><li class="progresssection"><a href="26-ts.html">ts</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="26-ct.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="26-lt.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresssection"><a href="26-fc.html">fc</a></li><li class="progresssection"><a href="26-i6i.html">i6i</a></li><li class="progresssection"><a href="26-lt.html">lt</a></li><li class="progresscurrent">jl</li><li class="progresssection"><a href="26-ct.html">ct</a></li><li class="progresssection"><a href="26-rt.html">rt</a></li><li class="progresssection"><a href="26-iti.html">iti</a></li><li class="progresssection"><a href="26-pl.html">pl</a></li><li class="progresssection"><a href="26-pc.html">pc</a></li><li class="progresssection"><a href="26-ts.html">ts</a></li><li class="progresssection"><a href="26-uoart.html">uoart</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="26-ct.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -186,7 +186,7 @@ is significant to the run-time list-printing code.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="26-lt.html#SP4">&#167;4</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="26-uo.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresssection"><a href="26-fc.html">fc</a></li><li class="progresssection"><a href="26-i6i.html">i6i</a></li><li class="progresssection"><a href="26-uo.html">uo</a></li><li class="progresscurrent">lt</li><li class="progresssection"><a href="26-jl.html">jl</a></li><li class="progresssection"><a href="26-ct.html">ct</a></li><li class="progresssection"><a href="26-rt.html">rt</a></li><li class="progresssection"><a href="26-iti.html">iti</a></li><li class="progresssection"><a href="26-pl.html">pl</a></li><li class="progresssection"><a href="26-pc.html">pc</a></li><li class="progresssection"><a href="26-ts.html">ts</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="26-jl.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="26-i6i.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresssection"><a href="26-fc.html">fc</a></li><li class="progresssection"><a href="26-i6i.html">i6i</a></li><li class="progresscurrent">lt</li><li class="progresssection"><a href="26-jl.html">jl</a></li><li class="progresssection"><a href="26-ct.html">ct</a></li><li class="progresssection"><a href="26-rt.html">rt</a></li><li class="progresssection"><a href="26-iti.html">iti</a></li><li class="progresssection"><a href="26-pl.html">pl</a></li><li class="progresssection"><a href="26-pc.html">pc</a></li><li class="progresssection"><a href="26-ts.html">ts</a></li><li class="progresssection"><a href="26-uoart.html">uoart</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="26-jl.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -118,7 +118,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">plugin_call</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">plugin_call</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure plugin_call is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/ts, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure plugin_call is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/ts, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b></p>
<pre class="displayed-code all-displayed-code code-font">
@ -314,7 +314,7 @@ function togglePopup(material_id) {
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="26-pl.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresssection"><a href="26-fc.html">fc</a></li><li class="progresssection"><a href="26-i6i.html">i6i</a></li><li class="progresssection"><a href="26-uo.html">uo</a></li><li class="progresssection"><a href="26-lt.html">lt</a></li><li class="progresssection"><a href="26-jl.html">jl</a></li><li class="progresssection"><a href="26-ct.html">ct</a></li><li class="progresssection"><a href="26-rt.html">rt</a></li><li class="progresssection"><a href="26-iti.html">iti</a></li><li class="progresssection"><a href="26-pl.html">pl</a></li><li class="progresscurrent">pc</li><li class="progresssection"><a href="26-ts.html">ts</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="26-ts.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="26-pl.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresssection"><a href="26-fc.html">fc</a></li><li class="progresssection"><a href="26-i6i.html">i6i</a></li><li class="progresssection"><a href="26-lt.html">lt</a></li><li class="progresssection"><a href="26-jl.html">jl</a></li><li class="progresssection"><a href="26-ct.html">ct</a></li><li class="progresssection"><a href="26-rt.html">rt</a></li><li class="progresssection"><a href="26-iti.html">iti</a></li><li class="progresssection"><a href="26-pl.html">pl</a></li><li class="progresscurrent">pc</li><li class="progresssection"><a href="26-ts.html">ts</a></li><li class="progresssection"><a href="26-uoart.html">uoart</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="26-ts.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -383,7 +383,7 @@ with the following.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Plugins::Manage::index_innards</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="26-pl.html#SP13" class="function-link"><span class="function-syntax">Plugins::Manage::index_VM</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="26-uo.html#SP20" class="function-link"><span class="function-syntax">UseOptions::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="4-nuor.html#SP9" class="function-link"><span class="function-syntax">NewUseOptions::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::extra_link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">3</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">"See some technicalities for Inform maintainers only"</span><span class="plain-syntax">);</span>
@ -461,7 +461,7 @@ with the following.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="26-iti.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresssection"><a href="26-fc.html">fc</a></li><li class="progresssection"><a href="26-i6i.html">i6i</a></li><li class="progresssection"><a href="26-uo.html">uo</a></li><li class="progresssection"><a href="26-lt.html">lt</a></li><li class="progresssection"><a href="26-jl.html">jl</a></li><li class="progresssection"><a href="26-ct.html">ct</a></li><li class="progresssection"><a href="26-rt.html">rt</a></li><li class="progresssection"><a href="26-iti.html">iti</a></li><li class="progresscurrent">pl</li><li class="progresssection"><a href="26-pc.html">pc</a></li><li class="progresssection"><a href="26-ts.html">ts</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="26-pc.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="26-iti.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresssection"><a href="26-fc.html">fc</a></li><li class="progresssection"><a href="26-i6i.html">i6i</a></li><li class="progresssection"><a href="26-lt.html">lt</a></li><li class="progresssection"><a href="26-jl.html">jl</a></li><li class="progresssection"><a href="26-ct.html">ct</a></li><li class="progresssection"><a href="26-rt.html">rt</a></li><li class="progresssection"><a href="26-iti.html">iti</a></li><li class="progresscurrent">pl</li><li class="progresssection"><a href="26-pc.html">pc</a></li><li class="progresssection"><a href="26-ts.html">ts</a></li><li class="progresssection"><a href="26-uoart.html">uoart</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="26-pc.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -75,7 +75,7 @@ already been set up, or not. Here's not:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::begin</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">Routines::begin</span></span>:<br/>Literal Patterns - <a href="6-lp.html#SP27">&#167;27</a><br/>Nonlocal Variables - <a href="6-nv.html#SP16">&#167;16</a><br/>Adjective Meanings - <a href="7-am.html#SP35_2">&#167;35.2</a>, <a href="7-am.html#SP44">&#167;44</a><br/>Binary Predicates - <a href="7-bp.html#SP33">&#167;33</a><br/>Relations - <a href="7-rlt.html#SP15">&#167;15</a>, <a href="7-rlt.html#SP15_2">&#167;15.2</a>, <a href="7-rlt.html#SP17">&#167;17</a>, <a href="7-rlt.html#SP29_1">&#167;29.1</a>, <a href="7-rlt.html#SP29_2">&#167;29.2</a>, <a href="7-rlt.html#SP29_3">&#167;29.3</a>, <a href="7-rlt.html#SP29_4">&#167;29.4</a>, <a href="7-rlt.html#SP29_5">&#167;29.5</a>, <a href="7-rlt.html#SP29_6">&#167;29.6</a>, <a href="7-rlt.html#SP30">&#167;30</a><br/>New Verbs - <a href="7-nv.html#SP17_1">&#167;17.1</a>, <a href="7-nv.html#SP17_2">&#167;17.2</a><br/>Extension Files - <a href="9-ef.html#SP6">&#167;6</a><br/>Compile Deferred Propositions - <a href="12-cdp.html#SP2_1">&#167;2.1</a><br/>Runtime Support for Kinds - <a href="13-rsfk.html#SP16_3">&#167;16.3</a>, <a href="13-rsfk.html#SP24_1">&#167;24.1</a>, <a href="13-rsfk.html#SP24_2">&#167;24.2</a>, <a href="13-rsfk.html#SP24_3">&#167;24.3</a>, <a href="13-rsfk.html#SP24_4">&#167;24.4</a>, <a href="13-rsfk.html#SP24_5">&#167;24.5</a>, <a href="13-rsfk.html#SP24_6_1">&#167;24.6.1</a>, <a href="13-rsfk.html#SP24_6_2">&#167;24.6.2</a>, <a href="13-rsfk.html#SP24_6_3">&#167;24.6.3</a>, <a href="13-rsfk.html#SP24_6_4">&#167;24.6.4</a>, <a href="13-rsfk.html#SP24_6_5">&#167;24.6.5</a>, <a href="13-rsfk.html#SP24_6_6">&#167;24.6.6</a>, <a href="13-rsfk.html#SP25">&#167;25</a><br/>Measurement Adjectives - <a href="15-ma.html#SP13">&#167;13</a><br/>Text Literals - <a href="17-tl.html#SP14_2">&#167;14.2</a><br/>Text Substitutions - <a href="17-ts.html#SP12">&#167;12</a><br/>Responses - <a href="17-rs.html#SP6_1">&#167;6.1</a>, <a href="17-rs.html#SP6_2">&#167;6.2</a>, <a href="17-rs.html#SP7_2">&#167;7.2</a><br/>Table Columns - <a href="19-tc.html#SP8">&#167;8</a><br/>Runtime Support for Tables - <a href="19-rsft.html#SP2">&#167;2</a><br/>Equations - <a href="20-eq.html#SP42">&#167;42</a><br/>Rules - <a href="21-rl.html#SP20">&#167;20</a>, <a href="21-rl.html#SP22_1">&#167;22.1</a><br/>Rule Bookings - <a href="21-rb.html#SP23">&#167;23</a>, <a href="21-rb.html#SP24_1_1">&#167;24.1.1</a><br/>Rulebooks - <a href="21-rl2.html#SP14_1">&#167;14.1</a><br/>Focus and Outcome - <a href="21-fao.html#SP10">&#167;10</a><br/>Stacked Variables - <a href="21-sv.html#SP3">&#167;3</a><br/>Phrases - <a href="22-ph.html#SP13">&#167;13</a><br/>Phrases as Values - <a href="22-pav.html#SP9_2">&#167;9.2</a><br/>Chronology - <a href="24-ch.html#SP6">&#167;6</a>, <a href="24-ch.html#SP7">&#167;7</a><br/>Use Options - <a href="26-uo.html#SP22_1">&#167;22.1</a>, <a href="26-uo.html#SP22_2">&#167;22.2</a><br/>List Together - <a href="26-lt.html#SP4_1">&#167;4.1</a><br/>Test Scripts - <a href="26-ts.html#SP10">&#167;10</a>, <a href="26-ts.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::begin</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">Routines::begin</span></span>:<br/>Literal Patterns - <a href="6-lp.html#SP27">&#167;27</a><br/>Nonlocal Variables - <a href="6-nv.html#SP16">&#167;16</a><br/>Adjective Meanings - <a href="7-am.html#SP35_2">&#167;35.2</a>, <a href="7-am.html#SP44">&#167;44</a><br/>Binary Predicates - <a href="7-bp.html#SP33">&#167;33</a><br/>Relations - <a href="7-rlt.html#SP15">&#167;15</a>, <a href="7-rlt.html#SP15_2">&#167;15.2</a>, <a href="7-rlt.html#SP17">&#167;17</a>, <a href="7-rlt.html#SP29_1">&#167;29.1</a>, <a href="7-rlt.html#SP29_2">&#167;29.2</a>, <a href="7-rlt.html#SP29_3">&#167;29.3</a>, <a href="7-rlt.html#SP29_4">&#167;29.4</a>, <a href="7-rlt.html#SP29_5">&#167;29.5</a>, <a href="7-rlt.html#SP29_6">&#167;29.6</a>, <a href="7-rlt.html#SP30">&#167;30</a><br/>New Verbs - <a href="7-nv.html#SP17_1">&#167;17.1</a>, <a href="7-nv.html#SP17_2">&#167;17.2</a><br/>Extension Files - <a href="9-ef.html#SP6">&#167;6</a><br/>Compile Deferred Propositions - <a href="12-cdp.html#SP2_1">&#167;2.1</a><br/>Runtime Support for Kinds - <a href="13-rsfk.html#SP16_3">&#167;16.3</a>, <a href="13-rsfk.html#SP24_1">&#167;24.1</a>, <a href="13-rsfk.html#SP24_2">&#167;24.2</a>, <a href="13-rsfk.html#SP24_3">&#167;24.3</a>, <a href="13-rsfk.html#SP24_4">&#167;24.4</a>, <a href="13-rsfk.html#SP24_5">&#167;24.5</a>, <a href="13-rsfk.html#SP24_6_1">&#167;24.6.1</a>, <a href="13-rsfk.html#SP24_6_2">&#167;24.6.2</a>, <a href="13-rsfk.html#SP24_6_3">&#167;24.6.3</a>, <a href="13-rsfk.html#SP24_6_4">&#167;24.6.4</a>, <a href="13-rsfk.html#SP24_6_5">&#167;24.6.5</a>, <a href="13-rsfk.html#SP24_6_6">&#167;24.6.6</a>, <a href="13-rsfk.html#SP25">&#167;25</a><br/>Measurement Adjectives - <a href="15-ma.html#SP13">&#167;13</a><br/>Text Literals - <a href="17-tl.html#SP14_2">&#167;14.2</a><br/>Text Substitutions - <a href="17-ts.html#SP12">&#167;12</a><br/>Responses - <a href="17-rs.html#SP6_1">&#167;6.1</a>, <a href="17-rs.html#SP6_2">&#167;6.2</a>, <a href="17-rs.html#SP7_2">&#167;7.2</a><br/>Table Columns - <a href="19-tc.html#SP8">&#167;8</a><br/>Runtime Support for Tables - <a href="19-rsft.html#SP2">&#167;2</a><br/>Equations - <a href="20-eq.html#SP42">&#167;42</a><br/>Rules - <a href="21-rl.html#SP20">&#167;20</a>, <a href="21-rl.html#SP22_1">&#167;22.1</a><br/>Rule Bookings - <a href="21-rb.html#SP23">&#167;23</a>, <a href="21-rb.html#SP24_1_1">&#167;24.1.1</a><br/>Rulebooks - <a href="21-rl2.html#SP14_1">&#167;14.1</a><br/>Focus and Outcome - <a href="21-fao.html#SP10">&#167;10</a><br/>Stacked Variables - <a href="21-sv.html#SP3">&#167;3</a><br/>Phrases - <a href="22-ph.html#SP13">&#167;13</a><br/>Phrases as Values - <a href="22-pav.html#SP9_2">&#167;9.2</a><br/>Chronology - <a href="24-ch.html#SP6">&#167;6</a>, <a href="24-ch.html#SP7">&#167;7</a><br/>List Together - <a href="26-lt.html#SP4_1">&#167;4.1</a><br/>Test Scripts - <a href="26-ts.html#SP10">&#167;10</a>, <a href="26-ts.html#SP11">&#167;11</a><br/>Use Options at Run Time - <a href="26-uoart.html#SP1_1">&#167;1.1</a>, <a href="26-uoart.html#SP1_2">&#167;1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="26-rt.html#SP3" class="function-link"><span class="function-syntax">Routines::begin_framed</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
@ -134,7 +134,7 @@ did not.
</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">Routines::end</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">Routines::end</span></span>:<br/>Literal Patterns - <a href="6-lp.html#SP27">&#167;27</a><br/>Nonlocal Variables - <a href="6-nv.html#SP16">&#167;16</a><br/>Adjective Meanings - <a href="7-am.html#SP35_2">&#167;35.2</a>, <a href="7-am.html#SP44">&#167;44</a><br/>Binary Predicates - <a href="7-bp.html#SP33">&#167;33</a><br/>Relations - <a href="7-rlt.html#SP15">&#167;15</a>, <a href="7-rlt.html#SP15_2">&#167;15.2</a>, <a href="7-rlt.html#SP17">&#167;17</a>, <a href="7-rlt.html#SP29_1">&#167;29.1</a>, <a href="7-rlt.html#SP29_2">&#167;29.2</a>, <a href="7-rlt.html#SP29_3">&#167;29.3</a>, <a href="7-rlt.html#SP29_4">&#167;29.4</a>, <a href="7-rlt.html#SP29_5">&#167;29.5</a>, <a href="7-rlt.html#SP29_6">&#167;29.6</a>, <a href="7-rlt.html#SP30">&#167;30</a><br/>New Verbs - <a href="7-nv.html#SP17_1">&#167;17.1</a>, <a href="7-nv.html#SP17_2">&#167;17.2</a><br/>Extension Files - <a href="9-ef.html#SP6">&#167;6</a><br/>Compile Deferred Propositions - <a href="12-cdp.html#SP2_1">&#167;2.1</a><br/>Runtime Support for Kinds - <a href="13-rsfk.html#SP16_3">&#167;16.3</a>, <a href="13-rsfk.html#SP24_1">&#167;24.1</a>, <a href="13-rsfk.html#SP24_2">&#167;24.2</a>, <a href="13-rsfk.html#SP24_3">&#167;24.3</a>, <a href="13-rsfk.html#SP24_4">&#167;24.4</a>, <a href="13-rsfk.html#SP24_5">&#167;24.5</a>, <a href="13-rsfk.html#SP24_6_1">&#167;24.6.1</a>, <a href="13-rsfk.html#SP24_6_2">&#167;24.6.2</a>, <a href="13-rsfk.html#SP24_6_3">&#167;24.6.3</a>, <a href="13-rsfk.html#SP24_6_4">&#167;24.6.4</a>, <a href="13-rsfk.html#SP24_6_5">&#167;24.6.5</a>, <a href="13-rsfk.html#SP24_6_6">&#167;24.6.6</a>, <a href="13-rsfk.html#SP25">&#167;25</a><br/>Measurement Adjectives - <a href="15-ma.html#SP13">&#167;13</a><br/>Text Literals - <a href="17-tl.html#SP14_2">&#167;14.2</a><br/>Text Substitutions - <a href="17-ts.html#SP12">&#167;12</a><br/>Responses - <a href="17-rs.html#SP6_1">&#167;6.1</a>, <a href="17-rs.html#SP6_2">&#167;6.2</a>, <a href="17-rs.html#SP7_2">&#167;7.2</a><br/>Table Columns - <a href="19-tc.html#SP8">&#167;8</a><br/>Runtime Support for Tables - <a href="19-rsft.html#SP2">&#167;2</a><br/>Equations - <a href="20-eq.html#SP42">&#167;42</a><br/>Rules - <a href="21-rl.html#SP20">&#167;20</a>, <a href="21-rl.html#SP22_1">&#167;22.1</a><br/>Rule Bookings - <a href="21-rb.html#SP23">&#167;23</a>, <a href="21-rb.html#SP24_1_5">&#167;24.1.5</a><br/>Rulebooks - <a href="21-rl2.html#SP14_1">&#167;14.1</a><br/>Focus and Outcome - <a href="21-fao.html#SP10">&#167;10</a><br/>Stacked Variables - <a href="21-sv.html#SP3">&#167;3</a><br/>Phrases - <a href="22-ph.html#SP13">&#167;13</a><br/>Phrases as Values - <a href="22-pav.html#SP9_2">&#167;9.2</a><br/>Chronology - <a href="24-ch.html#SP6">&#167;6</a>, <a href="24-ch.html#SP7">&#167;7</a><br/>Compile Phrases - <a href="25-cp.html#SP3">&#167;3</a><br/>Use Options - <a href="26-uo.html#SP22_1">&#167;22.1</a>, <a href="26-uo.html#SP22_2">&#167;22.2</a><br/>List Together - <a href="26-lt.html#SP4_1">&#167;4.1</a><br/>Test Scripts - <a href="26-ts.html#SP10">&#167;10</a>, <a href="26-ts.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::end</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">Routines::end</span></span>:<br/>Literal Patterns - <a href="6-lp.html#SP27">&#167;27</a><br/>Nonlocal Variables - <a href="6-nv.html#SP16">&#167;16</a><br/>Adjective Meanings - <a href="7-am.html#SP35_2">&#167;35.2</a>, <a href="7-am.html#SP44">&#167;44</a><br/>Binary Predicates - <a href="7-bp.html#SP33">&#167;33</a><br/>Relations - <a href="7-rlt.html#SP15">&#167;15</a>, <a href="7-rlt.html#SP15_2">&#167;15.2</a>, <a href="7-rlt.html#SP17">&#167;17</a>, <a href="7-rlt.html#SP29_1">&#167;29.1</a>, <a href="7-rlt.html#SP29_2">&#167;29.2</a>, <a href="7-rlt.html#SP29_3">&#167;29.3</a>, <a href="7-rlt.html#SP29_4">&#167;29.4</a>, <a href="7-rlt.html#SP29_5">&#167;29.5</a>, <a href="7-rlt.html#SP29_6">&#167;29.6</a>, <a href="7-rlt.html#SP30">&#167;30</a><br/>New Verbs - <a href="7-nv.html#SP17_1">&#167;17.1</a>, <a href="7-nv.html#SP17_2">&#167;17.2</a><br/>Extension Files - <a href="9-ef.html#SP6">&#167;6</a><br/>Compile Deferred Propositions - <a href="12-cdp.html#SP2_1">&#167;2.1</a><br/>Runtime Support for Kinds - <a href="13-rsfk.html#SP16_3">&#167;16.3</a>, <a href="13-rsfk.html#SP24_1">&#167;24.1</a>, <a href="13-rsfk.html#SP24_2">&#167;24.2</a>, <a href="13-rsfk.html#SP24_3">&#167;24.3</a>, <a href="13-rsfk.html#SP24_4">&#167;24.4</a>, <a href="13-rsfk.html#SP24_5">&#167;24.5</a>, <a href="13-rsfk.html#SP24_6_1">&#167;24.6.1</a>, <a href="13-rsfk.html#SP24_6_2">&#167;24.6.2</a>, <a href="13-rsfk.html#SP24_6_3">&#167;24.6.3</a>, <a href="13-rsfk.html#SP24_6_4">&#167;24.6.4</a>, <a href="13-rsfk.html#SP24_6_5">&#167;24.6.5</a>, <a href="13-rsfk.html#SP24_6_6">&#167;24.6.6</a>, <a href="13-rsfk.html#SP25">&#167;25</a><br/>Measurement Adjectives - <a href="15-ma.html#SP13">&#167;13</a><br/>Text Literals - <a href="17-tl.html#SP14_2">&#167;14.2</a><br/>Text Substitutions - <a href="17-ts.html#SP12">&#167;12</a><br/>Responses - <a href="17-rs.html#SP6_1">&#167;6.1</a>, <a href="17-rs.html#SP6_2">&#167;6.2</a>, <a href="17-rs.html#SP7_2">&#167;7.2</a><br/>Table Columns - <a href="19-tc.html#SP8">&#167;8</a><br/>Runtime Support for Tables - <a href="19-rsft.html#SP2">&#167;2</a><br/>Equations - <a href="20-eq.html#SP42">&#167;42</a><br/>Rules - <a href="21-rl.html#SP20">&#167;20</a>, <a href="21-rl.html#SP22_1">&#167;22.1</a><br/>Rule Bookings - <a href="21-rb.html#SP23">&#167;23</a>, <a href="21-rb.html#SP24_1_5">&#167;24.1.5</a><br/>Rulebooks - <a href="21-rl2.html#SP14_1">&#167;14.1</a><br/>Focus and Outcome - <a href="21-fao.html#SP10">&#167;10</a><br/>Stacked Variables - <a href="21-sv.html#SP3">&#167;3</a><br/>Phrases - <a href="22-ph.html#SP13">&#167;13</a><br/>Phrases as Values - <a href="22-pav.html#SP9_2">&#167;9.2</a><br/>Chronology - <a href="24-ch.html#SP6">&#167;6</a>, <a href="24-ch.html#SP7">&#167;7</a><br/>Compile Phrases - <a href="25-cp.html#SP3">&#167;3</a><br/>List Together - <a href="26-lt.html#SP4_1">&#167;4.1</a><br/>Test Scripts - <a href="26-ts.html#SP10">&#167;10</a>, <a href="26-ts.html#SP11">&#167;11</a><br/>Use Options at Run Time - <a href="26-uoart.html#SP1_1">&#167;1.1</a>, <a href="26-uoart.html#SP1_2">&#167;1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</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">R_kind</span><span class="plain-syntax"> = </span><a href="24-lv.html#SP46" class="function-link"><span class="function-syntax">LocalVariables::deduced_function_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">currently_compiling_in_frame</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kernel_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">public_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">currently_compiling_iname</span><span class="plain-syntax">;</span>
@ -301,7 +301,7 @@ after the call parameters, and is used only as a scratch variable.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="26-rt.html#SP4">&#167;4</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="26-ct.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresssection"><a href="26-fc.html">fc</a></li><li class="progresssection"><a href="26-i6i.html">i6i</a></li><li class="progresssection"><a href="26-uo.html">uo</a></li><li class="progresssection"><a href="26-lt.html">lt</a></li><li class="progresssection"><a href="26-jl.html">jl</a></li><li class="progresssection"><a href="26-ct.html">ct</a></li><li class="progresscurrent">rt</li><li class="progresssection"><a href="26-iti.html">iti</a></li><li class="progresssection"><a href="26-pl.html">pl</a></li><li class="progresssection"><a href="26-pc.html">pc</a></li><li class="progresssection"><a href="26-ts.html">ts</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="26-iti.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="26-ct.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresssection"><a href="26-fc.html">fc</a></li><li class="progresssection"><a href="26-i6i.html">i6i</a></li><li class="progresssection"><a href="26-lt.html">lt</a></li><li class="progresssection"><a href="26-jl.html">jl</a></li><li class="progresssection"><a href="26-ct.html">ct</a></li><li class="progresscurrent">rt</li><li class="progresssection"><a href="26-iti.html">iti</a></li><li class="progresssection"><a href="26-pl.html">pl</a></li><li class="progresssection"><a href="26-pc.html">pc</a></li><li class="progresssection"><a href="26-ts.html">ts</a></li><li class="progresssection"><a href="26-uoart.html">uoart</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="26-iti.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -93,7 +93,7 @@ attached.
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">test_scenario</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure test_scenario is accessed in 2/sq, 2/si, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 22/tp, 25/cii, 25/cp, 26/uo and here.</li></ul>
<ul class="endnotetexts"><li>The structure test_scenario is accessed in 2/sq, 2/si, 4/nuor, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 22/tp, 25/cii, 25/cp, 26/uoart and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. </b></p>
<pre class="displayed-code all-displayed-code code-font">
@ -746,7 +746,7 @@ without notice.
</pre>
<ul class="endnotetexts"><li>This code is .</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="26-pc.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresssection"><a href="26-fc.html">fc</a></li><li class="progresssection"><a href="26-i6i.html">i6i</a></li><li class="progresssection"><a href="26-uo.html">uo</a></li><li class="progresssection"><a href="26-lt.html">lt</a></li><li class="progresssection"><a href="26-jl.html">jl</a></li><li class="progresssection"><a href="26-ct.html">ct</a></li><li class="progresssection"><a href="26-rt.html">rt</a></li><li class="progresssection"><a href="26-iti.html">iti</a></li><li class="progresssection"><a href="26-pl.html">pl</a></li><li class="progresssection"><a href="26-pc.html">pc</a></li><li class="progresscurrent">ts</li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="27-hr.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="26-pc.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresssection"><a href="26-fc.html">fc</a></li><li class="progresssection"><a href="26-i6i.html">i6i</a></li><li class="progresssection"><a href="26-lt.html">lt</a></li><li class="progresssection"><a href="26-jl.html">jl</a></li><li class="progresssection"><a href="26-ct.html">ct</a></li><li class="progresssection"><a href="26-rt.html">rt</a></li><li class="progresssection"><a href="26-iti.html">iti</a></li><li class="progresssection"><a href="26-pl.html">pl</a></li><li class="progresssection"><a href="26-pc.html">pc</a></li><li class="progresscurrent">ts</li><li class="progresssection"><a href="26-uoart.html">uoart</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="26-uoart.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -1,822 +0,0 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Use Options</title>
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
</script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Preform-Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
<nav role="navigation">
<h1><a href="../index.html">
<img src="../docs-assets/Inform.png" height=72">
</a></h1>
<ul><li><a href="../compiler.html">compiler tools</a></li>
<li><a href="../other.html">other tools</a></li>
<li><a href="../extensions.html">extensions and kits</a></li>
<li><a href="../units.html">unit test tools</a></li>
</ul><h2>Compiler Webs</h2><ul>
<li><a href="../inbuild/index.html">inbuild</a></li>
<li><a href="../inform7/index.html">inform7</a></li>
<li><a href="../inter/index.html">inter</a></li>
</ul><h2>Inbuild Modules</h2><ul>
<li><a href="../supervisor-module/index.html">supervisor</a></li>
</ul><h2>Inform7 Modules</h2><ul>
<li><a href="index.html"><span class="selectedlink">core</span></a></li>
<li><a href="../kinds-module/index.html">kinds</a></li>
<li><a href="../if-module/index.html">if</a></li>
<li><a href="../multimedia-module/index.html">multimedia</a></li>
<li><a href="../index-module/index.html">index</a></li>
</ul><h2>Inter Modules</h2><ul>
<li><a href="../bytecode-module/index.html">bytecode</a></li>
<li><a href="../building-module/index.html">building</a></li>
<li><a href="../codegen-module/index.html">codegen</a></li>
</ul><h2>Services</h2><ul>
<li><a href="../arch-module/index.html">arch</a></li>
<li><a href="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</a></li>
<li><a href="../html-module/index.html">html</a></li>
<li><a href="../inflections-module/index.html">inflections</a></li>
<li><a href="../linguistics-module/index.html">linguistics</a></li>
<li><a href="../problems-module/index.html">problems</a></li>
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'Use Options' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#26">Chapter 26: Compilation Utilities</a></li><li><b>Use Options</b></li></ul></div>
<p class="purpose">To control compiler settings, pragma-style.</p>
<ul class="toc"><li><a href="26-uo.html#SP1">&#167;1. Definitions</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1"></a><b>&#167;1. Definitions. </b></p>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b>The preferred way to pass "do it this way, not that way" instructions to
Inform, in the spirit of natural-language input, is not to use command-line
arguments in the shell but to write suitable sentences in the source text.
For instance:
</p>
<blockquote>
<p>Use American dialect and the serial comma.</p>
</blockquote>
<p class="commentary">Use options like "American dialect" take the place of what would be switches
like <span class="extract"><span class="extract-syntax">--american-dialect</span></span> in a conventional Unix tool. They are themselves
defined by the source text (almost always the Standard Rules). They generally
control run-time behaviour, and as a result Inform deals with them simply by
defining suitable I6 constants in the I6 code being output: conditional
compilation of the I6 template layer then delivers the desired result.
</p>
<p class="commentary">But a few use options are more analogous to compiler pragmas, changing how
Inform treats the rest of the source text. In some cases, they affect only
the source text file they come from &mdash; for example, so that an Extension can
set a use option applying only to itself.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">use_option</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">name</span><span class="plain-syntax">; </span><span class="comment-syntax"> word range where name is stored</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">option_expansion</span><span class="plain-syntax">; </span><span class="comment-syntax"> definition as given in source</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">where_used</span><span class="plain-syntax">; </span><span class="comment-syntax"> where the option is taken in the source</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">option_used</span><span class="plain-syntax">; </span><span class="comment-syntax"> set if this option has been taken</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">source_file_scoped</span><span class="plain-syntax">; </span><span class="comment-syntax"> scope is the current source file only?</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">minimum_setting_value</span><span class="plain-syntax">; </span><span class="comment-syntax"> for those which are numeric</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">use_option</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure use_option is accessed in 2/sq, 2/si, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/ts and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. </b>Five of the pragma-like settings are stored here:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">memory_economy_in_force</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">dynamic_memory_allocation</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">allow_engineering_notation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">use_exact_parsing_option</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">index_figure_thumbnails</span><span class="plain-syntax"> = </span><span class="constant-syntax">50</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">undo_prevention</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">serial_comma</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">predictable_randomisation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">command_line_echoing</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">American_dialect</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">room_description_level</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b>We can also meddle with the I6 memory settings which will be used to finish
compiling the story file. We need this because we have no practical way to
predict when our code will break I6's limits: the only reasonable way it can
work is for the user to hit the limit occasionally, and then raise that limit
by hand with a sentence in the source text.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">i6_memory_setting</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ICL_identifier</span><span class="plain-syntax">; </span><span class="comment-syntax"> see the DM4 for the I6 memory setting names</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</span><span class="plain-syntax">; </span><span class="comment-syntax"> e.g., </span><span class="extract"><span class="extract-syntax">50000</span></span><span class="comment-syntax"> means "at least 50,000"</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">i6_memory_setting</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure i6_memory_setting is private to this section.</li></ul>
<p class="commentary firstcommentary"><a id="SP5"></a><b>&#167;5. </b>Here first is the sentence handler for "Use ... means ..." sentences.
</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">UseOptions::use_translates_as_SMF</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">UseOptions::use_translates_as_SMF</span></span>:<br/>Booting Verbs - <a href="3-bv.html#SP1_3">&#167;1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NPs</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">SW</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[0]):</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">OW</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[1]):</span><span class="identifier-syntax">EMPTY_WORDING</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">task</span><span class="plain-syntax">) { </span><span class="comment-syntax"> "Use American dialect means ..."</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ACCEPT_SMFT:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;use-translates-as-sentence-subject&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">SW</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="function-syntax">&lt;np-unparsed&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">OW</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</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">TRUE</span><span class="plain-syntax">;</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">PASS_1_SMFT:</span>
<span class="plain-syntax"> </span><a href="26-uo.html#SP5" class="function-link"><span class="function-syntax">UseOptions::new_use_option</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">V</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>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UseOptions::new_use_option</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</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">&lt;use-translates-as-sentence-object&gt;(Node::get_text(p-&gt;next-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">))) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="function-syntax">&lt;use-sentence-object&gt;(Node::get_text(p-&gt;</span><span class="element-syntax">next</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">OW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax">&lt;use-sentence-object&gt;</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">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uo</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">use_option</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">OW</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">option_expansion</span><span class="plain-syntax"> = </span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">option_used</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="function-syntax">&lt;&lt;r&gt;&gt;</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;r&gt;&gt;</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> = -1;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">source_file_scoped</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="function-syntax">&lt;notable-use-option-name&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">OW</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="function-syntax">&lt;&lt;r&gt;&gt;</span><span class="plain-syntax"> == </span><span class="constant-syntax">AUTHORIAL_MODESTY_UO</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">source_file_scoped</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Nouns::new_proper_noun</span><span class="plain-syntax">(</span><span class="identifier-syntax">OW</span><span class="plain-syntax">, </span><span class="identifier-syntax">NEUTER_GENDER</span><span class="plain-syntax">, </span><span class="identifier-syntax">ADD_TO_LEXICON_NTOPT</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">MISCELLANEOUS_MC</span><span class="plain-syntax">, </span><a href="14-rv.html#SP1" class="function-link"><span class="function-syntax">Rvalues::from_use_option</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">), </span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::language_of_syntax</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP6"></a><b>&#167;6. </b>The object for such a sentence is just an I6 expansion:
</p>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;use-translates-as-sentence-subject&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">use</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;np-unparsed&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { TRUE, RP[1] }</span>
<span class="Preform-function-syntax">&lt;use-translates-as-sentence-object&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">(-</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">###</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { TRUE, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="26-uo.html#SP6_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_UseTranslatesNotI6 problem</span><span class="named-paragraph-number">6.1</span></a></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="SP6_1"></a><b>&#167;6.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_UseTranslatesNotI6 problem</span><span class="named-paragraph-number">6.1</span></span><span class="Preform-comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_UseTranslatesNotI6</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"that translates into something which isn't a simple I6 inclusion"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"placed in '(-' and '-)' markers."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> ==&gt; { </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, - };</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="26-uo.html#SP6">&#167;6</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP7"></a><b>&#167;7. </b>Having registered the use option names as miscellaneous, we need to parse
them back that way too:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">use_option</span><span class="plain-syntax"> *</span><span class="function-syntax">UseOptions::parse_uo</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">UseOptions::parse_uo</span></span>:<br/><a href="26-uo.html#SP11_1">&#167;11.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">OW</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">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lexicon::retrieve</span><span class="plain-syntax">(</span><span class="identifier-syntax">MISCELLANEOUS_MC</span><span class="plain-syntax">, </span><span class="identifier-syntax">OW</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="14-rv.html#SP19" class="function-link"><span class="function-syntax">Rvalues::is_CONSTANT_of_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_use_option</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="14-rv.html#SP2" class="function-link"><span class="function-syntax">Rvalues::to_use_option</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</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">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP8"></a><b>&#167;8. </b>"Use" sentences are simple in structure. Their object noun phrases are
articled lists:
</p>
<blockquote>
<p>Use American dialect and the serial comma.</p>
</blockquote>
<p class="commentary">Each of the entries in this list must match the following; the text of the
option name is taken from the <span class="extract"><span class="extract-syntax">...</span></span> or <span class="extract"><span class="extract-syntax">###</span></span> as appropriate:
</p>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;use-sentence-object&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">of</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">at</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">least</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;cardinal-number-unlimited&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { R[1], - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">###</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">of</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;cardinal-number-unlimited&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { -R[1], - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;definite-article&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 0, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { 0, - }</span>
<span class="Preform-function-syntax">&lt;use-inter-pipeline&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">inter</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">pipeline</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{&lt;quoted-text&gt;}</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { TRUE, - }</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"></a><b>&#167;9. </b>These are use option names which Inform provides special support for; it
recognises the English names when they are defined by the Standard Rules. (So
there is no need to translate this to other languages.)
</p>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;notable-use-option-name&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">authorial</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">modesty</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">dynamic</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">memory</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">allocation</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">memory</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">economy</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">no</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">deprecated</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">features</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">numbered</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">rules</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">telemetry</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">recordings</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">scoring</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">no</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">scoring</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">engineering</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">notation</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">unabbreviated</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">object</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">names</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">index</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">figure</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">thumbnails</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">gn</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">testing</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">version</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">undo</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">prevention</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">serial</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">comma</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">predictable</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">randomisation</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">command</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">line</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">echoing</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">american</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">dialect</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">full-length</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">room</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">descriptions</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">abbreviated</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">room</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">descriptions</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">verbose</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">room</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">descriptions</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">brief</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">room</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">descriptions</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">superbrief</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">room</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">descriptions</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="SP10"></a><b>&#167;10. </b>And these correspond to:
</p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="Preform-constant-syntax">AUTHORIAL_MODESTY_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">0</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">DYNAMIC_MEMORY_ALLOCATION_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">1</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">MEMORY_ECONOMY_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">2</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">NO_DEPRECATED_FEATURES_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">3</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">NUMBERED_RULES_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">4</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">TELEMETRY_RECORDING_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">5</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">SCORING_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">6</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">NO_SCORING_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">7</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">ENGINEERING_NOTATION_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">8</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">UNABBREVIATED_OBJECT_NAMES_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">9</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">INDEX_FIGURE_THUMBNAILS_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">10</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">GN_TESTING_VERSION_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">11</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">UNDO_PREVENTION_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">12</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">SERIAL_COMMA_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">13</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">PREDICTABLE_RANDOMISATION_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">14</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">COMMAND_LINE_ECHOING_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">15</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">AMERICAN_DIALECT_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">16</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">FULL_LENGTH_ROOM_DESCRIPTIONS_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">17</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">ABBREVIATED_ROOM_DESCRIPTIONS_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">18</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">VERBOSE_ROOM_DESCRIPTIONS_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">19</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">BRIEF_ROOM_DESCRIPTIONS_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">20</span>
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">SUPERBRIEF_ROOM_DESCRIPTIONS_UO</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">21</span>
</pre>
<p class="commentary firstcommentary"><a id="SP11"></a><b>&#167;11. </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">UseOptions::use_SMF</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">UseOptions::use_SMF</span></span>:<br/>Booting Verbs - <a href="3-bv.html#SP1_3">&#167;1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NPs</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">OW</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[1]):</span><span class="identifier-syntax">EMPTY_WORDING</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">task</span><span class="plain-syntax">) { </span><span class="comment-syntax"> "Use American dialect."</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ACCEPT_SMFT:</span>
<span class="plain-syntax"> </span><span class="function-syntax">&lt;np-articled-list&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">OW</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</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">TRUE</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">ALLOW_IN_OPTIONS_FILE_SMFT:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PASS_1_SMFT:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PASS_2_SMFT:</span>
<span class="plain-syntax"> </span><a href="26-uo.html#SP11" class="function-link"><span class="function-syntax">UseOptions::set_use_options</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</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>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UseOptions::handle_set_use_option</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="26-uo.html#SP11" class="function-link"><span class="function-syntax">UseOptions::set_use_options</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</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">UseOptions::set_use_options</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</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">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">AND_NT</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="26-uo.html#SP11" class="function-link"><span class="function-syntax">UseOptions::set_use_options</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="26-uo.html#SP11" class="function-link"><span class="function-syntax">UseOptions::set_use_options</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;use-inter-pipeline&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">))) </span><span class="named-paragraph-container code-font"><a href="26-uo.html#SP11_2" class="named-paragraph-link"><span class="named-paragraph">Set the chain given in this word range</span><span class="named-paragraph-number">11.2</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;use-sentence-object&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">))) </span><span class="named-paragraph-container code-font"><a href="26-uo.html#SP11_1" class="named-paragraph-link"><span class="named-paragraph">Set the option given in this word range</span><span class="named-paragraph-number">11.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">1</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</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">"Used: %W\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_text</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">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_UnknownUseOption</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"that isn't a 'Use' option known to me"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"and needs to be one of the ones listed in the documentation."</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP11_1"></a><b>&#167;11.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set the option given in this word range</span><span class="named-paragraph-number">11.1</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">min_setting</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="function-syntax">&lt;&lt;r&gt;&gt;</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="26-uo.html#SP11_1_2" class="named-paragraph-link"><span class="named-paragraph">Deal with the case of an I6 memory setting</span><span class="named-paragraph-number">11.1.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="function-syntax">&lt;&lt;r&gt;&gt;</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">min_setting</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;r&gt;&gt;</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">OW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax">&lt;use-sentence-object&gt;</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">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uo</span><span class="plain-syntax"> = </span><a href="26-uo.html#SP7" class="function-link"><span class="function-syntax">UseOptions::parse_uo</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OW</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">uo</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inform_extension</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="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="26-uo.html#SP11_1_1" class="named-paragraph-link"><span class="named-paragraph">Adjust the minimum setting</span><span class="named-paragraph-number">11.1.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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">source_file_scoped</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Extensions::corresponding_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">Lexer::file_of_origin</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">OW</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="comment-syntax"> that is, if used in the main source text</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">option_used</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">where_used</span><span class="plain-syntax"> = </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">option_used</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">where_used</span><span class="plain-syntax"> = </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><a href="26-uo.html#SP12" class="function-link"><span class="function-syntax">UseOptions::set_immediate_option_flags</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OW</span><span class="plain-syntax">, </span><span class="identifier-syntax">uo</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>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="26-uo.html#SP11">&#167;11</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP11_2"></a><b>&#167;11.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set the chain given in this word range</span><span class="named-paragraph-number">11.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax">&lt;use-inter-pipeline&gt;</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">global_pass_state</span><span class="plain-syntax">.</span><span class="element-syntax">pass</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">TEMPORARY_TEXT</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">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="string-syntax">"%W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CW</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::delete_first_character</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">Str::delete_last_character</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">Supervisor::set_inter_pipeline</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">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</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>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="26-uo.html#SP11">&#167;11</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP11_1_1"></a><b>&#167;11.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Adjust the minimum setting</span><span class="named-paragraph-number">11.1.1</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</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">min_setting</span><span class="plain-syntax"> != -1)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_UONotNumerical</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"that 'Use' option does not have a numerical setting"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"but is either used or not used."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">min_setting</span><span class="plain-syntax"> &gt;= </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> = </span><span class="identifier-syntax">min_setting</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="26-uo.html#SP11_1">&#167;11.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP11_1_2"></a><b>&#167;11.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Deal with the case of an I6 memory setting</span><span class="named-paragraph-number">11.1.2</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> = -</span><span class="function-syntax">&lt;&lt;r&gt;&gt;</span><span class="plain-syntax">, </span><span class="identifier-syntax">w1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">new_identifier</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">new_identifier</span><span class="plain-syntax">, </span><span class="string-syntax">"%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::one_word</span><span class="plain-syntax">(</span><span class="identifier-syntax">w1</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">new_identifier</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">63</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_BadICLIdentifier</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"that is too long to be an ICL identifier"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"so can't be the name of any I6 memory setting."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">i6_memory_setting</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ms</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">ms</span><span class="plain-syntax">, </span><span class="reserved-syntax">i6_memory_setting</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">new_identifier</span><span class="plain-syntax">, </span><span class="identifier-syntax">ms</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ICL_identifier</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">ms</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">number</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">n</span><span class="plain-syntax">) </span><span class="identifier-syntax">ms</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">number</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">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ms</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">i6_memory_setting</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ms</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ICL_identifier</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">new_identifier</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ms</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">number</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">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">new_identifier</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="26-uo.html#SP11_1">&#167;11.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP12"></a><b>&#167;12. </b>For the pragma-like UOs:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uo_being_set</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">UseOptions::set_immediate_option_flags</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">UseOptions::set_immediate_option_flags</span></span>:<br/><a href="26-uo.html#SP11_1">&#167;11.1</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">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uo</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">uo_being_set</span><span class="plain-syntax"> = </span><span class="identifier-syntax">uo</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="function-syntax">&lt;immediate-use&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP13"></a><b>&#167;13. </b>Some use options need to acted on immediately &mdash; for instance, if they're
set in the "Options.txt" file and they affect how Inform parses subsequent
sentences. The following works through a list of use options, acting on
those which need immediate action.
</p>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;immediate-use&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { lookahead }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;immediate-use-entry&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;immediate-use-tail&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;immediate-use-entry&gt;</span>
<span class="Preform-function-syntax">&lt;immediate-use-tail&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">_and</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;immediate-use&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">_,/and</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;immediate-use&gt;</span>
<span class="Preform-function-syntax">&lt;immediate-use-entry&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;notable-use-option-name&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="26-uo.html#SP13_1" class="named-paragraph-link"><span class="named-paragraph">Act on this use option immediately</span><span class="named-paragraph-number">13.1</span></a></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="SP13_1"></a><b>&#167;13.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on this use option immediately</span><span class="named-paragraph-number">13.1</span></span><span class="Preform-comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">[1]) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">AUTHORIAL_MODESTY_UO:</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-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="identifier-syntax">Extensions::corresponding_to</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Lexer::file_of_origin</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</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">E</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">Extensions::set_general_authorial_modesty</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">Extensions::set_authorial_modesty</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">break</span><span class="plain-syntax">;</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">DYNAMIC_MEMORY_ALLOCATION_UO:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">uo_being_set</span><span class="plain-syntax">) </span><span class="identifier-syntax">dynamic_memory_allocation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">uo_being_set</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</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">MEMORY_ECONOMY_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">memory_economy_in_force</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">NO_DEPRECATED_FEATURES_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">no_deprecated_features</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">NUMBERED_RULES_UO:</span><span class="plain-syntax"> </span><a href="21-rl.html#SP24" class="function-link"><span class="function-syntax">Rules::set_numbered_rules</span></a><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">TELEMETRY_RECORDING_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">telemetry_recording</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">SCORING_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">scoring_option_set</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">NO_SCORING_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">scoring_option_set</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</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">ENGINEERING_NOTATION_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">allow_engineering_notation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">UNABBREVIATED_OBJECT_NAMES_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">use_exact_parsing_option</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">INDEX_FIGURE_THUMBNAILS_UO:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">uo_being_set</span><span class="plain-syntax">) </span><span class="identifier-syntax">index_figure_thumbnails</span><span class="plain-syntax"> = </span><span class="identifier-syntax">uo_being_set</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</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">GN_TESTING_VERSION_UO:</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">UNDO_PREVENTION_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">undo_prevention</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">SERIAL_COMMA_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">serial_comma</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">PREDICTABLE_RANDOMISATION_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">predictable_randomisation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">COMMAND_LINE_ECHOING_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">command_line_echoing</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">AMERICAN_DIALECT_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">American_dialect</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</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">FULL_LENGTH_ROOM_DESCRIPTIONS_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">room_description_level</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</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">ABBREVIATED_ROOM_DESCRIPTIONS_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">room_description_level</span><span class="plain-syntax"> = </span><span class="constant-syntax">3</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">VERBOSE_ROOM_DESCRIPTIONS_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">room_description_level</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</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">BRIEF_ROOM_DESCRIPTIONS_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">room_description_level</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</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">SUPERBRIEF_ROOM_DESCRIPTIONS_UO:</span><span class="plain-syntax"> </span><span class="identifier-syntax">room_description_level</span><span class="plain-syntax"> = </span><span class="constant-syntax">3</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="26-uo.html#SP13">&#167;13</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP14"></a><b>&#167;14. </b>It's possible to configure the size of the memory allocation for the run-time
heap, on which strings, lists and stored actions sit; here's where the level
is read:
</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">UseOptions::get_dynamic_memory_allocation</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">UseOptions::get_dynamic_memory_allocation</span></span>:<br/>Runtime Support for Kinds - <a href="13-rsfk.html#SP18_1">&#167;18.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">dynamic_memory_allocation</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP15"></a><b>&#167;15. </b>This keeps the Contents page of the index from exploding:
</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">UseOptions::get_index_figure_thumbnails</span><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">index_figure_thumbnails</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP16"></a><b>&#167;16. </b>Exact parsing in the lexicon:
</p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">PARSE_EXACTLY_LEXICON_CALLBACK</span><span class="plain-syntax"> </span><a href="26-uo.html#SP16" class="function-link"><span class="function-syntax">UseOptions::parse_exactly</span></a>
</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">UseOptions::parse_exactly</span><span class="plain-syntax">(</span><span class="identifier-syntax">excerpt_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">em</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">em</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">meaning_code</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NOUN_MC</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">use_exact_parsing_option</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</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">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="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP17"></a><b>&#167;17. </b>And this is what the rest of Inform calls to find out whether a particular
pragma is set:
</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">UseOptions::uo_set_from</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">UseOptions::uo_set_from</span></span>:<br/><a href="26-uo.html#SP21">&#167;21</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">category</span><span class="plain-syntax">, </span><span class="identifier-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="identifier-syntax">source_file</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sf</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">where_used</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">Lexer::file_of_origin</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">where_used</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">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">efo</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">sf</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">Extensions::corresponding_to</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="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">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="constant-syntax">1</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">) &amp;&amp; (</span><span class="identifier-syntax">efo</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">TRUE</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="constant-syntax">2</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">TRUE</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="constant-syntax">3</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">) &amp;&amp; (</span><span class="identifier-syntax">efo</span><span class="plain-syntax"> == </span><span class="identifier-syntax">E</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</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>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP18"></a><b>&#167;18. </b>Most use options, though, take effect by causing a constant to be defined
in the I6 code, or more generally by inserting some I6.
</p>
<p class="commentary">(The flummery about memory economy is to take care of obscure bugs which
can occur if an attempt to release with an existing story file goes wrong
and problem messages must be issued.)
</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">UseOptions::compile</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">UseOptions::compile</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_5">&#167;2.5</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">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uo</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="reserved-syntax">use_option</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">option_used</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">UO</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="26-iti.html#SP1" class="function-link"><span class="function-syntax">I6T::interpret_i6t</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">UO</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Lexer::word_raw_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">option_expansion</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</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">UO</span><span class="plain-syntax">, </span><span class="string-syntax">"\n"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::intervention</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EARLY_LINK_STAGE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">UO</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP19"></a><b>&#167;19. </b>I6 memory settings need to be issued as ICL commands at the top of the I6
source code: see the DM4 for details.
</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">UseOptions::compile_icl_commands</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">UseOptions::compile_icl_commands</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::pragma</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"-s"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">i6_memory_setting</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ms</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">ms</span><span class="plain-syntax">, </span><span class="reserved-syntax">i6_memory_setting</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_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">ms</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ICL_identifier</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"MAX_LOCAL_VARIABLES"</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">TargetVMs::allow_MAX_LOCAL_VARIABLES</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::vm</span></a><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">continue</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">prag</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">prag</span><span class="plain-syntax">, </span><span class="string-syntax">"$%S=%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ms</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ICL_identifier</span><span class="plain-syntax">, </span><span class="identifier-syntax">ms</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">number</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::pragma</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prag</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">prag</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP20"></a><b>&#167;20. </b>Now for indexing, where there's nothing much to see.
</p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">MAIN_TEXT_UO_ORIGIN</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">OPTIONS_FILE_UO_ORIGIN</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">EXTENSION_UO_ORIGIN</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UseOptions::index</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">UseOptions::index</span></span>:<br/>Plugins - <a href="26-pl.html#SP12">&#167;12</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="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"The following use options are in force:"</span><span class="plain-syntax">); </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="26-uo.html#SP21" class="function-link"><span class="function-syntax">UseOptions::index_options_in_force_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">MAIN_TEXT_UO_ORIGIN</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="26-uo.html#SP21" class="function-link"><span class="function-syntax">UseOptions::index_options_in_force_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">OPTIONS_FILE_UO_ORIGIN</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">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="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">inform_extension</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="26-uo.html#SP21" class="function-link"><span class="function-syntax">UseOptions::index_options_in_force_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">EXTENSION_UO_ORIGIN</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">nt</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">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uo</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="reserved-syntax">use_option</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">source_file_scoped</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">option_used</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="identifier-syntax">nt</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">nt</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Whereas these are not in force:"</span><span class="plain-syntax">); </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="reserved-syntax">use_option</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">source_file_scoped</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">option_used</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="26-uo.html#SP20_1" class="named-paragraph-link"><span class="named-paragraph">Write in the index line for a use option not taken</span><span class="named-paragraph-number">20.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">nt</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</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="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP20_1"></a><b>&#167;20.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write in the index line for a use option not taken</span><span class="named-paragraph-number">20.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">, </span><span class="string-syntax">"style=\"white-space:nowrap\";"</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">TEMP</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">TEMP</span><span class="plain-syntax">, </span><span class="string-syntax">"Use %+W."</span><span class="plain-syntax">, </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</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">"&amp;nbsp;%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</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">"span"</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="26-uo.html#SP20">&#167;20</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP21"></a><b>&#167;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">UseOptions::index_options_in_force_from</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">UseOptions::index_options_in_force_from</span></span>:<br/><a href="26-uo.html#SP20">&#167;20</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">category</span><span class="plain-syntax">, </span><span class="identifier-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">int</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">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uo</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="reserved-syntax">use_option</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">source_file_scoped</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">option_used</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="26-uo.html#SP17" class="function-link"><span class="function-syntax">UseOptions::uo_set_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="identifier-syntax">category</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">N</span><span class="plain-syntax">++ == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="26-uo.html#SP21_1" class="named-paragraph-link"><span class="named-paragraph">Write in the use option subheading</span><span class="named-paragraph-number">21.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="26-uo.html#SP21_2" class="named-paragraph-link"><span class="named-paragraph">Write in the index line for a use option taken</span><span class="named-paragraph-number">21.2</span></a></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">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="reserved-syntax">use_option</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">source_file_scoped</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">option_used</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="26-uo.html#SP17" class="function-link"><span class="function-syntax">UseOptions::uo_set_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="identifier-syntax">category</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">N</span><span class="plain-syntax">++ == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="26-uo.html#SP21_1" class="named-paragraph-link"><span class="named-paragraph">Write in the use option subheading</span><span class="named-paragraph-number">21.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="26-uo.html#SP21_2" class="named-paragraph-link"><span class="named-paragraph">Write in the index line for a use option taken</span><span class="named-paragraph-number">21.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP21_1"></a><b>&#167;21.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write in the use option subheading</span><span class="named-paragraph-number">21.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_colour</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">"808080"</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">"Set from "</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">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">MAIN_TEXT_UO_ORIGIN:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"the source text"</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">OPTIONS_FILE_UO_ORIGIN:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"the Options.txt configuration file"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::DocReferences::link</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">"OPTIONSFILE"</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">EXTENSION_UO_ORIGIN:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Extensions::is_standard</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"the "</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"the extension "</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">E</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">edition</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">work</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">title</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="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">":"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">"p"</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="26-uo.html#SP21">&#167;21</a> (twice).</li></ul>
<p class="commentary firstcommentary"><a id="SP21_2"></a><b>&#167;21.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write in the index line for a use option taken</span><span class="named-paragraph-number">21.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</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">"Use %+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" of at least %d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">where_used</span><span class="plain-syntax">) </span><span class="identifier-syntax">Index::link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">where_used</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&amp;nbsp;"</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">TEMP</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">TEMP</span><span class="plain-syntax">, </span><span class="string-syntax">"Use %+W of at least %d."</span><span class="plain-syntax">, </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">*(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</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">"&amp;nbsp;&lt;i&gt;Double this&lt;/i&gt;"</span><span class="plain-syntax">);</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">"p"</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="26-uo.html#SP21">&#167;21</a> (twice).</li></ul>
<p class="commentary firstcommentary"><a id="SP22"></a><b>&#167;22. </b>A relatively late addition to the design of use options was to make them
values at run-time, of the kind "use option". We need to provide two routines:
one to test them, one to print them.
</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">UseOptions::TestUseOption_routine</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">UseOptions::TestUseOption_routine</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">NO_USE_OPTIONS_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::named_numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">NUMBER_CREATED</span><span class="plain-syntax">(</span><span class="reserved-syntax">use_option</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="26-uo.html#SP22_1" class="named-paragraph-link"><span class="named-paragraph">Compile the TestUseOption routine</span><span class="named-paragraph-number">22.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="26-uo.html#SP22_2" class="named-paragraph-link"><span class="named-paragraph">Compile the PrintUseOption routine</span><span class="named-paragraph-number">22.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP22_1"></a><b>&#167;22.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the TestUseOption routine</span><span class="named-paragraph-number">22.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><a href="26-rt.html#SP1" class="function-link"><span class="function-syntax">Routines::begin</span></a><span class="plain-syntax">(</span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TESTUSEOPTION_HL</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">UO_s</span><span class="plain-syntax"> = </span><a href="24-lv.html#SP11" class="function-link"><span class="function-syntax">LocalVariables::add_named_call_as_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"UO"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uo</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="reserved-syntax">use_option</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">option_used</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">IF_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">EQ_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_symbol</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">UO_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::code</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::rtrue</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::rfalse</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><a href="26-rt.html#SP4" class="function-link"><span class="function-syntax">Routines::end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="26-uo.html#SP22">&#167;22</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP22_2"></a><b>&#167;22.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the PrintUseOption routine</span><span class="named-paragraph-number">22.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::Behaviour::get_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_use_option</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><a href="26-rt.html#SP1" class="function-link"><span class="function-syntax">Routines::begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">UO_s</span><span class="plain-syntax"> = </span><a href="24-lv.html#SP11" class="function-link"><span class="function-syntax">LocalVariables::add_named_call_as_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"UO"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">SWITCH_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_symbol</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">UO_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::code</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uo</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="reserved-syntax">use_option</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">CASE_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::code</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">PRINT_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><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">N</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">N</span><span class="plain-syntax">, </span><span class="string-syntax">"%W option"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="string-syntax">" [%d]"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_text</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><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">DISCARD_TEXT</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">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><a href="26-rt.html#SP4" class="function-link"><span class="function-syntax">Routines::end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="26-uo.html#SP22">&#167;22</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP23"></a><b>&#167;23. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">no_verb_verb_exists</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_author_given</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ranking_table_given</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">scoring_option_set</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NOT_APPLICABLE</span><span class="plain-syntax">; </span><span class="comment-syntax"> Whether in this case a score is kept at run time</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">no_deprecated_features</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="comment-syntax"> forbid syntaxes marked as deprecated?</span>
</pre>
<p class="commentary firstcommentary"><a id="SP24"></a><b>&#167;24. </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">UseOptions::no_verb_verb</span><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">no_verb_verb_exists</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">UseOptions::story_author_given</span><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">story_author_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">void</span><span class="plain-syntax"> </span><span class="function-syntax">UseOptions::ranking_table_given</span><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">ranking_table_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">void</span><span class="plain-syntax"> </span><span class="function-syntax">UseOptions::configure_template</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">UseOptions::configure_template</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">bitmap</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">scoring_option_set</span><span class="plain-syntax"> == </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">) </span><span class="identifier-syntax">bitmap</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">undo_prevention</span><span class="plain-syntax">) </span><span class="identifier-syntax">bitmap</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="identifier-syntax">serial_comma</span><span class="plain-syntax">) </span><span class="identifier-syntax">bitmap</span><span class="plain-syntax"> += </span><span class="constant-syntax">4</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">predictable_randomisation</span><span class="plain-syntax">) </span><span class="identifier-syntax">bitmap</span><span class="plain-syntax"> += </span><span class="constant-syntax">16</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">command_line_echoing</span><span class="plain-syntax">) </span><span class="identifier-syntax">bitmap</span><span class="plain-syntax"> += </span><span class="constant-syntax">32</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">no_verb_verb_exists</span><span class="plain-syntax">) </span><span class="identifier-syntax">bitmap</span><span class="plain-syntax"> += </span><span class="constant-syntax">64</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">American_dialect</span><span class="plain-syntax">) </span><span class="identifier-syntax">bitmap</span><span class="plain-syntax"> += </span><span class="constant-syntax">128</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">story_author_given</span><span class="plain-syntax">) </span><span class="identifier-syntax">bitmap</span><span class="plain-syntax"> += </span><span class="constant-syntax">256</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">ranking_table_given</span><span class="plain-syntax">) </span><span class="identifier-syntax">bitmap</span><span class="plain-syntax"> += </span><span class="constant-syntax">512</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TEMPLATE_CONFIGURATION_BITMAP_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::named_numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">bitmap</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TEMPLATE_CONFIGURATION_LOOKMODE_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::named_numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">room_description_level</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="26-i6i.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresssection"><a href="26-fc.html">fc</a></li><li class="progresssection"><a href="26-i6i.html">i6i</a></li><li class="progresscurrent">uo</li><li class="progresssection"><a href="26-lt.html">lt</a></li><li class="progresssection"><a href="26-jl.html">jl</a></li><li class="progresssection"><a href="26-ct.html">ct</a></li><li class="progresssection"><a href="26-rt.html">rt</a></li><li class="progresssection"><a href="26-iti.html">iti</a></li><li class="progresssection"><a href="26-pl.html">pl</a></li><li class="progresssection"><a href="26-pc.html">pc</a></li><li class="progresssection"><a href="26-ts.html">ts</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="26-lt.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

View file

@ -0,0 +1,216 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Use Options at Run Time</title>
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
</script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
<nav role="navigation">
<h1><a href="../index.html">
<img src="../docs-assets/Inform.png" height=72">
</a></h1>
<ul><li><a href="../compiler.html">compiler tools</a></li>
<li><a href="../other.html">other tools</a></li>
<li><a href="../extensions.html">extensions and kits</a></li>
<li><a href="../units.html">unit test tools</a></li>
</ul><h2>Compiler Webs</h2><ul>
<li><a href="../inbuild/index.html">inbuild</a></li>
<li><a href="../inform7/index.html">inform7</a></li>
<li><a href="../inter/index.html">inter</a></li>
</ul><h2>Inbuild Modules</h2><ul>
<li><a href="../supervisor-module/index.html">supervisor</a></li>
</ul><h2>Inform7 Modules</h2><ul>
<li><a href="index.html"><span class="selectedlink">core</span></a></li>
<li><a href="../kinds-module/index.html">kinds</a></li>
<li><a href="../if-module/index.html">if</a></li>
<li><a href="../multimedia-module/index.html">multimedia</a></li>
<li><a href="../index-module/index.html">index</a></li>
</ul><h2>Inter Modules</h2><ul>
<li><a href="../bytecode-module/index.html">bytecode</a></li>
<li><a href="../building-module/index.html">building</a></li>
<li><a href="../codegen-module/index.html">codegen</a></li>
</ul><h2>Services</h2><ul>
<li><a href="../arch-module/index.html">arch</a></li>
<li><a href="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</a></li>
<li><a href="../html-module/index.html">html</a></li>
<li><a href="../inflections-module/index.html">inflections</a></li>
<li><a href="../linguistics-module/index.html">linguistics</a></li>
<li><a href="../problems-module/index.html">problems</a></li>
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'Use Options at Run Time' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#26">Chapter 26: Compilation Utilities</a></li><li><b>Use Options at Run Time</b></li></ul></div>
<p class="purpose">To give certain use options a presence at run-time.</p>
<p class="commentary firstcommentary"><a id="SP1"></a><b>&#167;1. </b>A relatively late addition to the design of use options was to make them
values at run-time, of the kind "use option". We need to provide two routines:
one to test them, one to print them.
</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">RTUseOptions::TestUseOption_routine</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">RTUseOptions::TestUseOption_routine</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">NO_USE_OPTIONS_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::named_numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">NUMBER_CREATED</span><span class="plain-syntax">(</span><span class="reserved-syntax">use_option</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="26-uoart.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Compile the TestUseOption routine</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="26-uoart.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Compile the PrintUseOption routine</span><span class="named-paragraph-number">1.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP1_1"></a><b>&#167;1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the TestUseOption routine</span><span class="named-paragraph-number">1.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><a href="26-rt.html#SP1" class="function-link"><span class="function-syntax">Routines::begin</span></a><span class="plain-syntax">(</span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TESTUSEOPTION_HL</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">UO_s</span><span class="plain-syntax"> = </span><a href="24-lv.html#SP11" class="function-link"><span class="function-syntax">LocalVariables::add_named_call_as_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"UO"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uo</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="reserved-syntax">use_option</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">option_used</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">IF_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">EQ_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_symbol</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">UO_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::code</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::rtrue</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::rfalse</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><a href="26-rt.html#SP4" class="function-link"><span class="function-syntax">Routines::end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="26-uoart.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2"></a><b>&#167;1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the PrintUseOption routine</span><span class="named-paragraph-number">1.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::Behaviour::get_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_use_option</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><a href="26-rt.html#SP1" class="function-link"><span class="function-syntax">Routines::begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">UO_s</span><span class="plain-syntax"> = </span><a href="24-lv.html#SP11" class="function-link"><span class="function-syntax">LocalVariables::add_named_call_as_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"UO"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">SWITCH_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_symbol</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">UO_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::code</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uo</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="reserved-syntax">use_option</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">CASE_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::code</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">PRINT_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><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">N</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">N</span><span class="plain-syntax">, </span><span class="string-syntax">"%W option"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="string-syntax">" [%d]"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_text</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><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">DISCARD_TEXT</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">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
<span class="plain-syntax"> </span><a href="26-rt.html#SP4" class="function-link"><span class="function-syntax">Routines::end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="26-uoart.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b>And we also compile constants. The aim of all of this is to enable Inter
kits for the model world to operate without conditional compilation, which
would make them harder to precompile.
</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">RTUseOptions::configure_template</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">RTUseOptions::configure_template</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">bitmap</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">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">scoring_option_set</span><span class="plain-syntax"> == </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">) </span><span class="identifier-syntax">bitmap</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">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">undo_prevention</span><span class="plain-syntax">) </span><span class="identifier-syntax">bitmap</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="identifier-syntax">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">serial_comma</span><span class="plain-syntax">) </span><span class="identifier-syntax">bitmap</span><span class="plain-syntax"> += </span><span class="constant-syntax">4</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_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">predictable_randomisation</span><span class="plain-syntax">) </span><span class="identifier-syntax">bitmap</span><span class="plain-syntax"> += </span><span class="constant-syntax">16</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_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">command_line_echoing</span><span class="plain-syntax">) </span><span class="identifier-syntax">bitmap</span><span class="plain-syntax"> += </span><span class="constant-syntax">32</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_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">no_verb_verb_exists</span><span class="plain-syntax">) </span><span class="identifier-syntax">bitmap</span><span class="plain-syntax"> += </span><span class="constant-syntax">64</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_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">American_dialect</span><span class="plain-syntax">) </span><span class="identifier-syntax">bitmap</span><span class="plain-syntax"> += </span><span class="constant-syntax">128</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_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">story_author_given</span><span class="plain-syntax">) </span><span class="identifier-syntax">bitmap</span><span class="plain-syntax"> += </span><span class="constant-syntax">256</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_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">ranking_table_given</span><span class="plain-syntax">) </span><span class="identifier-syntax">bitmap</span><span class="plain-syntax"> += </span><span class="constant-syntax">512</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TEMPLATE_CONFIGURATION_BITMAP_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::named_numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">bitmap</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TEMPLATE_CONFIGURATION_LOOKMODE_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::named_numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">room_description_level</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="27-hr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><a href="27-em.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. </b>Most use options take effect by causing a constant to be defined:
</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">RTUseOptions::compile</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">RTUseOptions::compile</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_5">&#167;2.5</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">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uo</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="reserved-syntax">use_option</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">option_used</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">UO</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="26-iti.html#SP1" class="function-link"><span class="function-syntax">I6T::interpret_i6t</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">UO</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Lexer::word_raw_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">expansion</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</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">UO</span><span class="plain-syntax">, </span><span class="string-syntax">"\n"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::intervention</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EARLY_LINK_STAGE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">UO</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b>I6 memory settings need to be issued as ICL commands at the top of the I6
source code: see the DM4 for details.
</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">RTUseOptions::compile_pragmas</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">RTUseOptions::compile_pragmas</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_8">&#167;2.8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::pragma</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"-s"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">i6_memory_setting</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ms</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">ms</span><span class="plain-syntax">, </span><span class="reserved-syntax">i6_memory_setting</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_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">ms</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ICL_identifier</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"MAX_LOCAL_VARIABLES"</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">TargetVMs::allow_MAX_LOCAL_VARIABLES</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::vm</span></a><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">continue</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">prag</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">prag</span><span class="plain-syntax">, </span><span class="string-syntax">"$%S=%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ms</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ICL_identifier</span><span class="plain-syntax">, </span><span class="identifier-syntax">ms</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">number</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="27-em.html#SP3" class="function-link"><span class="function-syntax">Emit::pragma</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prag</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">prag</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="26-ts.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresscurrentchapter">26</li><li class="progresssection"><a href="26-fc.html">fc</a></li><li class="progresssection"><a href="26-i6i.html">i6i</a></li><li class="progresssection"><a href="26-lt.html">lt</a></li><li class="progresssection"><a href="26-jl.html">jl</a></li><li class="progresssection"><a href="26-ct.html">ct</a></li><li class="progresssection"><a href="26-rt.html">rt</a></li><li class="progresssection"><a href="26-iti.html">iti</a></li><li class="progresssection"><a href="26-pl.html">pl</a></li><li class="progresssection"><a href="26-pc.html">pc</a></li><li class="progresssection"><a href="26-ts.html">ts</a></li><li class="progresscurrent">uoart</li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="27-hr.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -175,8 +175,8 @@ be a single word, and are hyphenated.
<span class="plain-syntax"> </span><span class="identifier-syntax">meaning_of_mean</span><span class="plain-syntax"> = </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="7-nv.html#SP14" class="function-link"><span class="function-syntax">NewVerbs::verb_means_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"verb-means"</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="6-lp.html#SP31" class="function-link"><span class="function-syntax">LiteralPatterns::specifies_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"specifies-notation"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="26-uo.html#SP5" class="function-link"><span class="function-syntax">UseOptions::use_translates_as_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"use-translates"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="26-uo.html#SP11" class="function-link"><span class="function-syntax">UseOptions::use_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"use"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="4-nuor.html#SP3" class="function-link"><span class="function-syntax">NewUseOptions::use_translates_as_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"use-translates"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="4-uor.html#SP1" class="function-link"><span class="function-syntax">UseOptions::use_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"use"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="4-dlr.html#SP2" class="function-link"><span class="function-syntax">Sentences::DLRs::include_in_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"include-in"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="4-dlr.html#SP2" class="function-link"><span class="function-syntax">Sentences::DLRs::omit_from_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"omit-from"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>

View file

@ -116,7 +116,7 @@ but saves a deal of passing parameters around.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pass</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-ptmn.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Extend the pass to sentences needed when implicit kinds are set</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>The structure pass_state is accessed in 3/ar, 4/tr, 5/ma, 5/ass, 19/tod, 22/pav, 26/uo and here.</li></ul>
<ul class="endnotetexts"><li>The structure pass_state is accessed in 3/ar, 4/tr, 4/uor, 5/ma, 5/ass, 19/tod, 22/pav and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_1"></a><b>&#167;2.1. </b>Here's a tricky timing problem, or rather, here's the fix for it. Assemblies
are made when the kinds of objects are set, and they're made by inserting
appropriate sentences. For instance, given the generalisation:

View file

@ -178,7 +178,7 @@ modifiers and a pointer to a Preform nonterminal if one has been named.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-ar.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">dlr</li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-pr.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="3-ar.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">dlr</li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-pr.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -0,0 +1,391 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>New Use Option Requests</title>
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script src="http://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ=" crossorigin="anonymous"></script>
<script src="../docs-assets/Bigfoot.js"></script>
<link href="../docs-assets/Bigfoot.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
</script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Preform-Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
<nav role="navigation">
<h1><a href="../index.html">
<img src="../docs-assets/Inform.png" height=72">
</a></h1>
<ul><li><a href="../compiler.html">compiler tools</a></li>
<li><a href="../other.html">other tools</a></li>
<li><a href="../extensions.html">extensions and kits</a></li>
<li><a href="../units.html">unit test tools</a></li>
</ul><h2>Compiler Webs</h2><ul>
<li><a href="../inbuild/index.html">inbuild</a></li>
<li><a href="../inform7/index.html">inform7</a></li>
<li><a href="../inter/index.html">inter</a></li>
</ul><h2>Inbuild Modules</h2><ul>
<li><a href="../supervisor-module/index.html">supervisor</a></li>
</ul><h2>Inform7 Modules</h2><ul>
<li><a href="index.html"><span class="selectedlink">core</span></a></li>
<li><a href="../kinds-module/index.html">kinds</a></li>
<li><a href="../if-module/index.html">if</a></li>
<li><a href="../multimedia-module/index.html">multimedia</a></li>
<li><a href="../index-module/index.html">index</a></li>
</ul><h2>Inter Modules</h2><ul>
<li><a href="../bytecode-module/index.html">bytecode</a></li>
<li><a href="../building-module/index.html">building</a></li>
<li><a href="../codegen-module/index.html">codegen</a></li>
</ul><h2>Services</h2><ul>
<li><a href="../arch-module/index.html">arch</a></li>
<li><a href="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</a></li>
<li><a href="../html-module/index.html">html</a></li>
<li><a href="../inflections-module/index.html">inflections</a></li>
<li><a href="../linguistics-module/index.html">linguistics</a></li>
<li><a href="../problems-module/index.html">problems</a></li>
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'New Use Option Requests' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#4">Chapter 4: Assertions with Special Meanings</a></li><li><b>New Use Option Requests</b></li></ul></div>
<p class="purpose">Special sentences for creating new use options.</p>
<p class="commentary firstcommentary"><a id="SP1"></a><b>&#167;1. </b>Use options in Inform are akin to <span class="extract"><span class="extract-syntax">#pragma</span></span> directives for the C family of
compilers: they are written in the source code of the program being compiled,
but they're not really part of that program, and are instead instructions to
the compiler to do something in a different way.<sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup>
</p>
<p class="commentary">Use options have natural-language names, and are created with sentences like:
</p>
<blockquote>
<p>Use American dialect translates as (- Constant DIALECT_US; -).</p>
</blockquote>
<p class="commentary">This syntax is now rather odd-looking, but most users never need it: it's used
mainly in the Basic Inform extension to create the standard set of use options.
Note the Inform 6 notation used for the Inter code between the <span class="extract"><span class="extract-syntax">(-</span></span> and <span class="extract"><span class="extract-syntax">-)</span></span>
brackets.
</p>
<ul class="footnotetexts"><li class="footnote" id="fn:1"><p class="inwebfootnote"><sup id="fnref:1"><a href="#fn:1" rel="footnote">1</a></sup> The design of use options is arguably more muddled, because they do not all
correspond to compiler features: some affect the behaviour of Inter kits, and
some can be user-defined entirely.
<a href="#fnref:1" title="return to text"> &#x21A9;</a></p></li></ul>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b>A "... translates as ..." sentence has this special meaning if its SP and
OP match the following:
</p>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;use-translates-as-sentence-subject&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">use</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;np-unparsed&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { TRUE, RP[1] }</span>
<span class="Preform-function-syntax">&lt;use-translates-as-sentence-object&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">(-</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">###</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { -, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nuor.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_UseTranslatesNotI6 problem</span><span class="named-paragraph-number">2.1</span></a></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="SP2_1"></a><b>&#167;2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_UseTranslatesNotI6 problem</span><span class="named-paragraph-number">2.1</span></span><span class="Preform-comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><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">PM_UseTranslatesNotI6</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"that translates into something which isn't a simple Inter inclusion"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"placed in '(-' and '-)' markers."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> ==&gt; { </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, - };</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nuor.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. </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">NewUseOptions::use_translates_as_SMF</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">NewUseOptions::use_translates_as_SMF</span></span>:<br/>Booting Verbs - <a href="3-bv.html#SP1_3">&#167;1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NPs</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">SW</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[0]):</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">OW</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[1]):</span><span class="identifier-syntax">EMPTY_WORDING</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">task</span><span class="plain-syntax">) { </span><span class="comment-syntax"> "Use American dialect means ..."</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ACCEPT_SMFT:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="function-syntax">&lt;use-translates-as-sentence-object&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">OW</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="function-syntax">&lt;use-translates-as-sentence-subject&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">SW</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="function-syntax">&lt;np-unparsed&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">OW</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</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">TRUE</span><span class="plain-syntax">;</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">PASS_1_SMFT:</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nuor.html#SP3_2" class="named-paragraph-link"><span class="named-paragraph">Create a new use option</span><span class="named-paragraph-number">3.2</span></a></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>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3_1"></a><b>&#167;3.1. </b>Use options correspond to instances of the following:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">use_option</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">name</span><span class="plain-syntax">; </span><span class="comment-syntax"> word range where name is stored</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">expansion</span><span class="plain-syntax">; </span><span class="comment-syntax"> definition as given in source</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">where_used</span><span class="plain-syntax">; </span><span class="comment-syntax"> where the option is taken in the source</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">option_used</span><span class="plain-syntax">; </span><span class="comment-syntax"> set if this option has been taken</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">source_file_scoped</span><span class="plain-syntax">; </span><span class="comment-syntax"> scope is the current source file only?</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">minimum_setting_value</span><span class="plain-syntax">; </span><span class="comment-syntax"> for those which are numeric</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">notable_option_code</span><span class="plain-syntax">; </span><span class="comment-syntax"> or negative if not notable</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">use_option</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure use_option is accessed in 2/sq, 2/si, 5/ma, 5/pk, 6/ins, 6/nv, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/ts, 26/uoart and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_2"></a><b>&#167;3.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create a new use option</span><span class="named-paragraph-number">3.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">SP</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">-&gt;</span><span class="element-syntax">next</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">OP</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">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="function-syntax">&lt;use-setting&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">SP</span><span class="plain-syntax">); </span><span class="comment-syntax"> always passes</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="function-syntax">&lt;&lt;r&gt;&gt;</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uo</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">use_option</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax">&lt;use-setting&gt;</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">expansion</span><span class="plain-syntax"> = </span><span class="identifier-syntax">OP</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">option_used</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) ? </span><span class="identifier-syntax">N</span><span class="plain-syntax"> : -1;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">source_file_scoped</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">notable_option_code</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="function-syntax">&lt;notable-use-option-name&gt;(uo-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax">)) </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">notable_option_code</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;r&gt;&gt;</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">notable_option_code</span><span class="plain-syntax"> == </span><span class="constant-syntax">AUTHORIAL_MODESTY_UO</span><span class="plain-syntax">) </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">source_file_scoped</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Nouns::new_proper_noun</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">NEUTER_GENDER</span><span class="plain-syntax">, </span><span class="identifier-syntax">ADD_TO_LEXICON_NTOPT</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">MISCELLANEOUS_MC</span><span class="plain-syntax">, </span><a href="14-rv.html#SP1" class="function-link"><span class="function-syntax">Rvalues::from_use_option</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">), </span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::language_of_syntax</span></a><span class="plain-syntax">());</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nuor.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b>Having registered the use option names as miscellaneous, we need to parse
them back that way too:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">use_option</span><span class="plain-syntax"> *</span><span class="function-syntax">NewUseOptions::parse_uo</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">NewUseOptions::parse_uo</span></span>:<br/>Use Options - <a href="4-uor.html#SP2_2_3">&#167;2.2.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">OW</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">p</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lexicon::retrieve</span><span class="plain-syntax">(</span><span class="identifier-syntax">MISCELLANEOUS_MC</span><span class="plain-syntax">, </span><span class="identifier-syntax">OW</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="14-rv.html#SP19" class="function-link"><span class="function-syntax">Rvalues::is_CONSTANT_of_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_use_option</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="14-rv.html#SP2" class="function-link"><span class="function-syntax">Rvalues::to_use_option</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</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">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP5"></a><b>&#167;5. </b>The following sets an option.
</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">NewUseOptions::set</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">NewUseOptions::set</span></span>:<br/>Use Options - <a href="4-uor.html#SP2_2_3">&#167;2.2.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">min_setting</span><span class="plain-syntax">, </span><span class="identifier-syntax">source_file</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</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">min_setting</span><span class="plain-syntax"> != -1)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_UONotNumerical</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"that 'Use' option does not have a numerical setting"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"but is either used or not used."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">min_setting</span><span class="plain-syntax"> &gt;= </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> = </span><span class="identifier-syntax">min_setting</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">source_file_scoped</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Extensions::corresponding_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</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="comment-syntax"> that is, if used in the main source text</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">option_used</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">where_used</span><span class="plain-syntax"> = </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">option_used</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">where_used</span><span class="plain-syntax"> = </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><a href="1-cs.html#SP5" class="function-link"><span class="function-syntax">CompilationSettings::set</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">notable_option_code</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP6"></a><b>&#167;6. </b>And this is what the rest of Inform calls to find out whether a particular
pragma is set:
</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">NewUseOptions::uo_set_from</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">NewUseOptions::uo_set_from</span></span>:<br/><a href="4-nuor.html#SP10">&#167;10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">category</span><span class="plain-syntax">, </span><span class="identifier-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="identifier-syntax">source_file</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sf</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">where_used</span><span class="plain-syntax">)?</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">Lexer::file_of_origin</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">where_used</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">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">efo</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">sf</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">Extensions::corresponding_to</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="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">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="constant-syntax">1</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">) &amp;&amp; (</span><span class="identifier-syntax">efo</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">TRUE</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="constant-syntax">2</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">TRUE</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="constant-syntax">3</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">) &amp;&amp; (</span><span class="identifier-syntax">efo</span><span class="plain-syntax"> == </span><span class="identifier-syntax">E</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</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>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP7"></a><b>&#167;7. </b>We can also meddle with the I6 memory settings which will be used to finish
compiling the story file. We need this because we have no practical way to
predict when our code will break I6's limits: the only reasonable way it can
work is for the user to hit the limit occasionally, and then raise that limit
by hand with a sentence in the source text.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">i6_memory_setting</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ICL_identifier</span><span class="plain-syntax">; </span><span class="comment-syntax"> see the DM4 for the I6 memory setting names</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">number</span><span class="plain-syntax">; </span><span class="comment-syntax"> e.g., </span><span class="extract"><span class="extract-syntax">50000</span></span><span class="comment-syntax"> means "at least 50,000"</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">i6_memory_setting</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure i6_memory_setting is accessed in 26/uoart and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP8"></a><b>&#167;8. </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">NewUseOptions::memory_setting</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">NewUseOptions::memory_setting</span></span>:<br/>Use Options - <a href="4-uor.html#SP2_2_2">&#167;2.2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">identifier</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">i6_memory_setting</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ms</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">ms</span><span class="plain-syntax">, </span><span class="reserved-syntax">i6_memory_setting</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">identifier</span><span class="plain-syntax">, </span><span class="identifier-syntax">ms</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ICL_identifier</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">ms</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">number</span><span class="plain-syntax"> &lt; </span><span class="identifier-syntax">n</span><span class="plain-syntax">) </span><span class="identifier-syntax">ms</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">number</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">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ms</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">i6_memory_setting</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ms</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">ICL_identifier</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ms</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">number</span><span class="plain-syntax"> = </span><span class="identifier-syntax">n</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP9"></a><b>&#167;9. </b>Now for indexing, where there's nothing much to see.
</p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">MAIN_TEXT_UO_ORIGIN</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">OPTIONS_FILE_UO_ORIGIN</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span>
<span class="definition-keyword">define</span> <span class="constant-syntax">EXTENSION_UO_ORIGIN</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">NewUseOptions::index</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">NewUseOptions::index</span></span>:<br/>Plugins - <a href="26-pl.html#SP12">&#167;12</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="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"The following use options are in force:"</span><span class="plain-syntax">); </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="4-nuor.html#SP10" class="function-link"><span class="function-syntax">NewUseOptions::index_options_in_force_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">MAIN_TEXT_UO_ORIGIN</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="4-nuor.html#SP10" class="function-link"><span class="function-syntax">NewUseOptions::index_options_in_force_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">OPTIONS_FILE_UO_ORIGIN</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">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="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">inform_extension</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="4-nuor.html#SP10" class="function-link"><span class="function-syntax">NewUseOptions::index_options_in_force_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">EXTENSION_UO_ORIGIN</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">nt</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">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uo</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="reserved-syntax">use_option</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">source_file_scoped</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">option_used</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="identifier-syntax">nt</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">nt</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Whereas these are not in force:"</span><span class="plain-syntax">); </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="reserved-syntax">use_option</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">source_file_scoped</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">option_used</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-nuor.html#SP9_1" class="named-paragraph-link"><span class="named-paragraph">Write in the index line for a use option not taken</span><span class="named-paragraph-number">9.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">nt</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</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="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP9_1"></a><b>&#167;9.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write in the index line for a use option not taken</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">
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">, </span><span class="string-syntax">"style=\"white-space:nowrap\";"</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">TEMP</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">TEMP</span><span class="plain-syntax">, </span><span class="string-syntax">"Use %+W."</span><span class="plain-syntax">, </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</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">"&amp;nbsp;%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</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">"span"</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nuor.html#SP9">&#167;9</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP10"></a><b>&#167;10. </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">NewUseOptions::index_options_in_force_from</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">NewUseOptions::index_options_in_force_from</span></span>:<br/><a href="4-nuor.html#SP9">&#167;9</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">category</span><span class="plain-syntax">, </span><span class="identifier-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">int</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">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uo</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="reserved-syntax">use_option</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">source_file_scoped</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">option_used</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="4-nuor.html#SP6" class="function-link"><span class="function-syntax">NewUseOptions::uo_set_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="identifier-syntax">category</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">N</span><span class="plain-syntax">++ == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="4-nuor.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">Write in the use option subheading</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="4-nuor.html#SP10_2" class="named-paragraph-link"><span class="named-paragraph">Write in the index line for a use option taken</span><span class="named-paragraph-number">10.2</span></a></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">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="reserved-syntax">use_option</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">source_file_scoped</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">option_used</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">)) &amp;&amp;</span>
<span class="plain-syntax"> (</span><a href="4-nuor.html#SP6" class="function-link"><span class="function-syntax">NewUseOptions::uo_set_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="identifier-syntax">category</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">N</span><span class="plain-syntax">++ == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="4-nuor.html#SP10_1" class="named-paragraph-link"><span class="named-paragraph">Write in the use option subheading</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="4-nuor.html#SP10_2" class="named-paragraph-link"><span class="named-paragraph">Write in the index line for a use option taken</span><span class="named-paragraph-number">10.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP10_1"></a><b>&#167;10.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write in the use option subheading</span><span class="named-paragraph-number">10.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_colour</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">"808080"</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">"Set from "</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">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">MAIN_TEXT_UO_ORIGIN:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"the source text"</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">OPTIONS_FILE_UO_ORIGIN:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"the Options.txt configuration file"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::DocReferences::link</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">"OPTIONSFILE"</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">EXTENSION_UO_ORIGIN:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Extensions::is_standard</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"the "</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"the extension "</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">E</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">edition</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">work</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">title</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="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">":"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">"p"</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nuor.html#SP10">&#167;10</a> (twice).</li></ul>
<p class="commentary firstcommentary"><a id="SP10_2"></a><b>&#167;10.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write in the index line for a use option taken</span><span class="named-paragraph-number">10.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</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">"Use %+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" of at least %d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">where_used</span><span class="plain-syntax">) </span><span class="identifier-syntax">Index::link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">where_used</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">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&amp;nbsp;"</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">TEMP</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">TEMP</span><span class="plain-syntax">, </span><span class="string-syntax">"Use %+W of at least %d."</span><span class="plain-syntax">, </span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">*(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">minimum_setting_value</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">PasteButtons::paste_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</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">"&amp;nbsp;&lt;i&gt;Double this&lt;/i&gt;"</span><span class="plain-syntax">);</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">"p"</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-nuor.html#SP10">&#167;10</a> (twice).</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-tr.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresscurrent">nuor</li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-uor.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

View file

@ -143,7 +143,7 @@ text anyway, so the following problem messages are not too gratuitous.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-pr.html#SP2">&#167;2</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-dlr.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresscurrent">pr</li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-tr.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-dlr.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresscurrent">pr</li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-tr.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -460,7 +460,7 @@ will be required to pass <span class="extract"><span class="extract-syntax">&lt;
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;r&gt;&gt;</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">response_message</span><span class="plain-syntax"> *</span><span class="identifier-syntax">resp</span><span class="plain-syntax"> = </span><a href="17-rs.html#SP5" class="function-link"><span class="function-syntax">Strings::response_cue</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">code</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_text</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="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP26" class="function-link"><span class="function-syntax">Rules::now_rule_defines_response</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">code</span><span class="plain-syntax">, </span><span class="identifier-syntax">resp</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="21-rl.html#SP25" class="function-link"><span class="function-syntax">Rules::now_rule_defines_response</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">code</span><span class="plain-syntax">, </span><span class="identifier-syntax">resp</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><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">PM_I6ResponsesAwry</span><span class="plain-syntax">),</span>
@ -507,7 +507,7 @@ will be required to pass <span class="extract"><span class="extract-syntax">&lt;
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-tr.html#SP7">&#167;7</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-pr.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresscurrent">tr</li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="5-ita.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-pr.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresscurrent">tr</li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresssection"><a href="4-uor.html">uor</a></li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="4-nuor.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

214
docs/core-module/4-uor.html Normal file
View file

@ -0,0 +1,214 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Use Options</title>
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
</script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Preform-Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
<nav role="navigation">
<h1><a href="../index.html">
<img src="../docs-assets/Inform.png" height=72">
</a></h1>
<ul><li><a href="../compiler.html">compiler tools</a></li>
<li><a href="../other.html">other tools</a></li>
<li><a href="../extensions.html">extensions and kits</a></li>
<li><a href="../units.html">unit test tools</a></li>
</ul><h2>Compiler Webs</h2><ul>
<li><a href="../inbuild/index.html">inbuild</a></li>
<li><a href="../inform7/index.html">inform7</a></li>
<li><a href="../inter/index.html">inter</a></li>
</ul><h2>Inbuild Modules</h2><ul>
<li><a href="../supervisor-module/index.html">supervisor</a></li>
</ul><h2>Inform7 Modules</h2><ul>
<li><a href="index.html"><span class="selectedlink">core</span></a></li>
<li><a href="../kinds-module/index.html">kinds</a></li>
<li><a href="../if-module/index.html">if</a></li>
<li><a href="../multimedia-module/index.html">multimedia</a></li>
<li><a href="../index-module/index.html">index</a></li>
</ul><h2>Inter Modules</h2><ul>
<li><a href="../bytecode-module/index.html">bytecode</a></li>
<li><a href="../building-module/index.html">building</a></li>
<li><a href="../codegen-module/index.html">codegen</a></li>
</ul><h2>Services</h2><ul>
<li><a href="../arch-module/index.html">arch</a></li>
<li><a href="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</a></li>
<li><a href="../html-module/index.html">html</a></li>
<li><a href="../inflections-module/index.html">inflections</a></li>
<li><a href="../linguistics-module/index.html">linguistics</a></li>
<li><a href="../problems-module/index.html">problems</a></li>
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'Use Options' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7 Modules</a></li><li><a href="index.html">core</a></li><li><a href="index.html#4">Chapter 4: Assertions with Special Meanings</a></li><li><b>Use Options</b></li></ul></div>
<p class="purpose">Special sentences for setting compilation options.</p>
<ul class="toc"><li><a href="4-uor.html#SP1">&#167;1. The Use sentence</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1"></a><b>&#167;1. The Use sentence. </b>Note that any sentence beginning with the word "Use" is accepted here, which
is a very wide net: unlike most special meaning sentences, there's no attempt
to cut down the risk of false positives by screening the noun phrase.
</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">UseOptions::use_SMF</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">UseOptions::use_SMF</span></span>:<br/>Booting Verbs - <a href="3-bv.html#SP1_3">&#167;1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NPs</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">OW</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[1]):</span><span class="identifier-syntax">EMPTY_WORDING</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">task</span><span class="plain-syntax">) { </span><span class="comment-syntax"> "Use American dialect."</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ACCEPT_SMFT:</span>
<span class="plain-syntax"> </span><span class="function-syntax">&lt;np-articled-list&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">OW</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;rp&gt;&gt;</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">TRUE</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">ALLOW_IN_OPTIONS_FILE_SMFT:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PASS_1_SMFT:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PASS_2_SMFT:</span>
<span class="plain-syntax"> </span><a href="4-uor.html#SP2" class="function-link"><span class="function-syntax">UseOptions::set_use_options</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</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>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b>"Use" sentences are simple in structure. Their object noun phrases are
articled lists:
</p>
<blockquote>
<p>Use American dialect and the serial comma.</p>
</blockquote>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">UseOptions::set_use_options</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">UseOptions::set_use_options</span></span>:<br/><a href="4-uor.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</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">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">AND_NT</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="4-uor.html#SP2" class="function-link"><span class="function-syntax">UseOptions::set_use_options</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="4-uor.html#SP2" class="function-link"><span class="function-syntax">UseOptions::set_use_options</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">down</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">next</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="named-paragraph-container code-font"><a href="4-uor.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Set a single use option</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2_1"></a><b>&#167;2.1. </b>Each of the entries in this list must match the following; the text of the
option name is taken from the <span class="extract"><span class="extract-syntax">...</span></span> or <span class="extract"><span class="extract-syntax">###</span></span> as appropriate:
</p>
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;use-inter-pipeline&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">inter</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">pipeline</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">{&lt;quoted-text&gt;}</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { TRUE, - }</span>
<span class="Preform-function-syntax">&lt;use-memory-setting&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">###</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">of</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;cardinal-number-unlimited&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { R[1], - }</span>
<span class="Preform-function-syntax">&lt;use-setting&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">of</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">at</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">least</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;cardinal-number-unlimited&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { R[1], - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;definite-article&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { -1, - }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { -1, - }</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="SP2_2"></a><b>&#167;2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set a single use option</span><span class="named-paragraph-number">2.2</span></span><span class="Preform-comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</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">&lt;use-inter-pipeline&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-uor.html#SP2_2_1" class="named-paragraph-link"><span class="named-paragraph">Set the pipeline given in this word range</span><span class="named-paragraph-number">2.2.1</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;use-memory-setting&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-uor.html#SP2_2_2" class="named-paragraph-link"><span class="named-paragraph">Set a memory setting</span><span class="named-paragraph-number">2.2.2</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax">&lt;use-setting&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-uor.html#SP2_2_3" class="named-paragraph-link"><span class="named-paragraph">Set the option given in this word range</span><span class="named-paragraph-number">2.2.3</span></a></span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-uor.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_2_1"></a><b>&#167;2.2.1. </b>This is an undocumented feature used during the transition from I6 to Inter:
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set the pipeline given in this word range</span><span class="named-paragraph-number">2.2.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">CW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax">&lt;use-inter-pipeline&gt;</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">global_pass_state</span><span class="plain-syntax">.</span><span class="element-syntax">pass</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">TEMPORARY_TEXT</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">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="string-syntax">"%W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CW</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::delete_first_character</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">Str::delete_last_character</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">Supervisor::set_inter_pipeline</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">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-uor.html#SP2_2">&#167;2.2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_2_2"></a><b>&#167;2.2.2. </b>ICL, the "Inform 6 control language", is a set of a pragma-like settings for
the I6 compiler. Of course, in the age in Inter, those might well be ignored,
since the compiler next down the chain may no longer be I6.
</p>
<p class="commentary">See <a href="26-uoart.html" class="internal">Use Options at Run Time</a> for what happens to these.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set a memory setting</span><span class="named-paragraph-number">2.2.2</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;r&gt;&gt;</span><span class="plain-syntax">, </span><span class="identifier-syntax">w1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</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">icl_identifier</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">icl_identifier</span><span class="plain-syntax">, </span><span class="string-syntax">"%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::one_word</span><span class="plain-syntax">(</span><span class="identifier-syntax">w1</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">icl_identifier</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">63</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><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">PM_BadICLIdentifier</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"that is too long to be an ICL identifier"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"so can't be the name of any I6 memory setting."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><a href="4-nuor.html#SP8" class="function-link"><span class="function-syntax">NewUseOptions::memory_setting</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">icl_identifier</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">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">icl_identifier</span><span class="plain-syntax">)</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-uor.html#SP2_2">&#167;2.2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_2_3"></a><b>&#167;2.2.3. </b>Whereas thus is the standard use option syntax:
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Set the option given in this word range</span><span class="named-paragraph-number">2.2.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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">min_setting</span><span class="plain-syntax"> = </span><span class="function-syntax">&lt;&lt;r&gt;&gt;</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">OW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax">&lt;use-setting&gt;</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">use_option</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uo</span><span class="plain-syntax"> = </span><a href="4-nuor.html#SP4" class="function-link"><span class="function-syntax">NewUseOptions::parse_uo</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OW</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">uo</span><span class="plain-syntax">) </span><a href="4-nuor.html#SP5" class="function-link"><span class="function-syntax">NewUseOptions::set</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">uo</span><span class="plain-syntax">, </span><span class="identifier-syntax">min_setting</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Lexer::file_of_origin</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">OW</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">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"> &gt; </span><span class="constant-syntax">1</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">"Used: %W\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><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">PM_UnknownUseOption</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"that isn't a 'Use' option known to me"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"and needs to be one of the ones listed in the documentation."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-uor.html#SP2_2">&#167;2.2</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-nuor.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-dlr.html">dlr</a></li><li class="progresssection"><a href="4-pr.html">pr</a></li><li class="progresssection"><a href="4-tr.html">tr</a></li><li class="progresssection"><a href="4-nuor.html">nuor</a></li><li class="progresscurrent">uor</li><li class="progresschapter"><a href="5-ita.html">5</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="5-ita.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

View file

@ -124,7 +124,7 @@ generalisations which apply to it.
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">generalisation</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure generalisation is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/pc, 26/ts, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure generalisation is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 5/rpt, 5/tc, 5/ma, 5/rk, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 26/ts, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b>For reasons to do with timing, each object needs to keep track of which
generalisations have and have not yet applied to it. In practice, this is
a list of pairs \((K, g)\) where \(K\) is a kind and \(g\) is the most recent one
@ -138,7 +138,7 @@ applied from \(K\)'s list.
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">application</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">application</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure application is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/pc, 26/ts, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure application is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 5/rpt, 5/tc, 5/ma, 5/rk, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 26/ts, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP5"></a><b>&#167;5. </b>These structures are combined in the following packet of data attached to
each inference subject:
</p>

View file

@ -250,7 +250,7 @@ That story will be taken up in a later chapter.
</p>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="4-tr.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresscurrent">ita</li><li class="progresssection"><a href="5-tbath.html">tbath</a></li><li class="progresssection"><a href="5-rpt.html">rpt</a></li><li class="progresssection"><a href="5-tc.html">tc</a></li><li class="progresssection"><a href="5-ma.html">ma</a></li><li class="progresssection"><a href="5-pk.html">pk</a></li><li class="progresssection"><a href="5-rk.html">rk</a></li><li class="progresssection"><a href="5-ass.html">ass</a></li><li class="progresssection"><a href="5-imp.html">imp</a></li><li class="progresssection"><a href="5-pd.html">pd</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="5-tbath.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="4-uor.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresschapter"><a href="3-bv.html">3</a></li><li class="progresschapter"><a href="4-dlr.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresscurrent">ita</li><li class="progresssection"><a href="5-tbath.html">tbath</a></li><li class="progresssection"><a href="5-rpt.html">rpt</a></li><li class="progresssection"><a href="5-tc.html">tc</a></li><li class="progresssection"><a href="5-ma.html">ma</a></li><li class="progresssection"><a href="5-pk.html">pk</a></li><li class="progresssection"><a href="5-rk.html">rk</a></li><li class="progresssection"><a href="5-ass.html">ass</a></li><li class="progresssection"><a href="5-imp.html">imp</a></li><li class="progresssection"><a href="5-pd.html">pd</a></li><li class="progresschapter"><a href="6-lp.html">6</a></li><li class="progresschapter"><a href="7-up.html">7</a></li><li class="progresschapter"><a href="8-ptu.html">8</a></li><li class="progresschapter"><a href="9-ef.html">9</a></li><li class="progresschapter"><a href="10-its.html">10</a></li><li class="progresschapter"><a href="11-itpc.html">11</a></li><li class="progresschapter"><a href="12-ter.html">12</a></li><li class="progresschapter"><a href="13-kak.html">13</a></li><li class="progresschapter"><a href="14-sp.html">14</a></li><li class="progresschapter"><a href="15-pr.html">15</a></li><li class="progresschapter"><a href="16-is.html">16</a></li><li class="progresschapter"><a href="17-tl.html">17</a></li><li class="progresschapter"><a href="18-lc.html">18</a></li><li class="progresschapter"><a href="19-tc.html">19</a></li><li class="progresschapter"><a href="20-eq.html">20</a></li><li class="progresschapter"><a href="21-rl.html">21</a></li><li class="progresschapter"><a href="22-itp.html">22</a></li><li class="progresschapter"><a href="23-ad.html">23</a></li><li class="progresschapter"><a href="24-lv.html">24</a></li><li class="progresschapter"><a href="25-in.html">25</a></li><li class="progresschapter"><a href="26-fc.html">26</a></li><li class="progresschapter"><a href="27-hr.html">27</a></li><li class="progressnext"><a href="5-tbath.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -127,7 +127,7 @@ evidence turns up to suggest otherwise).
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">instance_usage</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax">;</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">instance_usage</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure instance_usage is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/pc, 26/ts, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure instance_usage is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 26/ts, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP4"></a><b>&#167;4. </b>We record the one most recently made:
</p>

View file

@ -271,7 +271,7 @@ mass might also support "in kilograms" and "in grams", for instance.
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">literal_pattern_name</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure literal_pattern_name is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/pc, 26/ts, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure literal_pattern_name is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 26/ts, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP9"></a><b>&#167;9. Creating patterns, tokens and elements. </b></p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -117,7 +117,7 @@ exist; we can simply record inferences about its value.
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">nonlocal_variable</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure nonlocal_variable_emission is private to this section.</li><li>The structure nonlocal_variable is accessed in 2/sq, 2/si, 5/ma, 5/pk, 6/ins, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/uo, 26/ts and here.</li></ul>
<ul class="endnotetexts"><li>The structure nonlocal_variable_emission is private to this section.</li><li>The structure nonlocal_variable is accessed in 2/sq, 2/si, 4/nuor, 5/ma, 5/pk, 6/ins, 9/ef, 11/sm, 14/lv, 14/ds2, 15/pr, 15/ep, 15/vp, 15/spr, 16/in, 16/cmw, 17/rs, 19/tc, 19/tb, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/pu, 22/dptd, 22/po, 22/pav, 25/cii, 26/ts, 26/uoart and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP3"></a><b>&#167;3. </b>These three special NLVs are used for the "notable" hacky Standard Rules
variables mentioned below:
</p>
@ -463,7 +463,7 @@ I6 schema for how to change a variable:
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">NonlocalVariables::warn_about_change</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">NonlocalVariables::warn_about_change</span></span>:<br/>Compile Invocations Inline - <a href="25-cii.html#SP3_5_4_2">&#167;3.5.4.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</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">IF_MODULE</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">score_VAR</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">nlv</span><span class="plain-syntax"> == </span><span class="identifier-syntax">score_VAR</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">scoring_option_set</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">scoring_option_set</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NOT_APPLICABLE</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_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">scoring_option_set</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">global_compilation_settings</span><span class="plain-syntax">.</span><span class="element-syntax">scoring_option_set</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NOT_APPLICABLE</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_CantChangeScore</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"this is a story with no scoring"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"so it makes no sense to change the 'score' value. You can add "</span>

View file

@ -543,7 +543,7 @@ surreptitiously check that it is correctly formed at the same time.
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>The structure contents_entry is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/pc, 26/ts, 27/cm and here.</li></ul>
<ul class="endnotetexts"><li>The structure contents_entry is accessed in 3/cs, 3/ptmn, 4/dlr, 4/pr, 4/tr, 4/nuor, 4/uor, 5/rpt, 5/tc, 5/ma, 5/rk, 5/ass, 5/imp, 5/pd, 6/lp, 6/ins, 7/rlt, 7/nv, 8/rs, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/ps, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 22/tp2, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/pc, 26/ts, 27/cm and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP15_1"></a><b>&#167;15.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index this entry in the contents</span><span class="named-paragraph-number">15.1</span></span><span class="comment-syntax"> =</span>
</p>

View file

@ -102,6 +102,11 @@
<spon class="sectiontitle">Progress Percentages</span></a> -
<span class="sectionpurpose">This tiny section, the Lichtenstein of Inform, prints percentage of completion estimates so that the host application can intercept them and update its graphical progress bar.</span></p>
</li>
<li>
<p class="sectionentry"><a href="1-cs.html">
<spon class="sectiontitle">Compilation Settings</span></a> -
<span class="sectionpurpose">Settings affecting the compilation of the current project.</span></p>
</li>
</ul>
</li>
<li>
@ -178,6 +183,16 @@
<spon class="sectiontitle">Translation Requests</span></a> -
<span class="sectionpurpose">Three unrelated senses of "X translates into Y as Z" sentences.</span></p>
</li>
<li>
<p class="sectionentry"><a href="4-nuor.html">
<spon class="sectiontitle">New Use Option Requests</span></a> -
<span class="sectionpurpose">Special sentences for creating new use options.</span></p>
</li>
<li>
<p class="sectionentry"><a href="4-uor.html">
<spon class="sectiontitle">Use Options</span></a> -
<span class="sectionpurpose">Special sentences for setting compilation options.</span></p>
</li>
</ul>
</li>
<li>
@ -977,11 +992,6 @@
<spon class="sectiontitle">Inform 6 Inclusions</span></a> -
<span class="sectionpurpose">To include Inform 6 code almost verbatim in the output, as instructed by low-level Inform 7 sentences.</span></p>
</li>
<li>
<p class="sectionentry"><a href="26-uo.html">
<spon class="sectiontitle">Use Options</span></a> -
<span class="sectionpurpose">To control compiler settings, pragma-style.</span></p>
</li>
<li>
<p class="sectionentry"><a href="26-lt.html">
<spon class="sectiontitle">List Together</span></a> -
@ -1022,6 +1032,11 @@
<spon class="sectiontitle">Test Scripts</span></a> -
<span class="sectionpurpose">A rudimentary but useful testing system built in to IF produced by Inform, allowing short sequences of commands to be concisely noted in the source text and tried out in the Inform application using the TEST command.</span></p>
</li>
<li>
<p class="sectionentry"><a href="26-uoart.html">
<spon class="sectiontitle">Use Options at Run Time</span></a> -
<span class="sectionpurpose">To give certain use options a presence at run-time.</span></p>
</li>
</ul>
</li>
<li>

View file

@ -340,7 +340,7 @@ compiled to constants, used early on at run-time to print the banner.
<span class="plain-syntax"> </span><span class="identifier-syntax">NonlocalVariables::seek_initial_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::named_generic_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">UseOptions::story_author_given</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">global_compilation_settings</span><span class="plain-syntax">.</span><span class="identifier-syntax">story_author_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">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">STORY_AUTHOR_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">v1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>

View file

@ -112,7 +112,7 @@ score corresponding to successful completion and the highest rank.
<span class="plain-syntax"> </span><span class="identifier-syntax">Assertions::PropertyKnowledge::initialise_global_variable</span><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">max_score_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_evaluation</span><span class="plain-syntax">(</span><span class="identifier-syntax">PN</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">UseOptions::ranking_table_given</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">global_compilation_settings</span><span class="plain-syntax">.</span><span class="identifier-syntax">ranking_table_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="identifier-syntax">rt_made</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>

View file

@ -233,7 +233,7 @@ verb".
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::empty</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">NO_VERB_VERB_DEFINED_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::named_numeric_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</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">UseOptions::no_verb_verb</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">global_compilation_settings</span><span class="plain-syntax">.</span><span class="identifier-syntax">no_verb_verb_exists</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</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">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">GRAMMAR_CONSTRUCTION</span><span class="plain-syntax">, </span><span class="string-syntax">"GV%d has verb %W\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">gv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>

View file

@ -370,7 +370,7 @@ to match this width, preserving the aspect ratio.
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Figures::index_all</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Plugins::Manage::plugged_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">figures_plugin</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="plain-syntax"> </span><span class="reserved-syntax">blorb_figure</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bf</span><span class="plain-syntax">; </span><span class="reserved-syntax">FILE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">FIGURE_FILE</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">MAX_INDEXED_FIGURES</span><span class="plain-syntax"> = </span><span class="identifier-syntax">UseOptions::get_index_figure_thumbnails</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">MAX_INDEXED_FIGURES</span><span class="plain-syntax"> = </span><span class="identifier-syntax">global_compilation_settings</span><span class="plain-syntax">.</span><span class="identifier-syntax">index_figure_thumbnails</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="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">blorb_figure</span><span class="plain-syntax">) &lt; </span><span class="constant-syntax">2</span><span class="plain-syntax">) { </span><span class="comment-syntax"> cover art always creates 1</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"There are no figures, or illustrations, in this project."</span><span class="plain-syntax">);</span>

View file

@ -366,6 +366,10 @@ our choice.
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">telemetry_recording</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ProblemBuffer::set_telemetry</span><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">telemetry_recording</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">ProblemBuffer::output_problem_buffer</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">ProblemBuffer::output_problem_buffer</span></span>:<br/>Problems, Level 2 - <a href="2-pl2.html#SP3_1">&#167;3.1</a>, <a href="2-pl2.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">indentation</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">redirected_problem_text</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-pl1.html#SP5" class="function-link"><span class="function-syntax">ProblemBuffer::output_problem_buffer_to</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">, </span><span class="identifier-syntax">indentation</span><span class="plain-syntax">);</span>

View file

@ -230,7 +230,7 @@ add to those generated in <a href="../syntax-module/index.html" class="internal"
<p class="commentary firstcommentary"><a id="SP8"></a><b>&#167;8. </b>The next tweak to <a href="../syntax-module/index.html" class="internal">syntax</a> is to give it some node metadata. <a href="../syntax-module/index.html" class="internal">syntax</a>
itself places nodes of a small number of basic types into the syntax tree;
we want to expand on those. (And the <a href="../core-module/index.html" class="internal">core</a> module will expand on them still
further, so this still isn't everything: see <a href="../core-module/7-ptu.html" class="internal">Parse Tree Usage (in core)</a>.)
further, so this still isn't everything: see <a href="../core-module/8-ptu.html" class="internal">Parse Tree Usage (in core)</a>.)
</p>
<p class="commentary">The node types we're adding are for the "structural sentences" which we will

View file

@ -96,9 +96,31 @@ unyielding the user's views, it's not allowed to write:
<pre class="Preform-displayed-code all-displayed-code code-font">
<span class="Preform-function-syntax">&lt;use-option-sentence-shape&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">use</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">.</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">use</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;immediate-use&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">.</span>
<span class="Preform-function-syntax">&lt;immediate-use&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> { lookahead }</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;immediate-use-entry&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;immediate-use-tail&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;immediate-use-entry&gt;</span>
<span class="Preform-function-syntax">&lt;immediate-use-tail&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">,</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">_and</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;immediate-use&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">_,/and</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;immediate-use&gt;</span>
<span class="Preform-function-syntax">&lt;immediate-use-entry&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax">&lt;notable-use-option-name&gt;</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==&gt;</span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-tof.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Act on this use option immediately</span><span class="named-paragraph-number">1.1</span></a></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="SP1_1"></a><b>&#167;1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on this use option immediately</span><span class="named-paragraph-number">1.1</span></span><span class="Preform-comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CompilationSettings::set</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">[1], -1, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="6-tof.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2"></a><b>&#167;2. </b>There is just one options file, so no need to load it more than once.
</p>
@ -118,11 +140,7 @@ unyielding the user's views, it's not allowed to write:
<span class="plain-syntax"> </span><span class="identifier-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">unused_state</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">line</span><span class="plain-syntax">, </span><span class="string-syntax">"\n"</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">Feeds::feed_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">line</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">&lt;use-option-sentence-shape&gt;</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">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">UseOptions::set_immediate_option_flags</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</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">endif</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="function-syntax">&lt;use-option-sentence-shape&gt;</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">

View file

@ -23,8 +23,26 @@ so the sentence-terminator will certainly be a full stop.
=
<use-option-sentence-shape> ::=
use ... .
use <immediate-use> .
<immediate-use> ::=
... | ==> { lookahead }
<immediate-use-entry> <immediate-use-tail> |
<immediate-use-entry>
<immediate-use-tail> ::=
, _and <immediate-use> |
_,/and <immediate-use>
<immediate-use-entry> ::=
<notable-use-option-name> | ==> @<Act on this use option immediately@>
......
@<Act on this use option immediately@> =
#ifdef CORE_MODULE
CompilationSettings::set(R[1], -1, NULL);
#endif
@ There is just one options file, so no need to load it more than once.
=
@ -43,9 +61,5 @@ void OptionsFile::read_helper(text_stream *line,
text_file_position *tfp, void *unused_state) {
WRITE_TO(line, "\n");
wording W = Feeds::feed_text(line);
if (<use-option-sentence-shape>(W)) {
#ifdef CORE_MODULE
UseOptions::set_immediate_option_flags(W, NULL);
#endif
}
<use-option-sentence-shape>(W);
}

File diff suppressed because it is too large Load diff

View file

@ -8,7 +8,7 @@ Total memory consumption was 256458K = 250 MB
2.8% verb_conjugation 164 objects, 7610912 bytes
2.6% parse_node_annotation_array 431 x 500 = 215500 objects, 6909792 bytes
2.4% inter_symbol_array 70 x 1024 = 71680 objects, 6310080 bytes
1.9% linked_list 8923 objects, 4996880 bytes
1.9% linked_list 8924 objects, 4997440 bytes
1.3% pcalc_prop_array 24 x 1000 = 24000 objects, 3648768 bytes
1.2% map_data 666 objects, 3159504 bytes
0.9% kind_array 65 x 1000 = 65000 objects, 2602080 bytes
@ -20,9 +20,9 @@ Total memory consumption was 256458K = 250 MB
0.3% adjective_meaning 202 objects, 1001920 bytes
0.3% excerpt_meaning 3102 objects, 967824 bytes
0.3% inter_package 13238 objects, 953136 bytes
0.3% production 3898 objects, 904336 bytes
0.3% production 3897 objects, 904104 bytes
0.3% grammatical_usage 3658 objects, 877920 bytes
0.3% ptoken 8415 objects, 875160 bytes
0.3% ptoken 8412 objects, 874848 bytes
0.3% individual_form 2564 objects, 861504 bytes
0.3% inter_symbols_table 13238 objects, 847232 bytes
0.3% inter_schema_node 8716 objects, 836736 bytes
@ -46,7 +46,7 @@ Total memory consumption was 256458K = 250 MB
---- linguistic_stock_item 3333 objects, 159984 bytes
---- stacked_variable_owner_list_array 38 x 100 = 3800 objects, 153216 bytes
---- index_lexicon_entry 407 objects, 146520 bytes
---- nonterminal 753 objects, 138552 bytes
---- nonterminal 754 objects, 138736 bytes
---- action_pattern_array 6 x 100 = 600 objects, 129792 bytes
---- documentation_ref 1275 objects, 112200 bytes
---- hierarchy_location 731 objects, 105264 bytes
@ -72,7 +72,7 @@ Total memory consumption was 256458K = 250 MB
---- inter_node_list 750 objects, 42000 bytes
---- activity_list_array 1 x 1000 objects, 40032 bytes
---- response_message 407 objects, 35816 bytes
---- production_list 616 objects, 34496 bytes
---- production_list 617 objects, 34552 bytes
---- unary_predicate_array 8 x 1000 = 8000 objects, 32192 bytes
---- HTML_tag_array 1 x 1000 objects, 32032 bytes
---- regions_data 666 objects, 31968 bytes
@ -93,7 +93,7 @@ Total memory consumption was 256458K = 250 MB
---- adjective_iname_holder 320 objects, 15360 bytes
---- plugin 23 objects, 13432 bytes
---- literal_text 147 objects, 12936 bytes
---- stopwatch_timer 147 objects, 11760 bytes
---- stopwatch_timer 148 objects, 11840 bytes
---- understanding_reference_array 2 x 100 = 200 objects, 11264 bytes
---- pathname 265 objects, 10600 bytes
---- adjective 137 objects, 9864 bytes
@ -129,12 +129,12 @@ Total memory consumption was 256458K = 250 MB
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
---- equation_symbol 30 objects, 2400 bytes
---- semver_range 22 objects, 2288 bytes
---- use_option 29 objects, 1856 bytes
---- method_set 56 objects, 1792 bytes
---- pronoun_usage 42 objects, 1680 bytes
---- table_contribution_array 1 x 100 objects, 1632 bytes
---- activity_crossref_array 1 x 100 objects, 1632 bytes
---- plugin_call_array 1 x 100 objects, 1632 bytes
---- use_option 29 objects, 1624 bytes
---- kind_interaction 39 objects, 1560 bytes
---- inter_annotation_form 37 objects, 1480 bytes
---- pipeline_step 12 objects, 1440 bytes
@ -211,9 +211,9 @@ Total memory consumption was 256458K = 250 MB
37.6% was used for memory not allocated for objects:
15.9% text stream storage 41934212 bytes in 264248 claims
15.9% text stream storage 41934340 bytes in 264249 claims
3.5% dictionary storage 9293312 bytes in 16401 claims
---- sorting 1040 bytes in 3 claims
---- sorting 1048 bytes in 3 claims
2.7% source text 7200000 bytes in 3 claims
4.1% source text details 10800000 bytes in 2 claims
---- linguistic stock array 81920 bytes in 2 claims
@ -228,5 +228,5 @@ Total memory consumption was 256458K = 250 MB
---- emitter array storage 14368 bytes in 8 claims
---- code generation workspace for objects 9200 bytes in 9 claims
19.9% was overhead - 52408872 bytes = 51180K = 49 MB
19.9% was overhead - 52408304 bytes = 51179K = 49 MB

View file

@ -1,11 +1,11 @@
<s-literal> hits 2097/23834 nti 27 constraint (none) extremes [1, infinity)
<s-literal> hits 2097/23834 nti 8 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/1773) constraint DS = {27} extremes [2, 2]
(hits 0/1805) constraint DS = {8} extremes [2, 2]
(@1)<quoted-text>=1 (@2)( (@3)<response-letter>=2 (@4))
(hits 273/817) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {27} extremes [4, 4]
(hits 273/835) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {8} extremes [4, 4]
(@1)<quoted-text>=1
(hits 1564/5548) (matched: 'Represents geographical locations, both indoor
and outdoor, which are not necessarily areas in a building. A player in one
@ -14,12 +14,12 @@
<s-literal-real-number>=1
(hits 11/9909) (matched: 'plus infinity') constraint (none) extremes [1, infinity)
(@1)<s-literal-truth-state>=1
(hits 78/84) (matched: 'false') constraint CS = {21} extremes [1, 1]
(hits 78/94) (matched: 'false') constraint CS = {28} extremes [1, 1]
<s-literal-list>=1
(hits 0/3421) constraint DS = {23} extremes [2, infinity)
(hits 0/3151) constraint DS = {30} extremes [2, infinity)
(@1)unicode <s-unicode-character>=1
(hits 0/4049) constraint DS = {27} extremes [2, infinity)
(hits 0/4023) constraint DS = {8} extremes [2, infinity)
<s-literal-time>=1
(hits 0/3313) constraint DW = {24, 25, 26} extremes [2, 5]
(hits 0/2837) constraint DW = {6, 7, 31} extremes [2, 5]
<s-literal-unit-notation>=1
(hits 0/9820) constraint (none) extremes [1, infinity)

View file

@ -1,11 +1,11 @@
100.0% in inform7 run
67.0% in compilation to Inter
26.2% in //Phrases::Manager::compile_first_block//
9.3% in //Phrases::Manager::compile_as_needed//
6.8% in //Strings::compile_responses//
6.1% in //World::Compile::compile//
4.6% in //MajorNodes::pre_pass//
3.1% in //MajorNodes::pass_1//
66.1% in compilation to Inter
25.8% in //Phrases::Manager::compile_first_block//
8.8% in //Phrases::Manager::compile_as_needed//
6.9% in //Strings::compile_responses//
6.0% in //World::Compile::compile//
3.9% in //MajorNodes::pre_pass//
3.2% in //MajorNodes::pass_1//
2.0% in //Phrases::Manager::RulePrintingRule_routine//
1.8% in //Phrases::Manager::rulebooks_array//
1.1% in //NewVerbs::ConjugateVerb//
@ -17,11 +17,11 @@
0.1% in //PL::Parsing::Verbs::compile_all//
0.1% in //Task::make_built_in_kind_constructors//
0.1% in //World::complete//
2.8% not specifically accounted for
30.5% in running Inter pipeline
10.0% in step preparation
9.8% in inter step 2/12: link
7.0% in inter step 12/12: generate inform6 -> auto.inf
3.4% not specifically accounted for
31.4% in running Inter pipeline
9.9% in inter step 2/12: link
9.9% in step preparation
7.3% in inter step 12/12: generate inform6 -> auto.inf
0.3% in inter step 9/12: make-identifiers-unique
0.1% in inter step 10/12: reconcile-verbs
0.1% in inter step 11/12: eliminate-redundant-labels
@ -29,6 +29,6 @@
0.1% in inter step 6/12: assimilate
0.1% in inter step 7/12: resolve-external-symbols
0.1% in inter step 8/12: inspect-plugs
2.1% not specifically accounted for
2.6% not specifically accounted for
2.0% in supervisor
0.4% not specifically accounted for

View file

@ -1,10 +1,11 @@
Inform 7 build 6L26 has started.
Inform 7 v10.1.0 has started.
I've now read your source text, which is 28 words long.
I've also read Standard Rules by Graham Nelson, which is 42597 words long.
I've also read English Language by Graham Nelson, which is 2288 words long.
I've also read Basic Inform by Graham Nelson, which is 7673 words long.
I've also read English Language by Graham Nelson, which is 2328 words long.
I've also read Standard Rules by Graham Nelson, which is 32127 words long.
Problem__ PM_UseTranslatesNotI6
>--> You wrote 'Use My First Thing translates as (- Constant FOO; -) Use My
Second Thing translates as (- Constant BAR; -)' (source text, line 3): but
that translates into something which isn't a simple I6 inclusion, placed in
'(-' and '-)' markers.
Inform 7 has finished: 17 centiseconds used.
that translates into something which isn't a simple Inter inclusion, placed
in '(-' and '-)' markers.
Inform 7 has finished.

View file

@ -0,0 +1,164 @@
[CompilationSettings::] Compilation Settings.
Settings affecting the compilation of the current project.
@ The Inform compiler has many settings coming from outside: for example, a
command-line switch allows indexing to be turned off. This is not something a
program's own source text should be able to control. But it also has settings
such as whether or not to use the serial comma, which should indeed be
controllable from source text.
Those are called "compilation settings", and are a ragbag accumulated through
two decades of historical accident. Most correspond to use options. Some are
meaningful only for works of IF and are inert for Basic Inform projects.
@e AUTHORIAL_MODESTY_UO from 0
@e DYNAMIC_MEMORY_ALLOCATION_UO
@e MEMORY_ECONOMY_UO
@e NO_DEPRECATED_FEATURES_UO
@e NUMBERED_RULES_UO
@e TELEMETRY_RECORDING_UO
@e SCORING_UO
@e NO_SCORING_UO
@e ENGINEERING_NOTATION_UO
@e UNABBREVIATED_OBJECT_NAMES_UO
@e INDEX_FIGURE_THUMBNAILS_UO
@e UNDO_PREVENTION_UO
@e SERIAL_COMMA_UO
@e PREDICTABLE_RANDOMISATION_UO
@e COMMAND_LINE_ECHOING_UO
@e AMERICAN_DIALECT_UO
@e FULL_LENGTH_ROOM_DESCRIPTIONS_UO
@e ABBREVIATED_ROOM_DESCRIPTIONS_UO
@e VERBOSE_ROOM_DESCRIPTIONS_UO
@e BRIEF_ROOM_DESCRIPTIONS_UO
@e SUPERBRIEF_ROOM_DESCRIPTIONS_UO
@ Note that Inform recognises these by their English names, so there would be no
need to translate this to other languages.
=
<notable-use-option-name> ::=
authorial modesty | ==> { AUTHORIAL_MODESTY_UO, - }
dynamic memory allocation | ==> { DYNAMIC_MEMORY_ALLOCATION_UO, - }
memory economy | ==> { MEMORY_ECONOMY_UO, - }
no deprecated features | ==> { NO_DEPRECATED_FEATURES_UO, - }
numbered rules | ==> { NUMBERED_RULES_UO, - }
telemetry recordings | ==> { TELEMETRY_RECORDING_UO, - }
scoring | ==> { SCORING_UO, - }
no scoring | ==> { NO_SCORING_UO, - }
engineering notation | ==> { ENGINEERING_NOTATION_UO, - }
unabbreviated object names | ==> { UNABBREVIATED_OBJECT_NAMES_UO, - }
index figure thumbnails | ==> { INDEX_FIGURE_THUMBNAILS_UO, - }
undo prevention | ==> { UNDO_PREVENTION_UO, - }
serial comma | ==> { SERIAL_COMMA_UO, - }
predictable randomisation | ==> { PREDICTABLE_RANDOMISATION_UO, - }
command line echoing | ==> { COMMAND_LINE_ECHOING_UO, - }
american dialect | ==> { AMERICAN_DIALECT_UO, - }
full-length room descriptions | ==> { FULL_LENGTH_ROOM_DESCRIPTIONS_UO, - }
abbreviated room descriptions | ==> { ABBREVIATED_ROOM_DESCRIPTIONS_UO, - }
verbose room descriptions | ==> { VERBOSE_ROOM_DESCRIPTIONS_UO, - }
brief room descriptions | ==> { BRIEF_ROOM_DESCRIPTIONS_UO, - }
superbrief room descriptions ==> { SUPERBRIEF_ROOM_DESCRIPTIONS_UO, - }
@ Some of the pragma-like settings are stored here:
=
typedef struct compilation_settings {
int allow_engineering_notation;
int American_dialect;
int command_line_echoing;
int dynamic_memory_allocation;
int index_figure_thumbnails;
int memory_economy_in_force;
int no_deprecated_features;
int no_verb_verb_exists;
int number_rules_in_index;
int predictable_randomisation;
int ranking_table_given;
int room_description_level;
int scoring_option_set;
int serial_comma;
int story_author_given;
int undo_prevention;
int use_exact_parsing_option;
} compilation_settings;
compilation_settings global_compilation_settings;
@ Very early in compilation, the following is called:
=
void CompilationSettings::initialise_gcs(void) {
global_compilation_settings.allow_engineering_notation = FALSE;
global_compilation_settings.American_dialect = FALSE;
global_compilation_settings.command_line_echoing = FALSE;
global_compilation_settings.dynamic_memory_allocation = 0;
global_compilation_settings.index_figure_thumbnails = 50;
global_compilation_settings.memory_economy_in_force = FALSE;
global_compilation_settings.no_deprecated_features = FALSE;
global_compilation_settings.no_verb_verb_exists = FALSE;
global_compilation_settings.number_rules_in_index = FALSE;
global_compilation_settings.predictable_randomisation = FALSE;
global_compilation_settings.ranking_table_given = FALSE;
global_compilation_settings.room_description_level = 2;
global_compilation_settings.scoring_option_set = NOT_APPLICABLE;
global_compilation_settings.serial_comma = FALSE;
global_compilation_settings.story_author_given = FALSE;
global_compilation_settings.undo_prevention = FALSE;
global_compilation_settings.use_exact_parsing_option = FALSE;
}
@ And when (for example) a "Use..." sentence triggers one of these, the
following function is called. (Note that this is not the only way that
the above settings can be changed.)
=
void CompilationSettings::set(int U, int N, source_file *from) {
compilation_settings *g = &global_compilation_settings;
switch (U) {
case AUTHORIAL_MODESTY_UO: {
inform_extension *E = Extensions::corresponding_to(from);
if (E == NULL) Extensions::set_general_authorial_modesty();
else Extensions::set_authorial_modesty(E);
break;
}
case ABBREVIATED_ROOM_DESCRIPTIONS_UO: g->room_description_level = 3; break;
case AMERICAN_DIALECT_UO: g->American_dialect = TRUE; break;
case BRIEF_ROOM_DESCRIPTIONS_UO: g->room_description_level = 1; break;
case COMMAND_LINE_ECHOING_UO: g->command_line_echoing = TRUE; break;
case ENGINEERING_NOTATION_UO: g->allow_engineering_notation = TRUE; break;
case FULL_LENGTH_ROOM_DESCRIPTIONS_UO: g->room_description_level = 2; break;
case MEMORY_ECONOMY_UO: g->memory_economy_in_force = TRUE; break;
case NO_DEPRECATED_FEATURES_UO: g->no_deprecated_features = TRUE; break;
case NO_SCORING_UO: g->scoring_option_set = FALSE; break;
case NUMBERED_RULES_UO: g->number_rules_in_index = TRUE; break;
case PREDICTABLE_RANDOMISATION_UO: g->predictable_randomisation = TRUE; break;
case SCORING_UO: g->scoring_option_set = TRUE; break;
case SERIAL_COMMA_UO: g->serial_comma = TRUE; break;
case SUPERBRIEF_ROOM_DESCRIPTIONS_UO: g->room_description_level = 3; break;
case TELEMETRY_RECORDING_UO: ProblemBuffer::set_telemetry(); break;
case UNABBREVIATED_OBJECT_NAMES_UO: g->use_exact_parsing_option = TRUE; break;
case UNDO_PREVENTION_UO: g->undo_prevention = TRUE; break;
case VERBOSE_ROOM_DESCRIPTIONS_UO: g->room_description_level = 2; break;
}
if (N > 0) {
switch (U) {
case DYNAMIC_MEMORY_ALLOCATION_UO: g->dynamic_memory_allocation = N; break;
case INDEX_FIGURE_THUMBNAILS_UO: g->index_figure_thumbnails = N; break;
}
}
}
@ Exact parsing in the //lexicon// module results from one such setting:
@d PARSE_EXACTLY_LEXICON_CALLBACK CompilationSettings::parse_exactly
=
int CompilationSettings::parse_exactly(excerpt_meaning *em) {
if (em->meaning_code == NOUN_MC) {
if (global_compilation_settings.use_exact_parsing_option) return TRUE;
return FALSE;
}
return TRUE;
}

View file

@ -115,6 +115,7 @@ will divide according to these units.
@<Divide into compilation units@> =
Task::advance_stage_to(SUBDIVIDING_CSEQ, I"Dividing source into compilation units", -1);
BENCH(CompilationSettings::initialise_gcs)
BENCH(Emit::begin);
BENCH(Sentences::Headings::make_the_tree)
BENCH(Sentences::Headings::write_as_xml)
@ -145,7 +146,7 @@ so on. Those absolute basics are made here.
@<Make the model world@> =
Task::advance_stage_to(MODEL_CSEQ, I"Making the model world", -1);
BENCH(Kinds::RunTime::kind_declarations)
BENCH(UseOptions::compile)
BENCH(RTUseOptions::compile)
BENCH(Properties::emit)
BENCH(Properties::Emit::allocate_attributes)
BENCH(PL::Actions::name_all)
@ -183,13 +184,13 @@ so on. Those absolute basics are made here.
@<Generate inter@> =
Task::advance_stage_to(INTER_CSEQ, I"Generating inter", 4);
BENCH(UseOptions::compile_icl_commands)
BENCH(RTUseOptions::compile_pragmas)
BENCH(FundamentalConstants::emit_build_number)
BENCH(PL::Bibliographic::compile_constants)
BENCH(Extensions::Files::ShowExtensionVersions_routine)
BENCH(Kinds::Constructors::compile_I6_constants)
BENCH_IF(scoring_plugin, PL::Score::compile_max_score)
BENCH(UseOptions::TestUseOption_routine)
BENCH(RTUseOptions::TestUseOption_routine)
BENCH(Activities::compile_activity_constants)
BENCH(Activities::Activity_before_rulebooks_array)
BENCH(Activities::Activity_for_rulebooks_array)
@ -274,7 +275,7 @@ so on. Those absolute basics are made here.
BENCH(Phrases::Timed::TimedEventsTable)
BENCH(Phrases::Timed::TimedEventTimesTable)
BENCH(PL::Naming::compile_cap_short_name)
BENCH(UseOptions::configure_template)
BENCH(RTUseOptions::configure_template)
@<Generate index and bibliographic file@> =
Task::advance_stage_to(BIBLIOGRAPHIC_CSEQ, I"Bibliographic work", -1);

View file

@ -159,7 +159,7 @@ Still:
if (expocount == 0) return FALSE;
if (exposign) { expo = -expo; }
distinctive = TRUE;
if ((e_notation_used) && (allow_engineering_notation == FALSE) &&
if ((e_notation_used) && (global_compilation_settings.allow_engineering_notation == FALSE) &&
(e_notation_problem_issued == FALSE)) {
e_notation_problem_issued = TRUE;
Problems::quote_source(1, current_sentence);

View file

@ -800,8 +800,8 @@ has essentially no memory constraints compared with the Z-machine.
@<Compile a constant for the heap size needed@> =
int max_heap = 1;
if (total_heap_allocation < UseOptions::get_dynamic_memory_allocation())
total_heap_allocation = UseOptions::get_dynamic_memory_allocation();
if (total_heap_allocation < global_compilation_settings.dynamic_memory_allocation)
total_heap_allocation = global_compilation_settings.dynamic_memory_allocation;
while (max_heap < total_heap_allocation) max_heap = max_heap*2;
if (TargetVMs::is_16_bit(Task::vm()))
Kinds::RunTime::compile_nnci(Hierarchy::find(MEMORY_HEAP_SIZE_HL), max_heap);

View file

@ -1731,7 +1731,7 @@ And here is where we check that "break" is indeed used only in a loop.
}
@<Step (4I.i) Disallow any phrases which are now deprecated@> =
if (no_deprecated_features) {
if (global_compilation_settings.no_deprecated_features) {
LOG_DASH("(4I.i)");
if ((ph) && (ph->type_data.now_deprecated)) {
THIS_IS_AN_INTERESTING_PROBLEM {

View file

@ -503,7 +503,7 @@ void Rulebooks::rulebook_var_creators(void) {
StackedVariables::compile_frame_creator(rb->owned_by_rb,
Rulebooks::get_stv_creator_iname(rb));
if (memory_economy_in_force == FALSE) {
if (global_compilation_settings.memory_economy_in_force == FALSE) {
inter_name *iname = Hierarchy::find(RULEBOOK_VAR_CREATORS_HL);
packaging_state save = Emit::named_array_begin(iname, K_value);
LOOP_OVER(rb, rulebook) {
@ -883,7 +883,7 @@ void Rulebooks::compile_rulebooks(void) {
void Rulebooks::RulebookNames_array(void) {
inter_name *iname = Hierarchy::find(RULEBOOKNAMES_HL);
packaging_state save = Emit::named_array_begin(iname, K_value);
if (memory_economy_in_force) {
if (global_compilation_settings.memory_economy_in_force) {
Emit::array_numeric_entry(0);
Emit::array_numeric_entry(0);
} else {

View file

@ -568,7 +568,7 @@ void Rules::RulePrintingRule_routine(void) {
}
@<Print a rulebook name@> =
if (memory_economy_in_force) {
if (global_compilation_settings.memory_economy_in_force) {
Produce::inv_primitive(Emit::tree(), PRINT_BIP);
Produce::down(Emit::tree());
Produce::val_text(Emit::tree(), I"(rulebook ");
@ -593,7 +593,7 @@ void Rules::RulePrintingRule_routine(void) {
}
@<Print a rule name@> =
if (memory_economy_in_force) {
if (global_compilation_settings.memory_economy_in_force) {
Produce::inv_primitive(Emit::tree(), PRINT_BIP);
Produce::down(Emit::tree());
Produce::val_text(Emit::tree(), I"(rule at address ");
@ -723,16 +723,6 @@ void Rules::set_italicised_index_text(rule *R, wording W) {
R->italicised_text = W;
}
@ A use option controls whether little rule numbers are shown in the index.
I wonder how useful this really is, but it was much requested at one time.
=
int use_numbered_rules = FALSE;
void Rules::set_numbered_rules(void) {
use_numbered_rules = TRUE;
}
@ And off we go:
=
@ -744,7 +734,7 @@ int Rules::index(OUTPUT_STREAM, rule *R, rulebook *owner, rule_context rc) {
(Wordings::nonempty(R->name) == FALSE) && (R->defn_as_phrase))
@<Index some text extracted from the first line of the otherwise anonymous rule@>;
@<Index a link to the first line of the rule's definition@>;
if (use_numbered_rules) @<Index the small type rule numbering@>;
if (global_compilation_settings.number_rules_in_index) @<Index the small type rule numbering@>;
@<Index any applicability conditions@>;
HTML_CLOSE("p");
@<Index any response texts in the rule@>;

View file

@ -288,7 +288,7 @@ void Plugins::Manage::start_plugins(void) {
=
void Plugins::Manage::index_innards(OUTPUT_STREAM, target_vm *VM) {
Plugins::Manage::index_VM(OUT, VM);
UseOptions::index(OUT);
NewUseOptions::index(OUT);
HTML_OPEN("p");
Index::extra_link(OUT, 3);
WRITE("See some technicalities for Inform maintainers only");

View file

@ -0,0 +1,131 @@
[RTUseOptions::] Use Options at Run Time.
To give certain use options a presence at run-time.
@ A relatively late addition to the design of use options was to make them
values at run-time, of the kind "use option". We need to provide two routines:
one to test them, one to print them.
=
void RTUseOptions::TestUseOption_routine(void) {
inter_name *iname = Hierarchy::find(NO_USE_OPTIONS_HL);
Emit::named_numeric_constant(iname, (inter_ti) NUMBER_CREATED(use_option));
@<Compile the TestUseOption routine@>;
@<Compile the PrintUseOption routine@>;
}
@<Compile the TestUseOption routine@> =
packaging_state save = Routines::begin(Hierarchy::find(TESTUSEOPTION_HL));
inter_symbol *UO_s = LocalVariables::add_named_call_as_symbol(I"UO");
use_option *uo;
LOOP_OVER(uo, use_option)
if ((uo->option_used) || (uo->minimum_setting_value >= 0)) {
Produce::inv_primitive(Emit::tree(), IF_BIP);
Produce::down(Emit::tree());
Produce::inv_primitive(Emit::tree(), EQ_BIP);
Produce::down(Emit::tree());
Produce::val_symbol(Emit::tree(), K_value, UO_s);
Produce::val(Emit::tree(), K_number, LITERAL_IVAL,
(inter_ti) uo->allocation_id);
Produce::up(Emit::tree());
Produce::code(Emit::tree());
Produce::down(Emit::tree());
Produce::rtrue(Emit::tree());
Produce::up(Emit::tree());
Produce::up(Emit::tree());
}
Produce::rfalse(Emit::tree());
Routines::end(save);
@<Compile the PrintUseOption routine@> =
inter_name *iname = Kinds::Behaviour::get_iname(K_use_option);
packaging_state save = Routines::begin(iname);
inter_symbol *UO_s = LocalVariables::add_named_call_as_symbol(I"UO");
Produce::inv_primitive(Emit::tree(), SWITCH_BIP);
Produce::down(Emit::tree());
Produce::val_symbol(Emit::tree(), K_value, UO_s);
Produce::code(Emit::tree());
Produce::down(Emit::tree());
use_option *uo;
LOOP_OVER(uo, use_option) {
Produce::inv_primitive(Emit::tree(), CASE_BIP);
Produce::down(Emit::tree());
Produce::val(Emit::tree(), K_number, LITERAL_IVAL,
(inter_ti) uo->allocation_id);
Produce::code(Emit::tree());
Produce::down(Emit::tree());
Produce::inv_primitive(Emit::tree(), PRINT_BIP);
Produce::down(Emit::tree());
TEMPORARY_TEXT(N)
WRITE_TO(N, "%W option", uo->name);
if (uo->minimum_setting_value > 0)
WRITE_TO(N, " [%d]", uo->minimum_setting_value);
Produce::val_text(Emit::tree(), N);
DISCARD_TEXT(N)
Produce::up(Emit::tree());
Produce::up(Emit::tree());
Produce::up(Emit::tree());
}
Produce::up(Emit::tree());
Produce::up(Emit::tree());
Routines::end(save);
@ And we also compile constants. The aim of all of this is to enable Inter
kits for the model world to operate without conditional compilation, which
would make them harder to precompile.
=
void RTUseOptions::configure_template(void) {
int bitmap = 0;
if (global_compilation_settings.scoring_option_set == TRUE) bitmap += 1;
if (global_compilation_settings.undo_prevention) bitmap += 2;
if (global_compilation_settings.serial_comma) bitmap += 4;
if (global_compilation_settings.predictable_randomisation) bitmap += 16;
if (global_compilation_settings.command_line_echoing) bitmap += 32;
if (global_compilation_settings.no_verb_verb_exists) bitmap += 64;
if (global_compilation_settings.American_dialect) bitmap += 128;
if (global_compilation_settings.story_author_given) bitmap += 256;
if (global_compilation_settings.ranking_table_given) bitmap += 512;
inter_name *iname = Hierarchy::find(TEMPLATE_CONFIGURATION_BITMAP_HL);
Emit::named_numeric_constant(iname, (inter_ti) bitmap);
Hierarchy::make_available(Emit::tree(), iname);
iname = Hierarchy::find(TEMPLATE_CONFIGURATION_LOOKMODE_HL);
Emit::named_numeric_constant(iname, (inter_ti) global_compilation_settings.room_description_level);
Hierarchy::make_available(Emit::tree(), iname);
}
@ Most use options take effect by causing a constant to be defined:
=
void RTUseOptions::compile(void) {
use_option *uo;
LOOP_OVER(uo, use_option)
if ((uo->option_used) || (uo->minimum_setting_value >= 0)) {
text_stream *UO = Str::new();
I6T::interpret_i6t(UO,
Lexer::word_raw_text(Wordings::first_wn(uo->expansion) + 1),
uo->minimum_setting_value);
WRITE_TO(UO, "\n");
Emit::intervention(EARLY_LINK_STAGE, NULL, NULL, UO, NULL);
}
}
@ I6 memory settings need to be issued as ICL commands at the top of the I6
source code: see the DM4 for details.
=
void RTUseOptions::compile_pragmas(void) {
Emit::pragma(I"-s");
i6_memory_setting *ms;
LOOP_OVER(ms, i6_memory_setting) {
if ((Str::eq_wide_string(ms->ICL_identifier, L"MAX_LOCAL_VARIABLES")) &&
(TargetVMs::allow_MAX_LOCAL_VARIABLES(Task::vm()) == FALSE))
continue;
TEMPORARY_TEXT(prag)
WRITE_TO(prag, "$%S=%d", ms->ICL_identifier, ms->number);
Emit::pragma(prag);
DISCARD_TEXT(prag)
}
}

View file

@ -1,663 +0,0 @@
[UseOptions::] Use Options.
To control compiler settings, pragma-style.
@h Definitions.
@ The preferred way to pass "do it this way, not that way" instructions to
Inform, in the spirit of natural-language input, is not to use command-line
arguments in the shell but to write suitable sentences in the source text.
For instance:
>> Use American dialect and the serial comma.
Use options like "American dialect" take the place of what would be switches
like |--american-dialect| in a conventional Unix tool. They are themselves
defined by the source text (almost always the Standard Rules). They generally
control run-time behaviour, and as a result Inform deals with them simply by
defining suitable I6 constants in the I6 code being output: conditional
compilation of the I6 template layer then delivers the desired result.
But a few use options are more analogous to compiler pragmas, changing how
Inform treats the rest of the source text. In some cases, they affect only
the source text file they come from -- for example, so that an Extension can
set a use option applying only to itself.
=
typedef struct use_option {
struct wording name; /* word range where name is stored */
struct parse_node *option_expansion; /* definition as given in source */
struct parse_node *where_used; /* where the option is taken in the source */
int option_used; /* set if this option has been taken */
int source_file_scoped; /* scope is the current source file only? */
int minimum_setting_value; /* for those which are numeric */
CLASS_DEFINITION
} use_option;
@ Five of the pragma-like settings are stored here:
= (early code)
int memory_economy_in_force = FALSE;
int dynamic_memory_allocation = 0;
int allow_engineering_notation = FALSE;
int use_exact_parsing_option = FALSE;
int index_figure_thumbnails = 50;
int undo_prevention = FALSE;
int serial_comma = FALSE;
int predictable_randomisation = FALSE;
int command_line_echoing = FALSE;
int American_dialect = FALSE;
int room_description_level = 2;
@ We can also meddle with the I6 memory settings which will be used to finish
compiling the story file. We need this because we have no practical way to
predict when our code will break I6's limits: the only reasonable way it can
work is for the user to hit the limit occasionally, and then raise that limit
by hand with a sentence in the source text.
=
typedef struct i6_memory_setting {
struct text_stream *ICL_identifier; /* see the DM4 for the I6 memory setting names */
int number; /* e.g., |50000| means "at least 50,000" */
CLASS_DEFINITION
} i6_memory_setting;
@ Here first is the sentence handler for "Use ... means ..." sentences.
=
int UseOptions::use_translates_as_SMF(int task, parse_node *V, wording *NPs) {
wording SW = (NPs)?(NPs[0]):EMPTY_WORDING;
wording OW = (NPs)?(NPs[1]):EMPTY_WORDING;
switch (task) { /* "Use American dialect means ..." */
case ACCEPT_SMFT:
if (<use-translates-as-sentence-subject>(SW)) {
V->next = <<rp>>;
<np-unparsed>(OW);
V->next->next = <<rp>>;
return TRUE;
}
break;
case PASS_1_SMFT:
UseOptions::new_use_option(V);
break;
}
return FALSE;
}
void UseOptions::new_use_option(parse_node *p) {
if ((<use-translates-as-sentence-object>(Node::get_text(p->next->next))) &&
(<use-sentence-object>(Node::get_text(p->next)))) {
wording OW = GET_RW(<use-sentence-object>, 1);
use_option *uo = CREATE(use_option);
uo->name = OW;
uo->option_expansion = p->next->next;
uo->option_used = FALSE;
if (<<r>> > 0) uo->minimum_setting_value = <<r>>;
else uo->minimum_setting_value = -1;
uo->source_file_scoped = FALSE;
if ((<notable-use-option-name>(OW)) && (<<r>> == AUTHORIAL_MODESTY_UO))
uo->source_file_scoped = TRUE;
Nouns::new_proper_noun(OW, NEUTER_GENDER, ADD_TO_LEXICON_NTOPT,
MISCELLANEOUS_MC, Rvalues::from_use_option(uo), Task::language_of_syntax());
}
}
@ The object for such a sentence is just an I6 expansion:
=
<use-translates-as-sentence-subject> ::=
use <np-unparsed> ==> { TRUE, RP[1] }
<use-translates-as-sentence-object> ::=
(- ### | ==> { TRUE, - }
... ==> @<Issue PM_UseTranslatesNotI6 problem@>
@<Issue PM_UseTranslatesNotI6 problem@> =
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_UseTranslatesNotI6),
"that translates into something which isn't a simple I6 inclusion",
"placed in '(-' and '-)' markers.");
==> { FALSE, - };
@ Having registered the use option names as miscellaneous, we need to parse
them back that way too:
=
use_option *UseOptions::parse_uo(wording OW) {
parse_node *p = Lexicon::retrieve(MISCELLANEOUS_MC, OW);
if (Rvalues::is_CONSTANT_of_kind(p, K_use_option))
return Rvalues::to_use_option(p);
return NULL;
}
@ "Use" sentences are simple in structure. Their object noun phrases are
articled lists:
>> Use American dialect and the serial comma.
Each of the entries in this list must match the following; the text of the
option name is taken from the |...| or |###| as appropriate:
=
<use-sentence-object> ::=
... of at least <cardinal-number-unlimited> | ==> { R[1], - }
### of <cardinal-number-unlimited> | ==> { -R[1], - }
<definite-article> ... | ==> { 0, - }
... ==> { 0, - }
<use-inter-pipeline> ::=
inter pipeline {<quoted-text>} ==> { TRUE, - }
@ These are use option names which Inform provides special support for; it
recognises the English names when they are defined by the Standard Rules. (So
there is no need to translate this to other languages.)
=
<notable-use-option-name> ::=
authorial modesty |
dynamic memory allocation |
memory economy |
no deprecated features |
numbered rules |
telemetry recordings |
scoring |
no scoring |
engineering notation |
unabbreviated object names |
index figure thumbnails |
gn testing version |
undo prevention |
serial comma |
predictable randomisation |
command line echoing |
american dialect |
full-length room descriptions |
abbreviated room descriptions |
verbose room descriptions |
brief room descriptions |
superbrief room descriptions
@ And these correspond to:
@d AUTHORIAL_MODESTY_UO 0
@d DYNAMIC_MEMORY_ALLOCATION_UO 1
@d MEMORY_ECONOMY_UO 2
@d NO_DEPRECATED_FEATURES_UO 3
@d NUMBERED_RULES_UO 4
@d TELEMETRY_RECORDING_UO 5
@d SCORING_UO 6
@d NO_SCORING_UO 7
@d ENGINEERING_NOTATION_UO 8
@d UNABBREVIATED_OBJECT_NAMES_UO 9
@d INDEX_FIGURE_THUMBNAILS_UO 10
@d GN_TESTING_VERSION_UO 11
@d UNDO_PREVENTION_UO 12
@d SERIAL_COMMA_UO 13
@d PREDICTABLE_RANDOMISATION_UO 14
@d COMMAND_LINE_ECHOING_UO 15
@d AMERICAN_DIALECT_UO 16
@d FULL_LENGTH_ROOM_DESCRIPTIONS_UO 17
@d ABBREVIATED_ROOM_DESCRIPTIONS_UO 18
@d VERBOSE_ROOM_DESCRIPTIONS_UO 19
@d BRIEF_ROOM_DESCRIPTIONS_UO 20
@d SUPERBRIEF_ROOM_DESCRIPTIONS_UO 21
@ =
int UseOptions::use_SMF(int task, parse_node *V, wording *NPs) {
wording OW = (NPs)?(NPs[1]):EMPTY_WORDING;
switch (task) { /* "Use American dialect." */
case ACCEPT_SMFT:
<np-articled-list>(OW);
V->next = <<rp>>;
return TRUE;
case ALLOW_IN_OPTIONS_FILE_SMFT:
return TRUE;
case PASS_1_SMFT:
case PASS_2_SMFT:
UseOptions::set_use_options(V->next);
break;
}
return FALSE;
}
void UseOptions::handle_set_use_option(parse_node *p) {
UseOptions::set_use_options(p->down->next);
}
void UseOptions::set_use_options(parse_node *p) {
if (Node::get_type(p) == AND_NT) {
UseOptions::set_use_options(p->down);
UseOptions::set_use_options(p->down->next);
return;
}
if (<use-inter-pipeline>(Node::get_text(p))) @<Set the chain given in this word range@>
else if (<use-sentence-object>(Node::get_text(p))) @<Set the option given in this word range@>;
if (global_pass_state.pass == 1) return;
LOG("Used: %W\n", Node::get_text(p));
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_UnknownUseOption),
"that isn't a 'Use' option known to me",
"and needs to be one of the ones listed in the documentation.");
}
@<Set the option given in this word range@> =
int min_setting = -1;
if (<<r>> < 0) @<Deal with the case of an I6 memory setting@>;
if (<<r>> > 0) min_setting = <<r>>;
wording OW = GET_RW(<use-sentence-object>, 1);
use_option *uo = UseOptions::parse_uo(OW);
if (uo) {
inform_extension *E = NULL;
@<Adjust the minimum setting@>;
if (uo->source_file_scoped) {
E = Extensions::corresponding_to(Lexer::file_of_origin(Wordings::first_wn(OW)));
if (E == NULL) { /* that is, if used in the main source text */
uo->option_used = TRUE;
uo->where_used = current_sentence;
}
} else {
uo->option_used = TRUE;
uo->where_used = current_sentence;
}
UseOptions::set_immediate_option_flags(OW, uo);
return;
}
@<Set the chain given in this word range@> =
wording CW = GET_RW(<use-inter-pipeline>, 1);
if (global_pass_state.pass == 1) {
TEMPORARY_TEXT(p)
WRITE_TO(p, "%W", CW);
Str::delete_first_character(p);
Str::delete_last_character(p);
Supervisor::set_inter_pipeline(p);
DISCARD_TEXT(p)
}
return;
@<Adjust the minimum setting@> =
if (uo->minimum_setting_value == -1) {
if (min_setting != -1)
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_UONotNumerical),
"that 'Use' option does not have a numerical setting",
"but is either used or not used.");
} else {
if (min_setting >= uo->minimum_setting_value)
uo->minimum_setting_value = min_setting;
}
@<Deal with the case of an I6 memory setting@> =
int n = -<<r>>, w1 = Wordings::first_wn(Node::get_text(p));
TEMPORARY_TEXT(new_identifier)
WRITE_TO(new_identifier, "%+W", Wordings::one_word(w1));
if (Str::len(new_identifier) > 63) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_BadICLIdentifier),
"that is too long to be an ICL identifier",
"so can't be the name of any I6 memory setting.");
}
i6_memory_setting *ms;
LOOP_OVER(ms, i6_memory_setting)
if (Str::eq(new_identifier, ms->ICL_identifier)) {
if (ms->number < n) ms->number = n;
return;
}
ms = CREATE(i6_memory_setting);
ms->ICL_identifier = Str::duplicate(new_identifier);
ms->number = n;
DISCARD_TEXT(new_identifier)
return;
@ For the pragma-like UOs:
=
use_option *uo_being_set = NULL;
void UseOptions::set_immediate_option_flags(wording W, use_option *uo) {
uo_being_set = uo;
<immediate-use>(W);
}
@ Some use options need to acted on immediately -- for instance, if they're
set in the "Options.txt" file and they affect how Inform parses subsequent
sentences. The following works through a list of use options, acting on
those which need immediate action.
=
<immediate-use> ::=
... | ==> { lookahead }
<immediate-use-entry> <immediate-use-tail> |
<immediate-use-entry>
<immediate-use-tail> ::=
, _and <immediate-use> |
_,/and <immediate-use>
<immediate-use-entry> ::=
<notable-use-option-name> | ==> @<Act on this use option immediately@>
......
@<Act on this use option immediately@> =
switch (R[1]) {
case AUTHORIAL_MODESTY_UO: {
inform_extension *E =
Extensions::corresponding_to(
Lexer::file_of_origin(Wordings::first_wn(W)));
if (E == NULL) Extensions::set_general_authorial_modesty();
else Extensions::set_authorial_modesty(E);
break;
}
case DYNAMIC_MEMORY_ALLOCATION_UO:
if (uo_being_set) dynamic_memory_allocation = uo_being_set->minimum_setting_value;
break;
case MEMORY_ECONOMY_UO: memory_economy_in_force = TRUE; break;
case NO_DEPRECATED_FEATURES_UO: no_deprecated_features = TRUE; break;
case NUMBERED_RULES_UO: Rules::set_numbered_rules(); break;
case TELEMETRY_RECORDING_UO: telemetry_recording = TRUE; break;
case SCORING_UO: scoring_option_set = TRUE; break;
case NO_SCORING_UO: scoring_option_set = FALSE; break;
case ENGINEERING_NOTATION_UO: allow_engineering_notation = TRUE; break;
case UNABBREVIATED_OBJECT_NAMES_UO: use_exact_parsing_option = TRUE; break;
case INDEX_FIGURE_THUMBNAILS_UO:
if (uo_being_set) index_figure_thumbnails = uo_being_set->minimum_setting_value;
break;
case GN_TESTING_VERSION_UO:
break;
case UNDO_PREVENTION_UO: undo_prevention = TRUE; break;
case SERIAL_COMMA_UO: serial_comma = TRUE; break;
case PREDICTABLE_RANDOMISATION_UO: predictable_randomisation = TRUE; break;
case COMMAND_LINE_ECHOING_UO: command_line_echoing = TRUE; break;
case AMERICAN_DIALECT_UO: American_dialect = TRUE; break;
case FULL_LENGTH_ROOM_DESCRIPTIONS_UO: room_description_level = 2; break;
case ABBREVIATED_ROOM_DESCRIPTIONS_UO: room_description_level = 3; break;
case VERBOSE_ROOM_DESCRIPTIONS_UO: room_description_level = 2; break;
case BRIEF_ROOM_DESCRIPTIONS_UO: room_description_level = 1; break;
case SUPERBRIEF_ROOM_DESCRIPTIONS_UO: room_description_level = 3; break;
}
@ It's possible to configure the size of the memory allocation for the run-time
heap, on which strings, lists and stored actions sit; here's where the level
is read:
=
int UseOptions::get_dynamic_memory_allocation(void) {
return dynamic_memory_allocation;
}
@ This keeps the Contents page of the index from exploding:
=
int UseOptions::get_index_figure_thumbnails(void) {
return index_figure_thumbnails;
}
@ Exact parsing in the lexicon:
@d PARSE_EXACTLY_LEXICON_CALLBACK UseOptions::parse_exactly
=
int UseOptions::parse_exactly(excerpt_meaning *em) {
if (em->meaning_code == NOUN_MC) {
if (use_exact_parsing_option) return TRUE;
return FALSE;
}
return TRUE;
}
@ And this is what the rest of Inform calls to find out whether a particular
pragma is set:
=
int UseOptions::uo_set_from(use_option *uo, int category, inform_extension *E) {
source_file *sf = (uo->where_used)?(Lexer::file_of_origin(Wordings::first_wn(Node::get_text(uo->where_used)))):NULL;
inform_extension *efo = (sf)?(Extensions::corresponding_to(sf)):NULL;
switch (category) {
case 1: if ((sf) && (efo == NULL)) return TRUE; break;
case 2: if (sf == NULL) return TRUE; break;
case 3: if ((sf) && (efo == E)) return TRUE; break;
}
return FALSE;
}
@ Most use options, though, take effect by causing a constant to be defined
in the I6 code, or more generally by inserting some I6.
(The flummery about memory economy is to take care of obscure bugs which
can occur if an attempt to release with an existing story file goes wrong
and problem messages must be issued.)
=
void UseOptions::compile(void) {
use_option *uo;
LOOP_OVER(uo, use_option)
if ((uo->option_used) || (uo->minimum_setting_value >= 0)) {
text_stream *UO = Str::new();
I6T::interpret_i6t(UO,
Lexer::word_raw_text(Wordings::first_wn(Node::get_text(uo->option_expansion)) + 1),
uo->minimum_setting_value);
WRITE_TO(UO, "\n");
Emit::intervention(EARLY_LINK_STAGE, NULL, NULL, UO, NULL);
}
}
@ I6 memory settings need to be issued as ICL commands at the top of the I6
source code: see the DM4 for details.
=
void UseOptions::compile_icl_commands(void) {
Emit::pragma(I"-s");
i6_memory_setting *ms;
LOOP_OVER(ms, i6_memory_setting) {
if ((Str::eq_wide_string(ms->ICL_identifier, L"MAX_LOCAL_VARIABLES")) &&
(TargetVMs::allow_MAX_LOCAL_VARIABLES(Task::vm()) == FALSE))
continue;
TEMPORARY_TEXT(prag)
WRITE_TO(prag, "$%S=%d", ms->ICL_identifier, ms->number);
Emit::pragma(prag);
DISCARD_TEXT(prag)
}
}
@ Now for indexing, where there's nothing much to see.
@d MAIN_TEXT_UO_ORIGIN 1
@d OPTIONS_FILE_UO_ORIGIN 2
@d EXTENSION_UO_ORIGIN 3
=
void UseOptions::index(OUTPUT_STREAM) {
HTML_OPEN("p"); WRITE("The following use options are in force:"); HTML_CLOSE("p");
UseOptions::index_options_in_force_from(OUT, MAIN_TEXT_UO_ORIGIN, NULL);
UseOptions::index_options_in_force_from(OUT, OPTIONS_FILE_UO_ORIGIN, NULL);
inform_extension *E;
LOOP_OVER(E, inform_extension)
UseOptions::index_options_in_force_from(OUT, EXTENSION_UO_ORIGIN, E);
int nt = 0;
use_option *uo;
LOOP_OVER(uo, use_option) {
if (uo->source_file_scoped) continue;
if ((uo->option_used == FALSE) && (uo->minimum_setting_value < 0)) nt++;
}
if (nt > 0) {
HTML_OPEN("p"); WRITE("Whereas these are not in force:"); HTML_CLOSE("p");
HTML::open_indented_p(OUT, 2, "tight");
LOOP_OVER(uo, use_option) {
if (uo->source_file_scoped) continue;
if ((uo->option_used == FALSE) && (uo->minimum_setting_value < 0)) {
@<Write in the index line for a use option not taken@>;
if (--nt > 0) WRITE(", ");
}
}
HTML_CLOSE("p");
}
}
@<Write in the index line for a use option not taken@> =
HTML_OPEN_WITH("span", "style=\"white-space:nowrap\";");
TEMPORARY_TEXT(TEMP)
WRITE_TO(TEMP, "Use %+W.", uo->name);
PasteButtons::paste_text(OUT, TEMP);
DISCARD_TEXT(TEMP)
WRITE("&nbsp;%+W", uo->name);
HTML_CLOSE("span");
@ =
void UseOptions::index_options_in_force_from(OUTPUT_STREAM, int category, inform_extension *E) {
int N = 0;
use_option *uo;
LOOP_OVER(uo, use_option) {
if (uo->source_file_scoped) continue;
if ((uo->option_used) && (uo->minimum_setting_value < 0) &&
(UseOptions::uo_set_from(uo, category, E))) {
if (N++ == 0) @<Write in the use option subheading@>;
@<Write in the index line for a use option taken@>;
}
}
LOOP_OVER(uo, use_option) {
if (uo->source_file_scoped) continue;
if (((uo->option_used) && (uo->minimum_setting_value >= 0)) &&
(UseOptions::uo_set_from(uo, category, E))) {
if (N++ == 0) @<Write in the use option subheading@>;
@<Write in the index line for a use option taken@>;
}
}
}
@<Write in the use option subheading@> =
HTML::open_indented_p(OUT, 2, "tight");
HTML::begin_colour(OUT, I"808080");
WRITE("Set from ");
switch (category) {
case MAIN_TEXT_UO_ORIGIN:
WRITE("the source text"); break;
case OPTIONS_FILE_UO_ORIGIN:
WRITE("the Options.txt configuration file");
Index::DocReferences::link(OUT, I"OPTIONSFILE"); break;
case EXTENSION_UO_ORIGIN:
if (Extensions::is_standard(E)) WRITE("the ");
else WRITE("the extension ");
WRITE("%S", E->as_copy->edition->work->title);
break;
}
WRITE(":");
HTML::end_colour(OUT);
HTML_CLOSE("p");
@<Write in the index line for a use option taken@> =
HTML::open_indented_p(OUT, 3, "tight");
WRITE("Use %+W", uo->name);
if (uo->minimum_setting_value >= 0) WRITE(" of at least %d", uo->minimum_setting_value);
if (uo->where_used) Index::link(OUT, Wordings::first_wn(Node::get_text(uo->where_used)));
if (uo->minimum_setting_value >= 0) {
WRITE("&nbsp;");
TEMPORARY_TEXT(TEMP)
WRITE_TO(TEMP, "Use %+W of at least %d.", uo->name, 2*(uo->minimum_setting_value));
PasteButtons::paste_text(OUT, TEMP);
DISCARD_TEXT(TEMP)
WRITE("&nbsp;<i>Double this</i>");
}
HTML_CLOSE("p");
@ A relatively late addition to the design of use options was to make them
values at run-time, of the kind "use option". We need to provide two routines:
one to test them, one to print them.
=
void UseOptions::TestUseOption_routine(void) {
inter_name *iname = Hierarchy::find(NO_USE_OPTIONS_HL);
Emit::named_numeric_constant(iname, (inter_ti) NUMBER_CREATED(use_option));
@<Compile the TestUseOption routine@>;
@<Compile the PrintUseOption routine@>;
}
@<Compile the TestUseOption routine@> =
packaging_state save = Routines::begin(Hierarchy::find(TESTUSEOPTION_HL));
inter_symbol *UO_s = LocalVariables::add_named_call_as_symbol(I"UO");
use_option *uo;
LOOP_OVER(uo, use_option)
if ((uo->option_used) || (uo->minimum_setting_value >= 0)) {
Produce::inv_primitive(Emit::tree(), IF_BIP);
Produce::down(Emit::tree());
Produce::inv_primitive(Emit::tree(), EQ_BIP);
Produce::down(Emit::tree());
Produce::val_symbol(Emit::tree(), K_value, UO_s);
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, (inter_ti) uo->allocation_id);
Produce::up(Emit::tree());
Produce::code(Emit::tree());
Produce::down(Emit::tree());
Produce::rtrue(Emit::tree());
Produce::up(Emit::tree());
Produce::up(Emit::tree());
}
Produce::rfalse(Emit::tree());
Routines::end(save);
@<Compile the PrintUseOption routine@> =
inter_name *iname = Kinds::Behaviour::get_iname(K_use_option);
packaging_state save = Routines::begin(iname);
inter_symbol *UO_s = LocalVariables::add_named_call_as_symbol(I"UO");
Produce::inv_primitive(Emit::tree(), SWITCH_BIP);
Produce::down(Emit::tree());
Produce::val_symbol(Emit::tree(), K_value, UO_s);
Produce::code(Emit::tree());
Produce::down(Emit::tree());
use_option *uo;
LOOP_OVER(uo, use_option) {
Produce::inv_primitive(Emit::tree(), CASE_BIP);
Produce::down(Emit::tree());
Produce::val(Emit::tree(), K_number, LITERAL_IVAL, (inter_ti) uo->allocation_id);
Produce::code(Emit::tree());
Produce::down(Emit::tree());
Produce::inv_primitive(Emit::tree(), PRINT_BIP);
Produce::down(Emit::tree());
TEMPORARY_TEXT(N)
WRITE_TO(N, "%W option", uo->name);
if (uo->minimum_setting_value > 0)
WRITE_TO(N, " [%d]", uo->minimum_setting_value);
Produce::val_text(Emit::tree(), N);
DISCARD_TEXT(N)
Produce::up(Emit::tree());
Produce::up(Emit::tree());
Produce::up(Emit::tree());
}
Produce::up(Emit::tree());
Produce::up(Emit::tree());
Routines::end(save);
@
= (early code)
int no_verb_verb_exists = FALSE;
int story_author_given = FALSE;
int ranking_table_given = FALSE;
int scoring_option_set = NOT_APPLICABLE; /* Whether in this case a score is kept at run time */
int no_deprecated_features = FALSE; /* forbid syntaxes marked as deprecated? */
@ =
void UseOptions::no_verb_verb(void) {
no_verb_verb_exists = TRUE;
}
void UseOptions::story_author_given(void) {
story_author_given = TRUE;
}
void UseOptions::ranking_table_given(void) {
ranking_table_given = TRUE;
}
void UseOptions::configure_template(void) {
int bitmap = 0;
if (scoring_option_set == TRUE) bitmap += 1;
if (undo_prevention) bitmap += 2;
if (serial_comma) bitmap += 4;
if (predictable_randomisation) bitmap += 16;
if (command_line_echoing) bitmap += 32;
if (no_verb_verb_exists) bitmap += 64;
if (American_dialect) bitmap += 128;
if (story_author_given) bitmap += 256;
if (ranking_table_given) bitmap += 512;
inter_name *iname = Hierarchy::find(TEMPLATE_CONFIGURATION_BITMAP_HL);
Emit::named_numeric_constant(iname, (inter_ti) bitmap);
Hierarchy::make_available(Emit::tree(), iname);
iname = Hierarchy::find(TEMPLATE_CONFIGURATION_LOOKMODE_HL);
Emit::named_numeric_constant(iname, (inter_ti) room_description_level);
Hierarchy::make_available(Emit::tree(), iname);
}

View file

@ -91,7 +91,7 @@ be a single word, and are hyphenated.
meaning_of_mean = SpecialMeanings::declare(NewVerbs::verb_means_SMF, I"verb-means", 3);
SpecialMeanings::declare(LiteralPatterns::specifies_SMF, I"specifies-notation", 4);
SpecialMeanings::declare(UseOptions::use_translates_as_SMF, I"use-translates", 4);
SpecialMeanings::declare(NewUseOptions::use_translates_as_SMF, I"use-translates", 4);
SpecialMeanings::declare(UseOptions::use_SMF, I"use", 4);
SpecialMeanings::declare(Sentences::DLRs::include_in_SMF, I"include-in", 4);
SpecialMeanings::declare(Sentences::DLRs::omit_from_SMF, I"omit-from", 4);

View file

@ -0,0 +1,271 @@
[NewUseOptions::] New Use Option Requests.
Special sentences for creating new use options.
@ Use options in Inform are akin to |#pragma| directives for the C family of
compilers: they are written in the source code of the program being compiled,
but they're not really part of that program, and are instead instructions to
the compiler to do something in a different way.[1]
Use options have natural-language names, and are created with sentences like:
>> Use American dialect translates as (- Constant DIALECT_US; -).
This syntax is now rather odd-looking, but most users never need it: it's used
mainly in the Basic Inform extension to create the standard set of use options.
Note the Inform 6 notation used for the Inter code between the |(-| and |-)|
brackets.
[1] The design of use options is arguably more muddled, because they do not all
correspond to compiler features: some affect the behaviour of Inter kits, and
some can be user-defined entirely.
@ A "... translates as ..." sentence has this special meaning if its SP and
OP match the following:
=
<use-translates-as-sentence-subject> ::=
use <np-unparsed> ==> { TRUE, RP[1] }
<use-translates-as-sentence-object> ::=
(- ### | ==> { -, - }
... ==> @<Issue PM_UseTranslatesNotI6 problem@>
@<Issue PM_UseTranslatesNotI6 problem@> =
StandardProblems::sentence_problem(Task::syntax_tree(),
_p_(PM_UseTranslatesNotI6),
"that translates into something which isn't a simple Inter inclusion",
"placed in '(-' and '-)' markers.");
==> { FALSE, - };
@ =
int NewUseOptions::use_translates_as_SMF(int task, parse_node *V, wording *NPs) {
wording SW = (NPs)?(NPs[0]):EMPTY_WORDING;
wording OW = (NPs)?(NPs[1]):EMPTY_WORDING;
switch (task) { /* "Use American dialect means ..." */
case ACCEPT_SMFT:
if ((<use-translates-as-sentence-object>(OW)) &&
(<use-translates-as-sentence-subject>(SW))) {
V->next = <<rp>>;
<np-unparsed>(OW);
V->next->next = <<rp>>;
return TRUE;
}
break;
case PASS_1_SMFT:
@<Create a new use option@>;
break;
}
return FALSE;
}
@ Use options correspond to instances of the following:
=
typedef struct use_option {
struct wording name; /* word range where name is stored */
struct wording expansion; /* definition as given in source */
struct parse_node *where_used; /* where the option is taken in the source */
int option_used; /* set if this option has been taken */
int source_file_scoped; /* scope is the current source file only? */
int minimum_setting_value; /* for those which are numeric */
int notable_option_code; /* or negative if not notable */
CLASS_DEFINITION
} use_option;
@<Create a new use option@> =
wording SP = Node::get_text(V->next);
wording OP = Node::get_text(V->next->next);
<use-setting>(SP); /* always passes */
int N = <<r>>;
use_option *uo = CREATE(use_option);
uo->name = GET_RW(<use-setting>, 1);
uo->expansion = OP;
uo->option_used = FALSE;
uo->minimum_setting_value = (N > 0) ? N : -1;
uo->source_file_scoped = FALSE;
uo->notable_option_code = -1;
if (<notable-use-option-name>(uo->name)) uo->notable_option_code = <<r>>;
if (uo->notable_option_code == AUTHORIAL_MODESTY_UO) uo->source_file_scoped = TRUE;
Nouns::new_proper_noun(uo->name, NEUTER_GENDER, ADD_TO_LEXICON_NTOPT,
MISCELLANEOUS_MC, Rvalues::from_use_option(uo), Task::language_of_syntax());
@ Having registered the use option names as miscellaneous, we need to parse
them back that way too:
=
use_option *NewUseOptions::parse_uo(wording OW) {
parse_node *p = Lexicon::retrieve(MISCELLANEOUS_MC, OW);
if (Rvalues::is_CONSTANT_of_kind(p, K_use_option)) return Rvalues::to_use_option(p);
return NULL;
}
@ The following sets an option.
=
void NewUseOptions::set(use_option *uo, int min_setting, source_file *from) {
if (uo->minimum_setting_value == -1) {
if (min_setting != -1)
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_UONotNumerical),
"that 'Use' option does not have a numerical setting",
"but is either used or not used.");
} else {
if (min_setting >= uo->minimum_setting_value)
uo->minimum_setting_value = min_setting;
}
if (uo->source_file_scoped) {
inform_extension *E = Extensions::corresponding_to(from);
if (E == NULL) { /* that is, if used in the main source text */
uo->option_used = TRUE;
uo->where_used = current_sentence;
}
} else {
uo->option_used = TRUE;
uo->where_used = current_sentence;
}
CompilationSettings::set(uo->notable_option_code,
uo->minimum_setting_value, from);
}
@ And this is what the rest of Inform calls to find out whether a particular
pragma is set:
=
int NewUseOptions::uo_set_from(use_option *uo, int category, inform_extension *E) {
source_file *sf = (uo->where_used)?
(Lexer::file_of_origin(Wordings::first_wn(Node::get_text(uo->where_used)))):NULL;
inform_extension *efo = (sf)?(Extensions::corresponding_to(sf)):NULL;
switch (category) {
case 1: if ((sf) && (efo == NULL)) return TRUE; break;
case 2: if (sf == NULL) return TRUE; break;
case 3: if ((sf) && (efo == E)) return TRUE; break;
}
return FALSE;
}
@ We can also meddle with the I6 memory settings which will be used to finish
compiling the story file. We need this because we have no practical way to
predict when our code will break I6's limits: the only reasonable way it can
work is for the user to hit the limit occasionally, and then raise that limit
by hand with a sentence in the source text.
=
typedef struct i6_memory_setting {
struct text_stream *ICL_identifier; /* see the DM4 for the I6 memory setting names */
int number; /* e.g., |50000| means "at least 50,000" */
CLASS_DEFINITION
} i6_memory_setting;
@ =
void NewUseOptions::memory_setting(text_stream *identifier, int n) {
i6_memory_setting *ms;
LOOP_OVER(ms, i6_memory_setting)
if (Str::eq(identifier, ms->ICL_identifier)) {
if (ms->number < n) ms->number = n;
return;
}
ms = CREATE(i6_memory_setting);
ms->ICL_identifier = Str::duplicate(identifier);
ms->number = n;
}
@ Now for indexing, where there's nothing much to see.
@d MAIN_TEXT_UO_ORIGIN 1
@d OPTIONS_FILE_UO_ORIGIN 2
@d EXTENSION_UO_ORIGIN 3
=
void NewUseOptions::index(OUTPUT_STREAM) {
HTML_OPEN("p"); WRITE("The following use options are in force:"); HTML_CLOSE("p");
NewUseOptions::index_options_in_force_from(OUT, MAIN_TEXT_UO_ORIGIN, NULL);
NewUseOptions::index_options_in_force_from(OUT, OPTIONS_FILE_UO_ORIGIN, NULL);
inform_extension *E;
LOOP_OVER(E, inform_extension)
NewUseOptions::index_options_in_force_from(OUT, EXTENSION_UO_ORIGIN, E);
int nt = 0;
use_option *uo;
LOOP_OVER(uo, use_option) {
if (uo->source_file_scoped) continue;
if ((uo->option_used == FALSE) && (uo->minimum_setting_value < 0)) nt++;
}
if (nt > 0) {
HTML_OPEN("p"); WRITE("Whereas these are not in force:"); HTML_CLOSE("p");
HTML::open_indented_p(OUT, 2, "tight");
LOOP_OVER(uo, use_option) {
if (uo->source_file_scoped) continue;
if ((uo->option_used == FALSE) && (uo->minimum_setting_value < 0)) {
@<Write in the index line for a use option not taken@>;
if (--nt > 0) WRITE(", ");
}
}
HTML_CLOSE("p");
}
}
@<Write in the index line for a use option not taken@> =
HTML_OPEN_WITH("span", "style=\"white-space:nowrap\";");
TEMPORARY_TEXT(TEMP)
WRITE_TO(TEMP, "Use %+W.", uo->name);
PasteButtons::paste_text(OUT, TEMP);
DISCARD_TEXT(TEMP)
WRITE("&nbsp;%+W", uo->name);
HTML_CLOSE("span");
@ =
void NewUseOptions::index_options_in_force_from(OUTPUT_STREAM, int category, inform_extension *E) {
int N = 0;
use_option *uo;
LOOP_OVER(uo, use_option) {
if (uo->source_file_scoped) continue;
if ((uo->option_used) && (uo->minimum_setting_value < 0) &&
(NewUseOptions::uo_set_from(uo, category, E))) {
if (N++ == 0) @<Write in the use option subheading@>;
@<Write in the index line for a use option taken@>;
}
}
LOOP_OVER(uo, use_option) {
if (uo->source_file_scoped) continue;
if (((uo->option_used) && (uo->minimum_setting_value >= 0)) &&
(NewUseOptions::uo_set_from(uo, category, E))) {
if (N++ == 0) @<Write in the use option subheading@>;
@<Write in the index line for a use option taken@>;
}
}
}
@<Write in the use option subheading@> =
HTML::open_indented_p(OUT, 2, "tight");
HTML::begin_colour(OUT, I"808080");
WRITE("Set from ");
switch (category) {
case MAIN_TEXT_UO_ORIGIN:
WRITE("the source text"); break;
case OPTIONS_FILE_UO_ORIGIN:
WRITE("the Options.txt configuration file");
Index::DocReferences::link(OUT, I"OPTIONSFILE"); break;
case EXTENSION_UO_ORIGIN:
if (Extensions::is_standard(E)) WRITE("the ");
else WRITE("the extension ");
WRITE("%S", E->as_copy->edition->work->title);
break;
}
WRITE(":");
HTML::end_colour(OUT);
HTML_CLOSE("p");
@<Write in the index line for a use option taken@> =
HTML::open_indented_p(OUT, 3, "tight");
WRITE("Use %+W", uo->name);
if (uo->minimum_setting_value >= 0) WRITE(" of at least %d", uo->minimum_setting_value);
if (uo->where_used) Index::link(OUT, Wordings::first_wn(Node::get_text(uo->where_used)));
if (uo->minimum_setting_value >= 0) {
WRITE("&nbsp;");
TEMPORARY_TEXT(TEMP)
WRITE_TO(TEMP, "Use %+W of at least %d.", uo->name, 2*(uo->minimum_setting_value));
PasteButtons::paste_text(OUT, TEMP);
DISCARD_TEXT(TEMP)
WRITE("&nbsp;<i>Double this</i>");
}
HTML_CLOSE("p");

View file

@ -0,0 +1,113 @@
[UseOptions::] Use Options.
Special sentences for setting compilation options.
@h The Use sentence.
Note that any sentence beginning with the word "Use" is accepted here, which
is a very wide net: unlike most special meaning sentences, there's no attempt
to cut down the risk of false positives by screening the noun phrase.
=
int UseOptions::use_SMF(int task, parse_node *V, wording *NPs) {
wording OW = (NPs)?(NPs[1]):EMPTY_WORDING;
switch (task) { /* "Use American dialect." */
case ACCEPT_SMFT:
<np-articled-list>(OW);
V->next = <<rp>>;
return TRUE;
case ALLOW_IN_OPTIONS_FILE_SMFT:
return TRUE;
case PASS_1_SMFT:
case PASS_2_SMFT:
UseOptions::set_use_options(V->next);
break;
}
return FALSE;
}
@ "Use" sentences are simple in structure. Their object noun phrases are
articled lists:
>> Use American dialect and the serial comma.
=
void UseOptions::set_use_options(parse_node *p) {
if (Node::get_type(p) == AND_NT) {
UseOptions::set_use_options(p->down);
UseOptions::set_use_options(p->down->next);
return;
}
@<Set a single use option@>;
}
@ Each of the entries in this list must match the following; the text of the
option name is taken from the |...| or |###| as appropriate:
=
<use-inter-pipeline> ::=
inter pipeline {<quoted-text>} ==> { TRUE, - }
<use-memory-setting> ::=
### of <cardinal-number-unlimited> ==> { R[1], - }
<use-setting> ::=
... of at least <cardinal-number-unlimited> | ==> { R[1], - }
<definite-article> ... | ==> { -1, - }
... ==> { -1, - }
@<Set a single use option@> =
wording S = Node::get_text(p);
if (<use-inter-pipeline>(S))
@<Set the pipeline given in this word range@>
else if (<use-memory-setting>(S))
@<Set a memory setting@>
else if (<use-setting>(S))
@<Set the option given in this word range@>
@ This is an undocumented feature used during the transition from I6 to Inter:
@<Set the pipeline given in this word range@> =
wording CW = GET_RW(<use-inter-pipeline>, 1);
if (global_pass_state.pass == 1) {
TEMPORARY_TEXT(p)
WRITE_TO(p, "%W", CW);
Str::delete_first_character(p);
Str::delete_last_character(p);
Supervisor::set_inter_pipeline(p);
DISCARD_TEXT(p)
}
@ ICL, the "Inform 6 control language", is a set of a pragma-like settings for
the I6 compiler. Of course, in the age in Inter, those might well be ignored,
since the compiler next down the chain may no longer be I6.
See //Use Options at Run Time// for what happens to these.
@<Set a memory setting@> =
int n = <<r>>, w1 = Wordings::first_wn(S);
TEMPORARY_TEXT(icl_identifier)
WRITE_TO(icl_identifier, "%+W", Wordings::one_word(w1));
if (Str::len(icl_identifier) > 63) {
StandardProblems::sentence_problem(Task::syntax_tree(),
_p_(PM_BadICLIdentifier),
"that is too long to be an ICL identifier",
"so can't be the name of any I6 memory setting.");
}
NewUseOptions::memory_setting(icl_identifier, n);
DISCARD_TEXT(icl_identifier)
@ Whereas thus is the standard use option syntax:
@<Set the option given in this word range@> =
int min_setting = <<r>>;
wording OW = GET_RW(<use-setting>, 1);
use_option *uo = NewUseOptions::parse_uo(OW);
if (uo) NewUseOptions::set(uo, min_setting,
Lexer::file_of_origin(Wordings::first_wn(OW)));
else if (global_pass_state.pass > 1) {
LOG("Used: %W\n", S);
StandardProblems::sentence_problem(Task::syntax_tree(),
_p_(PM_UnknownUseOption),
"that isn't a 'Use' option known to me",
"and needs to be one of the ones listed in the documentation.");
}

View file

@ -363,7 +363,7 @@ char *NonlocalVariables::get_write_schema(nonlocal_variable *nlv) {
void NonlocalVariables::warn_about_change(nonlocal_variable *nlv) {
#ifdef IF_MODULE
if ((score_VAR) && (nlv == score_VAR)) {
if ((scoring_option_set == FALSE) || (scoring_option_set == NOT_APPLICABLE)) {
if ((global_compilation_settings.scoring_option_set == FALSE) || (global_compilation_settings.scoring_option_set == NOT_APPLICABLE)) {
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_CantChangeScore),
"this is a story with no scoring",
"so it makes no sense to change the 'score' value. You can add "

View file

@ -15,6 +15,7 @@ Chapter 1: Configuration and Control
How To Compile
Core Preform
Progress Percentages
Compilation Settings
Chapter 2: Problem Messages
"The issuing of Problem messages."
@ -35,6 +36,8 @@ Chapter 4: Assertions with Special Meanings
Debugging Log Requests
Pluralisation Requests
Translation Requests
New Use Option Requests
Use Option Requests
Chapter 5: Assertions with Regular Meanings
"Turning regular assertion sentences into propositions about the model world."
@ -262,7 +265,6 @@ Chapter 26: Compilation Utilities
"Mainly low-level utilities for compiling code."
Fundamental Constants
Inform 6 Inclusions
Use Options
List Together
Jump Labels
Compiled Text
@ -271,6 +273,7 @@ Chapter 26: Compilation Utilities
Plugins
Plugin Calls
Test Scripts
Use Options at Run Time
Chapter 27: Bridge to Inter Module
"Emitting Inter code ready for the code-generator."

View file

@ -242,7 +242,7 @@ void PL::Bibliographic::compile_constants(void) {
NonlocalVariables::seek_initial_value(iname, &v1, &v2, story_author_VAR);
Emit::named_generic_constant(iname, v1, v2);
Hierarchy::make_available(Emit::tree(), iname);
UseOptions::story_author_given();
global_compilation_settings.story_author_given = TRUE;
} else {
inter_name *iname = Hierarchy::find(STORY_AUTHOR_HL);
inter_ti v1 = LITERAL_IVAL, v2 = 0;

View file

@ -50,7 +50,7 @@ void PL::Score::compile_max_score(void) {
Assertions::PropertyKnowledge::initialise_global_variable(
max_score_VAR, Node::get_evaluation(PN));
Hierarchy::make_available(Emit::tree(), iname);
UseOptions::ranking_table_given();
global_compilation_settings.ranking_table_given = TRUE;
rt_made = TRUE;
break;
}

View file

@ -170,7 +170,7 @@ grammar_verb *PL::Parsing::Verbs::find_or_create_command(wording W) {
if (Wordings::empty(W)) {
inter_name *iname = Hierarchy::find(NO_VERB_VERB_DEFINED_HL);
Emit::named_numeric_constant(iname, (inter_ti) 1);
UseOptions::no_verb_verb();
global_compilation_settings.no_verb_verb_exists = TRUE;
}
else LOGIF(GRAMMAR_CONSTRUCTION, "GV%d has verb %W\n", gv->allocation_id, W);

View file

@ -278,7 +278,7 @@ to match this width, preserving the aspect ratio.
void PL::Figures::index_all(OUTPUT_STREAM) {
if (Plugins::Manage::plugged_in(figures_plugin) == FALSE) return;
blorb_figure *bf; FILE *FIGURE_FILE;
int MAX_INDEXED_FIGURES = UseOptions::get_index_figure_thumbnails();
int MAX_INDEXED_FIGURES = global_compilation_settings.index_figure_thumbnails;
int rv;
if (NUMBER_CREATED(blorb_figure) < 2) { /* cover art always creates 1 */
HTML_OPEN("p"); WRITE("There are no figures, or illustrations, in this project.");

View file

@ -1,5 +1,5 @@
Size of lexicon: 3102 excerpt meanings
Stored among 841 words out of total vocabulary of 10567
Stored among 841 words out of total vocabulary of 10568
711 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)

View file

@ -267,6 +267,10 @@ void ProblemBuffer::redirect_problem_stream(text_stream *S) {
int telemetry_recording = FALSE;
void ProblemBuffer::set_telemetry(void) {
telemetry_recording = TRUE;
}
void ProblemBuffer::output_problem_buffer(int indentation) {
if (redirected_problem_text == NULL) {
ProblemBuffer::output_problem_buffer_to(problems_file, indentation);