1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-17 15:50:46 +03:00

More and more localisation

This commit is contained in:
Graham Nelson 2021-07-25 15:11:01 +01:00
parent 2edb24994c
commit 8af471fab5
38 changed files with 1215 additions and 769 deletions

View file

@ -1,6 +1,6 @@
# Inform 7
v10.1.0-alpha.1+6S79 'Krypton' (24 July 2021)
v10.1.0-alpha.1+6S80 'Krypton' (25 July 2021)
## About Inform 7

View file

@ -1,3 +1,3 @@
Prerelease: alpha.1
Build Date: 24 July 2021
Build Number: 6S79
Build Date: 25 July 2021
Build Number: 6S80

View file

@ -132,7 +132,8 @@ sorted by index.
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TreeLists::sort</span><span class="plain-syntax">(</span><span class="reserved-syntax">inter_tree_location_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NL</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> (*</span><span class="identifier-syntax">cmp</span><span class="plain-syntax">)(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *, </span><span class="reserved-syntax">const</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">NL</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 inter_tree_location_list"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">qsort</span><span class="plain-syntax">(</span><span class="identifier-syntax">NL</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">list</span><span class="plain-syntax">, (</span><span class="identifier-syntax">size_t</span><span class="plain-syntax">) </span><span class="identifier-syntax">NL</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">list_used</span><span class="plain-syntax">, </span><span class="reserved-syntax">sizeof</span><span class="plain-syntax">(</span><span class="reserved-syntax">itl_entry</span><span class="plain-syntax">), </span><span class="identifier-syntax">cmp</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">NL</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">list_used</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">qsort</span><span class="plain-syntax">(</span><span class="identifier-syntax">NL</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">list</span><span class="plain-syntax">, (</span><span class="identifier-syntax">size_t</span><span class="plain-syntax">) </span><span class="identifier-syntax">NL</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">list_used</span><span class="plain-syntax">, </span><span class="reserved-syntax">sizeof</span><span class="plain-syntax">(</span><span class="reserved-syntax">itl_entry</span><span class="plain-syntax">), </span><span class="identifier-syntax">cmp</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>And this macro conveniently loops through packages in a node list of their

View file

@ -234,7 +234,7 @@ will be <span class="extract"><span class="extract-syntax">Kinds.html</span></sp
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">key</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">leafname</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><a href="3-ge2.html#SP1" class="function-link"><span class="function-syntax">GroupedElement::detail_pages</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-ge2.html#SP2" class="function-link"><span class="function-syntax">GroupedElement::detail_pages</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-ii.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>This is a one-off function for generating the content of an index element
@ -321,7 +321,7 @@ of the Inter tree currently being indexed.
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InterpretIndex::set_tree</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">InterpretIndex::set_tree</span></span>:<br/><a href="2-ii.html#SP1">&#167;1</a>, <a href="2-ii.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">indexing_tree</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="function-syntax">InterpretIndex::get_tree</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">InterpretIndex::get_tree</span></span>:<br/>Alphabetic Element - <a href="3-ae.html#SP1">&#167;1</a><br/>Arithmetic Element - <a href="3-ae2.html#SP1">&#167;1</a><br/>Behaviour Element - <a href="3-be.html#SP1">&#167;1</a><br/>Card Element - <a href="3-ce.html#SP1">&#167;1</a><br/>Chart Element - <a href="3-ce2.html#SP1">&#167;1</a><br/>Commands Element - <a href="3-ce3.html#SP1">&#167;1</a><br/>Contents Element - <a href="3-ce4.html#SP1">&#167;1</a><br/>Events Element - <a href="3-ee.html#SP1">&#167;1</a><br/>Extras Element - <a href="3-ee2.html#SP1">&#167;1</a><br/>Figures Element - <a href="3-fe.html#SP1">&#167;1</a><br/>Grouped Element - <a href="3-ge2.html#SP1">&#167;1</a><br/>Innards Element - <a href="3-ie.html#SP1">&#167;1</a><br/>Phrasebook Element - <a href="3-pe.html#SP1">&#167;1</a><br/>Plot Element - <a href="3-pe2.html#SP1">&#167;1</a><br/>Relations Element - <a href="3-re.html#SP1">&#167;1</a><br/>Rules for Scenes Element - <a href="3-rfse.html#SP1">&#167;1</a><br/>Standards Element - <a href="3-se.html#SP1">&#167;1</a><br/>Tables Element - <a href="3-te.html#SP1">&#167;1</a><br/>Tokens Element - <a href="3-te2.html#SP1">&#167;1</a><br/>Values Element - <a href="3-ve.html#SP1">&#167;1</a><br/>Render EPS Map - <a href="4-rem.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="function-syntax">InterpretIndex::get_tree</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">InterpretIndex::get_tree</span></span>:<br/>Alphabetic Element - <a href="3-ae.html#SP1">&#167;1</a><br/>Arithmetic Element - <a href="3-ae2.html#SP1">&#167;1</a><br/>Behaviour Element - <a href="3-be.html#SP1">&#167;1</a><br/>Card Element - <a href="3-ce.html#SP1">&#167;1</a><br/>Chart Element - <a href="3-ce2.html#SP1">&#167;1</a><br/>Commands Element - <a href="3-ce3.html#SP1">&#167;1</a><br/>Contents Element - <a href="3-ce4.html#SP1">&#167;1</a><br/>Events Element - <a href="3-ee.html#SP1">&#167;1</a><br/>Extras Element - <a href="3-ee2.html#SP1">&#167;1</a><br/>Figures Element - <a href="3-fe.html#SP1">&#167;1</a><br/>Grouped Element - <a href="3-ge2.html#SP1">&#167;1</a>, <a href="3-ge2.html#SP2">&#167;2</a><br/>Innards Element - <a href="3-ie.html#SP1">&#167;1</a><br/>Phrasebook Element - <a href="3-pe.html#SP1">&#167;1</a><br/>Plot Element - <a href="3-pe2.html#SP1">&#167;1</a><br/>Relations Element - <a href="3-re.html#SP1">&#167;1</a><br/>Rules for Scenes Element - <a href="3-rfse.html#SP1">&#167;1</a><br/>Standards Element - <a href="3-se.html#SP1">&#167;1</a><br/>Tables Element - <a href="3-te.html#SP1">&#167;1</a><br/>Tokens Element - <a href="3-te2.html#SP1">&#167;1</a><br/>Values Element - <a href="3-ve.html#SP1">&#167;1</a><br/>Render EPS Map - <a href="4-rem.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">indexing_tree</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 indexing tree"</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">indexing_tree</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -354,7 +354,7 @@ of the Inter tree currently being indexed.
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> </span><span class="identifier-syntax">index_file_struct</span><span class="plain-syntax">; </span><span class="comment-syntax"> The current index file being written</span>
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">InterpretIndex::open_file</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">InterpretIndex::open_file</span></span>:<br/><a href="2-ii.html#SP1_4">&#167;1.4</a><br/>Grouped Element - <a href="3-ge2.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">index_page</span><span class="plain-syntax"> *</span><span class="identifier-syntax">page</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">index_leaf</span><span class="plain-syntax">,</span>
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">InterpretIndex::open_file</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">InterpretIndex::open_file</span></span>:<br/><a href="2-ii.html#SP1_4">&#167;1.4</a><br/>Grouped Element - <a href="3-ge2.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">index_page</span><span class="plain-syntax"> *</span><span class="identifier-syntax">page</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">index_leaf</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">title</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sub</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><a href="2-il.html#SP3" class="function-link"><span class="function-syntax">IndexLocations::filename</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">index_leaf</span><span class="plain-syntax">, </span><span class="identifier-syntax">sub</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">STREAM_OPEN_TO_FILE</span><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">index_file_struct</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="identifier-syntax">UTF8_ENC</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
@ -376,7 +376,7 @@ of the Inter tree currently being indexed.
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></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">InterpretIndex::close_index_file</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">InterpretIndex::close_index_file</span></span>:<br/><a href="2-ii.html#SP1_4">&#167;1.4</a><br/>Grouped Element - <a href="3-ge2.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ifl</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InterpretIndex::close_index_file</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">InterpretIndex::close_index_file</span></span>:<br/><a href="2-ii.html#SP1_4">&#167;1.4</a><br/>Grouped Element - <a href="3-ge2.html#SP2">&#167;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">ifl</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::footer</span><span class="plain-syntax">(</span><span class="identifier-syntax">ifl</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_CLOSE</span><span class="plain-syntax">(</span><span class="identifier-syntax">ifl</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ii.html#SP6" class="function-link"><span class="function-syntax">InterpretIndex::set_page</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>

View file

@ -325,7 +325,7 @@ switched off:
</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">IndexRules::index_action_rules</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">IndexRules::index_action_rules</span></span>:<br/>Grouped Element - <a href="3-ge2.html#SP1_4">&#167;1.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">tree_inventory</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">IndexRules::index_action_rules</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">IndexRules::index_action_rules</span></span>:<br/>Grouped Element - <a href="3-ge2.html#SP2_1_5">&#167;2.1.5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">tree_inventory</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rb</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">key</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">desc</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">LD</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">resp_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-ir.html#SP8" class="function-link"><span class="function-syntax">IndexRules::list_suppress_indexed_links</span></a><span class="plain-syntax">();</span>

View file

@ -84,7 +84,7 @@ on typical browser views embedded in apps on Windows, MacOS and Linux.)
</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">IndexUtilities::banner_line</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">IndexUtilities::banner_line</span></span>:<br/>The Periodic Table - <a href="3-tpt.html#SP2_5">&#167;2.5</a><br/>Grouped Element - <a href="3-ge2.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">index_page</span><span class="plain-syntax"> *</span><span class="identifier-syntax">page</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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sym</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">IndexUtilities::banner_line</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">IndexUtilities::banner_line</span></span>:<br/>The Periodic Table - <a href="3-tpt.html#SP2_5">&#167;2.5</a><br/>Grouped Element - <a href="3-ge2.html#SP2_1">&#167;2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">index_page</span><span class="plain-syntax"> *</span><span class="identifier-syntax">page</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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sym</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">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">exp</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">link</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</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">"table"</span><span class="plain-syntax">, </span><span class="string-syntax">"cellspacing=\"3\" border=\"0\" style=\"background:#eeeeee;\""</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">"tr"</span><span class="plain-syntax">);</span>
@ -146,11 +146,11 @@ the source text in the application.
</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">IndexUtilities::link</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">IndexUtilities::link</span></span>:<br/>Lexicon - <a href="2-lxc.html#SP6_2">&#167;6.2</a><br/>Contents Element - <a href="3-ce4.html#SP2_1">&#167;2.1</a><br/>Events Element - <a href="3-ee.html#SP1_1">&#167;1.1</a><br/>Innards Element - <a href="3-ie.html#SP2_3">&#167;2.3</a><br/>Map Element - <a href="3-me.html#SP2_5">&#167;2.5</a>, <a href="3-me.html#SP2_8">&#167;2.8</a>, <a href="3-me.html#SP3">&#167;3</a>, <a href="3-me.html#SP7">&#167;7</a><br/>Plot Element - <a href="3-pe2.html#SP1_3_1_4_2">&#167;1.3.1.4.2</a>, <a href="3-pe2.html#SP1_3_1_4_3">&#167;1.3.1.4.3</a><br/>Tables Element - <a href="3-te.html#SP1_3_1">&#167;1.3.1</a><br/>Values Element - <a href="3-ve.html#SP1_2">&#167;1.2</a><br/>Spatial Map - <a href="4-sm.html#SP42">&#167;42</a><br/>Render HTML Map - <a href="4-rhm.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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">wn</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">IndexUtilities::link</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">IndexUtilities::link</span></span>:<br/>Lexicon - <a href="2-lxc.html#SP6_2">&#167;6.2</a><br/>Contents Element - <a href="3-ce4.html#SP2_1">&#167;2.1</a><br/>Events Element - <a href="3-ee.html#SP1_1">&#167;1.1</a><br/>Innards Element - <a href="3-ie.html#SP3_2">&#167;3.2</a><br/>Map Element - <a href="3-me.html#SP2_5">&#167;2.5</a>, <a href="3-me.html#SP2_8">&#167;2.8</a>, <a href="3-me.html#SP3">&#167;3</a>, <a href="3-me.html#SP7">&#167;7</a><br/>Plot Element - <a href="3-pe2.html#SP1_3_1_4_2">&#167;1.3.1.4.2</a>, <a href="3-pe2.html#SP1_3_1_4_3">&#167;1.3.1.4.3</a><br/>Tables Element - <a href="3-te.html#SP1_3_1">&#167;1.3.1</a><br/>Values Element - <a href="3-ve.html#SP1_2">&#167;1.2</a><br/>Spatial Map - <a href="4-sm.html#SP42">&#167;42</a><br/>Render HTML Map - <a href="4-rhm.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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">wn</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-iu.html#SP2" class="function-link"><span class="function-syntax">IndexUtilities::link_to_location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Lexer::word_location</span><span class="plain-syntax">(</span><span class="identifier-syntax">wn</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">IndexUtilities::link_package</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">IndexUtilities::link_package</span></span>:<br/><a href="2-iu.html#SP11">&#167;11</a><br/>Index Rules - <a href="2-ir.html#SP10_2">&#167;10.2</a>, <a href="2-ir.html#SP14_5">&#167;14.5</a>, <a href="2-ir.html#SP14_7">&#167;14.7</a>, <a href="2-ir.html#SP16">&#167;16</a>, <a href="2-ir.html#SP17">&#167;17</a>, <a href="2-ir.html#SP17_1">&#167;17.1</a><br/>Arithmetic Element - <a href="3-ae2.html#SP1_3">&#167;1.3</a><br/>Behaviour Element - <a href="3-be.html#SP1">&#167;1</a><br/>Chart Element - <a href="3-ce2.html#SP6_4">&#167;6.4</a>, <a href="3-ce2.html#SP7_1">&#167;7.1</a><br/>Commands Element - <a href="3-ce3.html#SP2">&#167;2</a><br/>Contents Element - <a href="3-ce4.html#SP1_2_1">&#167;1.2.1</a>, <a href="3-ce4.html#SP2_1">&#167;2.1</a><br/>Events Element - <a href="3-ee.html#SP1_1">&#167;1.1</a>, <a href="3-ee.html#SP1_2">&#167;1.2</a><br/>Figures Element - <a href="3-fe.html#SP1_1">&#167;1.1</a>, <a href="3-fe.html#SP1_2">&#167;1.2</a>, <a href="3-fe.html#SP1_3">&#167;1.3</a><br/>Grouped Element - <a href="3-ge2.html#SP1">&#167;1</a>, <a href="3-ge2.html#SP1_1">&#167;1.1</a>, <a href="3-ge2.html#SP2">&#167;2</a><br/>Plot Element - <a href="3-pe2.html#SP1_3_1_1">&#167;1.3.1.1</a><br/>Relations Element - <a href="3-re.html#SP1">&#167;1</a><br/>Tables Element - <a href="3-te.html#SP1_3">&#167;1.3</a><br/>Tokens Element - <a href="3-te2.html#SP1">&#167;1</a><br/>Values Element - <a href="3-ve.html#SP1_1_2">&#167;1.1.2</a><br/>Verbs Element - <a href="3-ve2.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">IndexUtilities::link_package</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">IndexUtilities::link_package</span></span>:<br/><a href="2-iu.html#SP11">&#167;11</a><br/>Index Rules - <a href="2-ir.html#SP10_2">&#167;10.2</a>, <a href="2-ir.html#SP14_5">&#167;14.5</a>, <a href="2-ir.html#SP14_7">&#167;14.7</a>, <a href="2-ir.html#SP16">&#167;16</a>, <a href="2-ir.html#SP17">&#167;17</a>, <a href="2-ir.html#SP17_1">&#167;17.1</a><br/>Arithmetic Element - <a href="3-ae2.html#SP1_3">&#167;1.3</a><br/>Behaviour Element - <a href="3-be.html#SP1">&#167;1</a><br/>Chart Element - <a href="3-ce2.html#SP6_4">&#167;6.4</a>, <a href="3-ce2.html#SP7_1">&#167;7.1</a><br/>Commands Element - <a href="3-ce3.html#SP2">&#167;2</a><br/>Contents Element - <a href="3-ce4.html#SP1_2_1">&#167;1.2.1</a>, <a href="3-ce4.html#SP2_1">&#167;2.1</a><br/>Events Element - <a href="3-ee.html#SP1_1">&#167;1.1</a>, <a href="3-ee.html#SP1_2">&#167;1.2</a><br/>Figures Element - <a href="3-fe.html#SP1_1_1_2">&#167;1.1.1.2</a>, <a href="3-fe.html#SP1_2_1_2">&#167;1.2.1.2</a>, <a href="3-fe.html#SP1_3_1">&#167;1.3.1</a><br/>Grouped Element - <a href="3-ge2.html#SP1">&#167;1</a>, <a href="3-ge2.html#SP2_1_2">&#167;2.1.2</a>, <a href="3-ge2.html#SP3">&#167;3</a><br/>Plot Element - <a href="3-pe2.html#SP1_3_1_1">&#167;1.3.1.1</a><br/>Relations Element - <a href="3-re.html#SP1">&#167;1</a><br/>Tables Element - <a href="3-te.html#SP1_3">&#167;1.3</a><br/>Tokens Element - <a href="3-te2.html#SP1">&#167;1</a><br/>Values Element - <a href="3-ve.html#SP1_1_2">&#167;1.1.2</a><br/>Verbs Element - <a href="3-ve2.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">at</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">Metadata::read_optional_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^at"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">at</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><a href="2-iu.html#SP2" class="function-link"><span class="function-syntax">IndexUtilities::link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">at</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -185,7 +185,7 @@ system set up in <a href="../html-module/2-dr2.html" class="internal">Documentat
</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">IndexUtilities::link_to_documentation</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">IndexUtilities::link_to_documentation</span></span>:<br/>Index Rules - <a href="2-ir.html#SP17_1">&#167;17.1</a><br/>Lexicon - <a href="2-lxc.html#SP6_2">&#167;6.2</a><br/>Chart Element - <a href="3-ce2.html#SP1_1_2_1">&#167;1.1.2.1</a>, <a href="3-ce2.html#SP4">&#167;4</a>, <a href="3-ce2.html#SP6_4">&#167;6.4</a><br/>Grouped Element - <a href="3-ge2.html#SP2">&#167;2</a><br/>Values Element - <a href="3-ve.html#SP1_1_2">&#167;1.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">IndexUtilities::link_to_documentation</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">IndexUtilities::link_to_documentation</span></span>:<br/>Index Rules - <a href="2-ir.html#SP17_1">&#167;17.1</a><br/>Lexicon - <a href="2-lxc.html#SP6_2">&#167;6.2</a><br/>Chart Element - <a href="3-ce2.html#SP1_1_2_1">&#167;1.1.2.1</a>, <a href="3-ce2.html#SP4">&#167;4</a>, <a href="3-ce2.html#SP6_4">&#167;6.4</a><br/>Grouped Element - <a href="3-ge2.html#SP3">&#167;3</a><br/>Values Element - <a href="3-ve.html#SP1_1_2">&#167;1.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">doc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^documentation"</span><span 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">doc</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">IndexUtilities::DocReferences::link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">doc</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -196,7 +196,7 @@ page about the taking action.
</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">IndexUtilities::detail_link</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">IndexUtilities::detail_link</span></span>:<br/>Alphabetic Element - <a href="3-ae.html#SP1_1">&#167;1.1</a><br/>Commands Element - <a href="3-ce3.html#SP2">&#167;2</a><br/>Grouped Element - <a href="3-ge2.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stub</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sub</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">down</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">IndexUtilities::detail_link</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">IndexUtilities::detail_link</span></span>:<br/>Alphabetic Element - <a href="3-ae.html#SP1_1">&#167;1.1</a><br/>Commands Element - <a href="3-ce3.html#SP2">&#167;2</a><br/>Grouped Element - <a href="3-ge2.html#SP1">&#167;1</a>, <a href="3-ge2.html#SP2_1_1">&#167;2.1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">stub</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sub</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">down</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">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">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"href=%s%d_%s.html"</span><span class="plain-syntax">, (</span><span class="identifier-syntax">down</span><span class="plain-syntax">)?</span><span class="string-syntax">"Details/"</span><span class="plain-syntax">:</span><span class="string-syntax">""</span><span class="plain-syntax">, </span><span class="identifier-syntax">sub</span><span class="plain-syntax">, </span><span class="identifier-syntax">stub</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"border=0 src=inform:/doc_images/Beneath.png"</span><span class="plain-syntax">);</span>
@ -242,7 +242,7 @@ code.
<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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">IndexUtilities::extra_all_link_with</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">IndexUtilities::extra_all_link_with</span></span>:<br/>Grouped Element - <a href="3-ge2.html#SP1_4">&#167;1.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">nr</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">icon</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">IndexUtilities::extra_all_link_with</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">IndexUtilities::extra_all_link_with</span></span>:<br/>Grouped Element - <a href="3-ge2.html#SP2_1_5">&#167;2.1.5</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">nr</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">icon</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">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"href=\"#\" onclick=\"showAllResp(%d); return false;\""</span><span class="plain-syntax">, </span><span class="identifier-syntax">nr</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"border=0 src=inform:/doc_images/%s.png"</span><span class="plain-syntax">, </span><span class="identifier-syntax">icon</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>

View file

@ -292,13 +292,25 @@ with everything under the first line being italicised. For example:
</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">Localisation::write_0</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">Localisation::write_0</span></span>:<br/>Index Utilities - <a href="2-iu.html#SP1_2">&#167;1.2</a><br/>Index Rules - <a href="2-ir.html#SP10">&#167;10</a>, <a href="2-ir.html#SP10_1">&#167;10.1</a>, <a href="2-ir.html#SP16">&#167;16</a>, <a href="2-ir.html#SP17_1">&#167;17.1</a><br/>Alphabetic Element - <a href="3-ae.html#SP2">&#167;2</a>, <a href="3-ae.html#SP3">&#167;3</a><br/>Arithmetic Element - <a href="3-ae2.html#SP1_1">&#167;1.1</a>, <a href="3-ae2.html#SP1_2_1">&#167;1.2.1</a>, <a href="3-ae2.html#SP2">&#167;2</a><br/>Behaviour Element - <a href="3-be.html#SP1">&#167;1</a><br/>Chart Element - <a href="3-ce2.html#SP1_2">&#167;1.2</a>, <a href="3-ce2.html#SP1_1_1">&#167;1.1.1</a>, <a href="3-ce2.html#SP1_4">&#167;1.4</a>, <a href="3-ce2.html#SP1_1_2_1">&#167;1.1.2.1</a>, <a href="3-ce2.html#SP1_5">&#167;1.5</a>, <a href="3-ce2.html#SP2">&#167;2</a>, <a href="3-ce2.html#SP6_3_1">&#167;6.3.1</a><br/>Commands Element - <a href="3-ce3.html#SP1_5">&#167;1.5</a>, <a href="3-ce3.html#SP2">&#167;2</a><br/>Contents Element - <a href="3-ce4.html#SP1_2">&#167;1.2</a>, <a href="3-ce4.html#SP1_3">&#167;1.3</a>, <a href="3-ce4.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">key</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Localisation::bold_0</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">Localisation::bold_0</span></span>:<br/>Alphabetic Element - <a href="3-ae.html#SP2">&#167;2</a><br/>Arithmetic Element - <a href="3-ae2.html#SP2">&#167;2</a><br/>Figures Element - <a href="3-fe.html#SP1_1">&#167;1.1</a>, <a href="3-fe.html#SP1_2">&#167;1.2</a>, <a href="3-fe.html#SP1_3">&#167;1.3</a><br/>Grouped Element - <a href="3-ge2.html#SP2_1_3">&#167;2.1.3</a>, <a href="3-ge2.html#SP2_1_4">&#167;2.1.4</a>, <a href="3-ge2.html#SP2_1_5">&#167;2.1.5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">key</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">"&lt;b&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</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">"&lt;/b&gt;"</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">Localisation::italic_0</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">Localisation::italic_0</span></span>:<br/>Alphabetic Element - <a href="3-ae.html#SP3">&#167;3</a><br/>Arithmetic Element - <a href="3-ae2.html#SP1_2_1">&#167;1.2.1</a><br/>Behaviour Element - <a href="3-be.html#SP1">&#167;1</a><br/>Chart Element - <a href="3-ce2.html#SP1_1_2_1">&#167;1.1.2.1</a>, <a href="3-ce2.html#SP6_3_1">&#167;6.3.1</a><br/>Commands Element - <a href="3-ce3.html#SP1_5">&#167;1.5</a>, <a href="3-ce3.html#SP2">&#167;2</a><br/>Events Element - <a href="3-ee.html#SP1">&#167;1</a>, <a href="3-ee.html#SP1_1">&#167;1.1</a>, <a href="3-ee.html#SP1_2">&#167;1.2</a><br/>Figures Element - <a href="3-fe.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="3-fe.html#SP1_2_1_1">&#167;1.2.1.1</a>, <a href="3-fe.html#SP1_2_1_1_1">&#167;1.2.1.1.1</a><br/>Grouped Element - <a href="3-ge2.html#SP2_1_2">&#167;2.1.2</a><br/>Innards Element - <a href="3-ie.html#SP3_2">&#167;3.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">key</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">"&lt;i&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</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">"&lt;/i&gt;"</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">Localisation::write_0</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">Localisation::write_0</span></span>:<br/>Index Utilities - <a href="2-iu.html#SP1_2">&#167;1.2</a><br/>Index Rules - <a href="2-ir.html#SP10">&#167;10</a>, <a href="2-ir.html#SP10_1">&#167;10.1</a>, <a href="2-ir.html#SP16">&#167;16</a>, <a href="2-ir.html#SP17_1">&#167;17.1</a><br/>Arithmetic Element - <a href="3-ae2.html#SP1_1">&#167;1.1</a><br/>Behaviour Element - <a href="3-be.html#SP1">&#167;1</a><br/>Chart Element - <a href="3-ce2.html#SP1_2">&#167;1.2</a>, <a href="3-ce2.html#SP1_1_1">&#167;1.1.1</a>, <a href="3-ce2.html#SP1_4">&#167;1.4</a>, <a href="3-ce2.html#SP1_5">&#167;1.5</a>, <a href="3-ce2.html#SP2">&#167;2</a><br/>Contents Element - <a href="3-ce4.html#SP1_2">&#167;1.2</a>, <a href="3-ce4.html#SP1_3">&#167;1.3</a>, <a href="3-ce4.html#SP2">&#167;2</a><br/>Events Element - <a href="3-ee.html#SP1_1">&#167;1.1</a><br/>Extras Element - <a href="3-ee2.html#SP1_1_1">&#167;1.1.1</a><br/>Figures Element - <a href="3-fe.html#SP1_1">&#167;1.1</a>, <a href="3-fe.html#SP1_2">&#167;1.2</a>, <a href="3-fe.html#SP1_2_1_1_2">&#167;1.2.1.1.2</a>, <a href="3-fe.html#SP1_3">&#167;1.3</a>, <a href="3-fe.html#SP1_3_1">&#167;1.3.1</a><br/>Grouped Element - <a href="3-ge2.html#SP2_1_2">&#167;2.1.2</a>, <a href="3-ge2.html#SP2_1_5">&#167;2.1.5</a><br/>Innards Element - <a href="3-ie.html#SP1">&#167;1</a>, <a href="3-ie.html#SP1_1">&#167;1.1</a>, <a href="3-ie.html#SP1_2">&#167;1.2</a>, <a href="3-ie.html#SP1_3">&#167;1.3</a>, <a href="3-ie.html#SP1_4">&#167;1.4</a>, <a href="3-ie.html#SP3_1">&#167;3.1</a><br/>Lexicon Element - <a href="3-le.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">key</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">vals</span><span class="plain-syntax">[10];</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-lcl.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Vacate the vals</span><span class="named-paragraph-number">5.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP6" class="function-link"><span class="function-syntax">Localisation::write_general</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</span><span class="plain-syntax">, </span><span class="identifier-syntax">vals</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">Localisation::write_1</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">Localisation::write_1</span></span>:<br/>Index Rules - <a href="2-ir.html#SP14_1">&#167;14.1</a>, <a href="2-ir.html#SP17">&#167;17</a><br/>Lexicon - <a href="2-lxc.html#SP6_1">&#167;6.1</a>, <a href="2-lxc.html#SP6_3">&#167;6.3</a>, <a href="2-lxc.html#SP6_6">&#167;6.6</a><br/>Contents Element - <a href="3-ce4.html#SP1_1">&#167;1.1</a>, <a href="3-ce4.html#SP2">&#167;2</a>, <a href="3-ce4.html#SP2_1">&#167;2.1</a>, <a href="3-ce4.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="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">key</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Localisation::write_1</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">Localisation::write_1</span></span>:<br/>Index Rules - <a href="2-ir.html#SP14_1">&#167;14.1</a>, <a href="2-ir.html#SP17">&#167;17</a><br/>Lexicon - <a href="2-lxc.html#SP6_1">&#167;6.1</a>, <a href="2-lxc.html#SP6_3">&#167;6.3</a>, <a href="2-lxc.html#SP6_6">&#167;6.6</a><br/>Contents Element - <a href="3-ce4.html#SP1_1">&#167;1.1</a>, <a href="3-ce4.html#SP2">&#167;2</a>, <a href="3-ce4.html#SP2_1">&#167;2.1</a><br/>Extras Element - <a href="3-ee2.html#SP1_1_1">&#167;1.1.1</a><br/>Figures Element - <a href="3-fe.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="3-fe.html#SP1_2_1_1_2">&#167;1.2.1.1.2</a>, <a href="3-fe.html#SP1_3_1">&#167;1.3.1</a><br/>Innards Element - <a href="3-ie.html#SP1_3">&#167;1.3</a>, <a href="3-ie.html#SP3_1">&#167;3.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">key</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">val1</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">vals</span><span class="plain-syntax">[10];</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-lcl.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Vacate the vals</span><span class="named-paragraph-number">5.1</span></a></span><span class="plain-syntax">;</span>
@ -306,13 +318,74 @@ with everything under the first line being italicised. For example:
<span class="plain-syntax"> </span><a href="2-lcl.html#SP6" class="function-link"><span class="function-syntax">Localisation::write_general</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</span><span class="plain-syntax">, </span><span class="identifier-syntax">vals</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">Localisation::write_2</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">Localisation::write_2</span></span>:<br/>Index Rules - <a href="2-ir.html#SP14_2">&#167;14.2</a>, <a href="2-ir.html#SP15">&#167;15</a><br/>Contents Element - <a href="3-ce4.html#SP1_1">&#167;1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">key</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Localisation::write_1n</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">Localisation::write_1n</span></span>:<br/>Contents Element - <a href="3-ce4.html#SP3">&#167;3</a><br/>Figures Element - <a href="3-fe.html#SP1_2_1_1_2">&#167;1.2.1.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">key</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">val1</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">vals</span><span class="plain-syntax">[10];</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-lcl.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Vacate the vals</span><span class="named-paragraph-number">5.1</span></a></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">f1</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">f1</span><span class="plain-syntax">, </span><span class="string-syntax">"%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">val1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vals</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">f1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP6" class="function-link"><span class="function-syntax">Localisation::write_general</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</span><span class="plain-syntax">, </span><span class="identifier-syntax">vals</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">f1</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">Localisation::write_2</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">Localisation::write_2</span></span>:<br/>Index Rules - <a href="2-ir.html#SP14_2">&#167;14.2</a>, <a href="2-ir.html#SP15">&#167;15</a><br/>Contents Element - <a href="3-ce4.html#SP1_1">&#167;1.1</a><br/>Figures Element - <a href="3-fe.html#SP1_2_1_1_2">&#167;1.2.1.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">key</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">val1</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val2</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">vals</span><span class="plain-syntax">[10];</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-lcl.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Vacate the vals</span><span class="named-paragraph-number">5.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vals</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">val1</span><span class="plain-syntax">; </span><span class="identifier-syntax">vals</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">val2</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP6" class="function-link"><span class="function-syntax">Localisation::write_general</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</span><span class="plain-syntax">, </span><span class="identifier-syntax">vals</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">Localisation::write_2n</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">Localisation::write_2n</span></span>:<br/>Figures Element - <a href="3-fe.html#SP1_1_1">&#167;1.1.1</a>, <a href="3-fe.html#SP1_1_1_1">&#167;1.1.1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">key</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">val1</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">val2</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">vals</span><span class="plain-syntax">[10];</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-lcl.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Vacate the vals</span><span class="named-paragraph-number">5.1</span></a></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">f1</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">f2</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">f1</span><span class="plain-syntax">, </span><span class="string-syntax">"%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">val1</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">f2</span><span class="plain-syntax">, </span><span class="string-syntax">"%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">val2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vals</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">f1</span><span class="plain-syntax">; </span><span class="identifier-syntax">vals</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">f2</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP6" class="function-link"><span class="function-syntax">Localisation::write_general</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</span><span class="plain-syntax">, </span><span class="identifier-syntax">vals</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">f1</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">f2</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">Localisation::write_2sn</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">Localisation::write_2sn</span></span>:<br/>Figures Element - <a href="3-fe.html#SP1_1_1_2">&#167;1.1.1.2</a>, <a href="3-fe.html#SP1_2_1_2">&#167;1.2.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">key</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">val1</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">val2</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">vals</span><span class="plain-syntax">[10];</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-lcl.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Vacate the vals</span><span class="named-paragraph-number">5.1</span></a></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">f2</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">f2</span><span class="plain-syntax">, </span><span class="string-syntax">"%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">val2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vals</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">val1</span><span class="plain-syntax">; </span><span class="identifier-syntax">vals</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">f2</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP6" class="function-link"><span class="function-syntax">Localisation::write_general</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</span><span class="plain-syntax">, </span><span class="identifier-syntax">vals</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">f2</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">Localisation::write_2ns</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">Localisation::write_2ns</span></span>:<br/>Figures Element - <a href="3-fe.html#SP1_2_1_1_1">&#167;1.2.1.1.1</a>, <a href="3-fe.html#SP1_2_1_1_2">&#167;1.2.1.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">key</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">val1</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val2</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">vals</span><span class="plain-syntax">[10];</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-lcl.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Vacate the vals</span><span class="named-paragraph-number">5.1</span></a></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">f1</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">f1</span><span class="plain-syntax">, </span><span class="string-syntax">"%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">val1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vals</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">f1</span><span class="plain-syntax">; </span><span class="identifier-syntax">vals</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">val2</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP6" class="function-link"><span class="function-syntax">Localisation::write_general</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</span><span class="plain-syntax">, </span><span class="identifier-syntax">vals</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">f1</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">Localisation::write_3nsn</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">Localisation::write_3nsn</span></span>:<br/>Figures Element - <a href="3-fe.html#SP1_2_1_1_1">&#167;1.2.1.1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">key</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">val1</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val2</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">val3</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">vals</span><span class="plain-syntax">[10];</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-lcl.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Vacate the vals</span><span class="named-paragraph-number">5.1</span></a></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">f1</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">f3</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">f1</span><span class="plain-syntax">, </span><span class="string-syntax">"%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">val1</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">f3</span><span class="plain-syntax">, </span><span class="string-syntax">"%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">val3</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">vals</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">f1</span><span class="plain-syntax">; </span><span class="identifier-syntax">vals</span><span class="plain-syntax">[2] = </span><span class="identifier-syntax">val2</span><span class="plain-syntax">; </span><span class="identifier-syntax">vals</span><span class="plain-syntax">[3] = </span><span class="identifier-syntax">f3</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP6" class="function-link"><span class="function-syntax">Localisation::write_general</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</span><span class="plain-syntax">, </span><span class="identifier-syntax">vals</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">f1</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">f3</span><span class="plain-syntax">)</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP5_1" class="paragraph-anchor"></a><b>&#167;5.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Vacate the vals</span><span class="named-paragraph-number">5.1</span></span><span class="comment-syntax"> =</span>
</p>
@ -320,11 +393,11 @@ with everything under the first line being italicised. For example:
<pre class="displayed-code all-displayed-code code-font">
<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">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;10; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">vals</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-lcl.html#SP5">&#167;5</a> (three times).</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="2-lcl.html#SP5">&#167;5</a> (8 times).</li></ul>
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>&#167;6. </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">Localisation::write_general</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">Localisation::write_general</span></span>:<br/><a href="2-lcl.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Localisation::write_general</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Localisation::write_general</span></span>:<br/><a href="2-lcl.html#SP5">&#167;5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</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">key</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> **</span><span class="identifier-syntax">vals</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">prototype</span><span class="plain-syntax"> = </span><a href="2-lcl.html#SP2" class="function-link"><span class="function-syntax">Localisation::read</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</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">italics_open</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>

View file

@ -158,9 +158,7 @@ function togglePopup(material_id) {
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">AlphabeticElement::column</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">AlphabeticElement::column</span></span>:<br/><a href="3-ae.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">key</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">LD</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">full</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">full</span><span class="plain-syntax">, </span><span class="string-syntax">"Index.Elements.A2.%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</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">"&lt;b&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">full</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">"&lt;/b&gt; "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::bold_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">full</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">full</span><span class="plain-syntax">)</span>
<span class="plain-syntax">}</span>
</pre>
@ -170,9 +168,7 @@ function togglePopup(material_id) {
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">AlphabeticElement::note</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">AlphabeticElement::note</span></span>:<br/><a href="3-ae.html#SP1_1">&#167;1.1</a>, <a href="3-ae.html#SP1_2">&#167;1.2</a>, <a href="3-ae.html#SP1_3">&#167;1.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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">key</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">LD</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">full</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">full</span><span class="plain-syntax">, </span><span class="string-syntax">"Index.Elements.A2.%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</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">"&lt;i&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">full</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">"&lt;/i&gt; "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::italic_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">full</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">full</span><span class="plain-syntax">)</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -146,9 +146,7 @@ so we do little more than tabulate that data here.
<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">dims</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">dims</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;i&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Ar.Dimensionless"</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">"&lt;/i&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::italic_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Ar.Dimensionless"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-ae2.html#SP1_2">&#167;1.2</a>.</li></ul>
@ -204,9 +202,8 @@ text, sorted into kind order of left and then right operand.
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ArithmeticElement::column</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">ArithmeticElement::column</span></span>:<br/><a href="3-ae2.html#SP1_2">&#167;1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">key</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">LD</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">full</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">full</span><span class="plain-syntax">, </span><span class="string-syntax">"Index.Elements.Ar.%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</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">"&lt;b&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">full</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">"&lt;/b&gt; "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::bold_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">full</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">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">full</span><span class="plain-syntax">)</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -94,9 +94,8 @@ function togglePopup(material_id) {
<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">"&lt;b&gt;%S&lt;/b&gt;"</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-iu.html#SP2" class="function-link"><span class="function-syntax">IndexUtilities::link_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</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;&lt;i&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Bh.Defined"</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">":&lt;/i&gt;\n"</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;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::italic_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Bh.Defined"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Packages::definition</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_INTER_CHILDREN</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">D</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">W</span><span class="plain-syntax">.</span><span class="identifier-syntax">data</span><span class="plain-syntax">[</span><span class="identifier-syntax">ID_IFLD</span><span class="plain-syntax">] == </span><span class="identifier-syntax">PACKAGE_IST</span><span class="plain-syntax">) {</span>

View file

@ -261,9 +261,9 @@ or as paragraph of text in pass 2:
<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">1</span><span class="plain-syntax">, </span><span class="string-syntax">"halftight"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-iu.html#SP5" class="function-link"><span class="function-syntax">IndexUtilities::anchor_numbered</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">); </span><span class="comment-syntax"> ...the anchor to which the grey icon in the table led</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;b&gt;"</span><span class="plain-syntax">); </span><a href="2-iu.html#SP11" class="function-link"><span class="function-syntax">IndexUtilities::kind_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;/b&gt;"</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">" (&lt;i&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Ch.Plural"</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">"&lt;/i&gt; "</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><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::italic_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Ch.Plural"</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><a href="2-iu.html#SP11" class="function-link"><span class="function-syntax">IndexUtilities::kind_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</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><a href="2-iu.html#SP3" class="function-link"><span class="function-syntax">IndexUtilities::link_to_documentation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
@ -498,9 +498,9 @@ whole row.
<span class="plain-syntax"> </span><a href="2-iu.html#SP11" class="function-link"><span class="function-syntax">IndexUtilities::kind_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">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">pass</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;/b&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">pass</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" (&lt;i&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Ch.Plural"</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">"&lt;/i&gt; "</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><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::italic_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Ch.Plural"</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><a href="2-iu.html#SP11" class="function-link"><span class="function-syntax">IndexUtilities::kind_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">")"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>

View file

@ -218,24 +218,21 @@ as follows:
<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">OUT_OF_WORLD_COMMAND:</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">"800000"</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;quot;%S&amp;quot;, &lt;i&gt;"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cie</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">command_headword</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Cm.Command"</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">"&lt;/i&gt;"</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;quot;%S&amp;quot;, "</span><span class="plain-syntax">, </span><span class="identifier-syntax">cie</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">command_headword</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::italic_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Cm.Command"</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_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</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">TESTING_COMMAND:</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">"800000"</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;quot;%S&amp;quot;, &lt;i&gt;"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cie</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">command_headword</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Cm.TestingCommand"</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">"&lt;/i&gt;"</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;quot;%S&amp;quot;, "</span><span class="plain-syntax">, </span><span class="identifier-syntax">cie</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">command_headword</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::italic_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Cm.TestingCommand"</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_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</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">BARE_DIRECTION_COMMAND:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&amp;quot;[direction]&amp;quot; - &lt;i&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Cm.DirectionCommand"</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">"&lt;/i&gt;"</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;quot;[direction]&amp;quot; - "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::italic_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Cm.DirectionCommand"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</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>
@ -253,14 +250,14 @@ as follows:
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandsElement::index_alias</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">CommandsElement::index_alias</span></span>:<br/><a href="3-ce3.html#SP1_5">&#167;1.5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cg_pack</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">headword</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">LD</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;quot;%S&amp;quot;, &lt;i&gt;"</span><span class="plain-syntax">, </span><span class="identifier-syntax">headword</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Cm.Alias"</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">"&lt;/i&gt; &amp;quot;%S&amp;quot;"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^command"</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;quot;%S&amp;quot;, "</span><span class="plain-syntax">, </span><span class="identifier-syntax">headword</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::italic_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Cm.Alias"</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;quot;%S&amp;quot;"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">cg_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^command"</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-iu.html#SP2" class="function-link"><span class="function-syntax">IndexUtilities::link_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">cg_pack</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</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">CommandsElement::index_grammar_line</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">CommandsElement::index_grammar_line</span></span>:<br/>Grouped Element - <a href="3-ge2.html#SP1_2">&#167;1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">,</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CommandsElement::index_grammar_line</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">CommandsElement::index_grammar_line</span></span>:<br/>Grouped Element - <a href="3-ge2.html#SP2_1_3">&#167;2.1.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">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgl</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">headword</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">LD</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">an_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^action"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">an_s</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>
@ -274,15 +271,13 @@ as follows:
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&amp;quot;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-iu.html#SP2" class="function-link"><span class="function-syntax">IndexUtilities::link_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">cgl</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">" - &lt;i&gt;%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^name"</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">" - &lt;i&gt;%S&lt;/i&gt;"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^name"</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-iu.html#SP4" class="function-link"><span class="function-syntax">IndexUtilities::detail_link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"A"</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">Metadata::read_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">an</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"action_id"</span><span class="plain-syntax">), </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Metadata::read_optional_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">cgl</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^reversed"</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">" &lt;i&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Cm.Reversed"</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">"&lt;/i&gt;"</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><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::italic_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Cm.Reversed"</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">"&lt;/i&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">oow</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_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>

View file

@ -267,10 +267,8 @@ function togglePopup(material_id) {
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ContentsElement::word_count</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">ContentsElement::word_count</span></span>:<br/><a href="3-ce4.html#SP1_2_1">&#167;1.2.1</a>, <a href="3-ce4.html#SP2_1">&#167;2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">LD</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">words</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">words</span><span class="plain-syntax">, </span><span class="string-syntax">"%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Metadata::read_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^word_count"</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_1</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.C.Words"</span><span class="plain-syntax">, </span><span class="identifier-syntax">words</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">words</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_1n</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.C.Words"</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">Metadata::read_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^word_count"</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">

View file

@ -85,7 +85,9 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ee.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Index events with no specific time</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="3-ee.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Index timetabled events</span><span class="named-paragraph-number">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="identifier-syntax">when_count</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">tt_count</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">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">"&lt;i&gt;None.&lt;/i&gt;"</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</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::italic_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Ev.None"</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>
@ -99,14 +101,16 @@ function togglePopup(material_id) {
<span class="plain-syntax"> (</span><span class="identifier-syntax">Metadata::exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^timed_for"</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">when_count</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">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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;i&gt;Events with no specific time&lt;/i&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::italic_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Ev.Timeless"</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><span class="identifier-syntax">when_count</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">"p"</span><span class="plain-syntax">, </span><span class="string-syntax">"class=\"tightin2\""</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">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^preamble"</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-iu.html#SP2" class="function-link"><span class="function-syntax">IndexUtilities::link_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" (where triggered: "</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><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Ev.WhereTriggered"</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">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">entry</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_SUBPACKAGES</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_timed_rule_trigger"</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">at</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">Metadata::read_optional_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^used_at"</span><span class="plain-syntax">);</span>
@ -127,7 +131,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> (</span><span class="identifier-syntax">Metadata::exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^timed_for"</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tt_count</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">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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;i&gt;Timetable&lt;/i&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::italic_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Ev.Timetable"</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><span class="identifier-syntax">tt_count</span><span class="plain-syntax">++;</span>

View file

@ -72,7 +72,9 @@ function togglePopup(material_id) {
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inter Modules</a></li><li><a href="index.html">index</a></li><li><a href="index.html#3">Chapter 3: Elements</a></li><li><b>Extras Element</b></li></ul></div>
<p class="purpose">To write the Extras element (Xt) in the index.</p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b></p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>This is to sweep up rulebooks and activities not covered by other elements,
really, and most of the code here is just to arrange them in some logical order.
</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">ExtrasElement::render</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">ExtrasElement::render</span></span>:<br/>The Periodic Table - <a href="3-tpt.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="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">LD</span><span class="plain-syntax">) {</span>
@ -118,12 +120,14 @@ function togglePopup(material_id) {
<pre class="displayed-code all-displayed-code code-font">
<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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;b&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">Metadata::read_optional_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^category"</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;b&gt;From the source text&lt;/b&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Xt.FromSourceText"</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;b&gt;From the extension %S&lt;/b&gt;"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_1</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Xt.FromExtension"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^credit"</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">"&lt;/b&gt;"</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="3-ee2.html#SP1_1">&#167;1.1</a> (twice).</li></ul>

View file

@ -72,62 +72,53 @@ function togglePopup(material_id) {
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inter Modules</a></li><li><a href="index.html">index</a></li><li><a href="index.html#3">Chapter 3: Elements</a></li><li><b>Figures Element</b></li></ul></div>
<p class="purpose">To write the Figures element (Fi) in the index.</p>
<ul class="toc"><li><a href="3-fe.html#SP1_2">&#167;1.2. Sounds Index</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="3-fe.html#SP1_1">&#167;1.1. Figures</a></li><li><a href="3-fe.html#SP1_2">&#167;1.2. Sounds</a></li><li><a href="3-fe.html#SP1_3">&#167;1.3. Files</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>This also includes sounds and external files, a little questionably.
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>Not only figures but also sounds and external files, a little questionably.
</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">FiguresElement::render</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">FiguresElement::render</span></span>:<br/>The Periodic Table - <a href="3-tpt.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="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">LD</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><a href="2-ii.html#SP6" class="function-link"><span class="function-syntax">InterpretIndex::get_tree</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">tree_inventory</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Synoptic::inv</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">TreeLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">figure_nodes</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">TreeLists::sort</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">figure_nodes</span><span class="plain-syntax">, </span><span class="identifier-syntax">Synoptic::module_order</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">TreeLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">sound_nodes</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">TreeLists::sort</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">sound_nodes</span><span class="plain-syntax">, </span><span class="identifier-syntax">Synoptic::module_order</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">TreeLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">file_nodes</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">TreeLists::sort</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">file_nodes</span><span class="plain-syntax">, </span><span class="identifier-syntax">Synoptic::module_order</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">TreeLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">figure_nodes</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="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>
<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="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-fe.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Index the figures</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">TreeLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">sound_nodes</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">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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"There are no sound effects in this project."</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="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-fe.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Index the sounds</span><span class="named-paragraph-number">1.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">TreeLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">file_nodes</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">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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"This project doesn't read or write external files."</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="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-fe.html#SP1_3" class="named-paragraph-link"><span class="named-paragraph">Index the files</span><span class="named-paragraph-number">1.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TreeLists::sort</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">figure_nodes</span><span class="plain-syntax">, </span><span class="identifier-syntax">Synoptic::module_order</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TreeLists::sort</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">sound_nodes</span><span class="plain-syntax">, </span><span class="identifier-syntax">Synoptic::module_order</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TreeLists::sort</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">file_nodes</span><span class="plain-syntax">, </span><span class="identifier-syntax">Synoptic::module_order</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-fe.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Index the figures</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="3-fe.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Index the sounds</span><span class="named-paragraph-number">1.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-fe.html#SP1_3" class="named-paragraph-link"><span class="named-paragraph">Index the files</span><span class="named-paragraph-number">1.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP1_1" class="paragraph-anchor"></a><b>&#167;1.1. </b>The index is presented with thumbnails of a given pixel width, which
<p class="commentary firstcommentary"><a id="SP1_1" class="paragraph-anchor"></a><b>&#167;1.1. Figures. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index the figures</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">TreeLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">figure_nodes</span><span class="plain-syntax">) &lt;= </span><span class="constant-syntax">1</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="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.NoFigures"</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="reserved-syntax">else</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><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::bold_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.ListOfFigures"</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="3-fe.html#SP1_1_1" class="named-paragraph-link"><span class="named-paragraph">Tabulate the figures</span><span class="named-paragraph-number">1.1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-fe.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_1_1" class="paragraph-anchor"></a><b>&#167;1.1.1. </b>The table is presented with thumbnails of a given pixel width, which
the HTML renderer automatically scales to fit. Height is adjusted so as
to match this width, preserving the aspect ratio.
</p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">THUMBNAIL_WIDTH</span><span class="plain-syntax"> </span><span class="constant-syntax">80</span>
</pre>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index the figures</span><span class="named-paragraph-number">1.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Tabulate the figures</span><span class="named-paragraph-number">1.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">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">settings</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Packages::by_url</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"/main/completion/basics"</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="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">Metadata::read_optional_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">settings</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^max_indexed_figures"</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">"&lt;b&gt;List of Figures&lt;/b&gt;"</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::begin_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"#ffffff"</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">count_of_displayed_figures</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">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">;</span>
@ -136,78 +127,110 @@ to match this width, preserving the aspect ratio.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">id</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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">filename_as_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^filename"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">filename_as_text</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">line2</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">description</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">unsigned</span><span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">width</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">height</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rv</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">FILE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">FIGURE_FILE</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::fopen</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="string-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">FIGURE_FILE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">real_format</span><span class="plain-syntax"> = </span><span class="string-syntax">"JPEG"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ImageFiles::get_JPEG_dimensions</span><span class="plain-syntax">(</span><span class="identifier-syntax">FIGURE_FILE</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">width</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">height</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">fclose</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</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">FIGURE_FILE</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::fopen</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="string-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">FIGURE_FILE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">real_format</span><span class="plain-syntax"> = </span><span class="string-syntax">"PNG"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ImageFiles::get_PNG_dimensions</span><span class="plain-syntax">(</span><span class="identifier-syntax">FIGURE_FILE</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">width</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">height</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">fclose</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="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> == </span><span class="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">line2</span><span class="plain-syntax">, </span><span class="string-syntax">"&lt;i&gt;Unknown image format&lt;/i&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="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">line2</span><span class="plain-syntax">, </span><span class="string-syntax">"%s format: %d (width) by %d (height) pixels"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">real_format</span><span class="plain-syntax">, </span><span class="identifier-syntax">width</span><span class="plain-syntax">, </span><span class="identifier-syntax">height</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">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">line2</span><span class="plain-syntax">, </span><span class="string-syntax">"&lt;i&gt;Missing from the Figures folder&lt;/i&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::first_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">THUMBNAIL_WIDTH</span><span class="plain-syntax">+10);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"border=\"0\" src=\"inform:/doc_images/image_problem.png\""</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="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">count_of_displayed_figures</span><span class="plain-syntax">++ &lt; </span><span class="identifier-syntax">MAX_INDEXED_FIGURES</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"border=\"1\" src=\"file:</span><span class="comment-syntax">%f\" width=\"%d\" height=\"%d\"",</span>
<span class="string-syntax"> F, THUMBNAIL_WIDTH, THUMBNAIL_WIDTH*height/width);</span>
<span class="string-syntax"> WRITE("</span><span class="plain-syntax">&amp;</span><span class="identifier-syntax">nbsp</span><span class="plain-syntax">;</span><span class="string-syntax">");</span>
<span class="string-syntax"> } else {</span>
<span class="string-syntax"> HTML_OPEN_WITH("</span><span class="identifier-syntax">div</span><span class="string-syntax">", "</span><span class="identifier-syntax">style</span><span class="plain-syntax">=\</span><span class="string-syntax">"width:%dpx; height:%dpx; border:1px solid; background-color:#6495ed;\""</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="constant-syntax">THUMBNAIL_WIDTH</span><span class="plain-syntax">, </span><span class="constant-syntax">THUMBNAIL_WIDTH</span><span class="plain-syntax">*</span><span class="identifier-syntax">height</span><span class="plain-syntax">/</span><span class="identifier-syntax">width</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">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"div"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::next_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^name"</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-iu.html#SP2" class="function-link"><span class="function-syntax">IndexUtilities::link_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span 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">line2</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">line2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</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">"Filename: \"%S\" - resource number %d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Filenames::get_leafname</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">), </span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_row</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">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">line2</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">format_found</span><span class="plain-syntax"> = </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="3-fe.html#SP1_1_1_1" class="named-paragraph-link"><span class="named-paragraph">Find image format and dimensions</span><span class="named-paragraph-number">1.1.1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-fe.html#SP1_1_1_2" class="named-paragraph-link"><span class="named-paragraph">Render a table row for the image</span><span class="named-paragraph-number">1.1.1.2</span></a></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">description</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::end_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">count_of_displayed_figures</span><span class="plain-syntax"> &gt; </span><span class="identifier-syntax">MAX_INDEXED_FIGURES</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"(Only the first %d thumbnails have been shown here, "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"to avoid Inform taking up too much memory. If you'd like to "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"see more, set 'Use index figure thumbnails of at least %d.', or "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"whatever number you want to wait for.)"</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><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_2n</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.ThumbnailLimit"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">MAX_INDEXED_FIGURES</span><span class="plain-syntax">, </span><span class="constant-syntax">10</span><span class="plain-syntax">*</span><span class="identifier-syntax">MAX_INDEXED_FIGURES</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_CLOSE</span><span class="plain-syntax">(</span><span class="string-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="3-fe.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2" class="paragraph-anchor"></a><b>&#167;1.2. Sounds Index. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index the sounds</span><span class="named-paragraph-number">1.2</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="3-fe.html#SP1_1">&#167;1.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_1_1_1" class="paragraph-anchor"></a><b>&#167;1.1.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Find image format and dimensions</span><span class="named-paragraph-number">1.1.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">FILE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">FIGURE_FILE</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::fopen</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="string-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">FIGURE_FILE</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">real_format</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"JPEG"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">format_found</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ImageFiles::get_JPEG_dimensions</span><span class="plain-syntax">(</span><span class="identifier-syntax">FIGURE_FILE</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">width</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">height</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">fclose</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">format_found</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">FIGURE_FILE</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::fopen</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="string-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">FIGURE_FILE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">real_format</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"PNG"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">format_found</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ImageFiles::get_PNG_dimensions</span><span class="plain-syntax">(</span><span class="identifier-syntax">FIGURE_FILE</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">width</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">height</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">fclose</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="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">format_found</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::italic_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.UnknownFormat"</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="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_1</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.Format"</span><span class="plain-syntax">, </span><span class="identifier-syntax">real_format</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">description</span><span class="plain-syntax">, </span><span class="string-syntax">": "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_2n</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.Dimensions"</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">width</span><span class="plain-syntax">, (</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">height</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><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::italic_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.Missing"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-fe.html#SP1_1_1">&#167;1.1.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_1_1_2" class="paragraph-anchor"></a><b>&#167;1.1.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render a table row for the image</span><span class="named-paragraph-number">1.1.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">HTML::first_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">THUMBNAIL_WIDTH</span><span class="plain-syntax">+10);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">format_found</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">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"border=\"0\" src=\"inform:/doc_images/image_problem.png\""</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="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">count_of_displayed_figures</span><span class="plain-syntax">++ &lt; </span><span class="identifier-syntax">MAX_INDEXED_FIGURES</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"border=\"1\" src=\"file:</span><span class="comment-syntax">%f\" width=\"%d\" height=\"%d\"",</span>
<span class="string-syntax"> F, THUMBNAIL_WIDTH, THUMBNAIL_WIDTH*height/width);</span>
<span class="string-syntax"> WRITE("</span><span class="plain-syntax">&amp;</span><span class="identifier-syntax">nbsp</span><span class="plain-syntax">;</span><span class="string-syntax">");</span>
<span class="string-syntax"> } else {</span>
<span class="string-syntax"> HTML_OPEN_WITH("</span><span class="identifier-syntax">div</span><span class="string-syntax">",</span>
<span class="string-syntax"> "</span><span class="identifier-syntax">style</span><span class="plain-syntax">=\</span><span class="string-syntax">"width:%dpx; height:%dpx; border:1px solid; background-color:#6495ed;\""</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="constant-syntax">THUMBNAIL_WIDTH</span><span class="plain-syntax">, </span><span class="constant-syntax">THUMBNAIL_WIDTH</span><span class="plain-syntax">*</span><span class="identifier-syntax">height</span><span class="plain-syntax">/</span><span class="identifier-syntax">width</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">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"div"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::next_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^name"</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-iu.html#SP2" class="function-link"><span class="function-syntax">IndexUtilities::link_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span 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">description</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">description</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_2sn</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.Resource"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Filenames::get_leafname</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">), (</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_row</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-fe.html#SP1_1_1">&#167;1.1.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2" class="paragraph-anchor"></a><b>&#167;1.2. Sounds. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index the sounds</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">TreeLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">sound_nodes</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">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::bold_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.ListOfSounds"</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="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><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.NoSounds"</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="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-fe.html#SP1_2_1" class="named-paragraph-link"><span class="named-paragraph">Tabulate the sounds</span><span class="named-paragraph-number">1.2.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-fe.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2_1" class="paragraph-anchor"></a><b>&#167;1.2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Tabulate the sounds</span><span class="named-paragraph-number">1.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">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">"&lt;b&gt;List of Sounds&lt;/b&gt;"</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">WRITE</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">HTML::begin_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"#ffffff"</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INVENTORY_PACKAGES</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">sound_nodes</span><span class="plain-syntax">) {</span>
@ -217,106 +240,167 @@ to match this width, preserving the aspect ratio.
<span class="plain-syntax"> </span><span class="reserved-syntax">unsigned</span><span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">duration</span><span class="plain-syntax">, </span><span class="identifier-syntax">pBitsPerSecond</span><span class="plain-syntax">, </span><span class="identifier-syntax">pChannels</span><span class="plain-syntax">, </span><span class="identifier-syntax">pSampleRate</span><span class="plain-syntax">, </span><span class="identifier-syntax">fsize</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">midi_version</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">no_tracks</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">preview</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">waveform_style</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">line2</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="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">FILE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">SOUND_FILE</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::fopen</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="string-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">SOUND_FILE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">real_format</span><span class="plain-syntax"> = </span><span class="string-syntax">"AIFF"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">SoundFiles::get_AIFF_duration</span><span class="plain-syntax">(</span><span class="identifier-syntax">SOUND_FILE</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">duration</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">pBitsPerSecond</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> &amp;</span><span class="identifier-syntax">pChannels</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">pSampleRate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">fseek</span><span class="plain-syntax">(</span><span class="identifier-syntax">SOUND_FILE</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">SEEK_END</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">fsize</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">unsigned</span><span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax">) (</span><span class="identifier-syntax">ftell</span><span class="plain-syntax">(</span><span class="identifier-syntax">SOUND_FILE</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">fclose</span><span class="plain-syntax">(</span><span class="identifier-syntax">SOUND_FILE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">SOUND_FILE</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::fopen</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="string-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">SOUND_FILE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">real_format</span><span class="plain-syntax"> = </span><span class="string-syntax">"Ogg Vorbis"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">preview</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">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">SoundFiles::get_OggVorbis_duration</span><span class="plain-syntax">(</span><span class="identifier-syntax">SOUND_FILE</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">duration</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> &amp;</span><span class="identifier-syntax">pBitsPerSecond</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">pChannels</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">pSampleRate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">fclose</span><span class="plain-syntax">(</span><span class="identifier-syntax">SOUND_FILE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</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">SOUND_FILE</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::fopen</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="string-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">SOUND_FILE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">waveform_style</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">real_format</span><span class="plain-syntax"> = </span><span class="string-syntax">"MIDI"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">preview</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">rv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">SoundFiles::get_MIDI_information</span><span class="plain-syntax">(</span><span class="identifier-syntax">SOUND_FILE</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> &amp;</span><span class="identifier-syntax">midi_version</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">no_tracks</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">fclose</span><span class="plain-syntax">(</span><span class="identifier-syntax">SOUND_FILE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">line2</span><span class="plain-syntax">, </span><span class="string-syntax">"&lt;i&gt;Unknown sound format&lt;/i&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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">waveform_style</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">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">line2</span><span class="plain-syntax">, </span><span class="string-syntax">"Type %d %s file with %d track%s"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">midi_version</span><span class="plain-syntax">, </span><span class="identifier-syntax">real_format</span><span class="plain-syntax">, </span><span class="identifier-syntax">no_tracks</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">no_tracks</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">)?</span><span class="string-syntax">""</span><span class="plain-syntax">:</span><span class="string-syntax">"s"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</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">"&lt;i&gt;Warning: not officially supported in glulx yet&lt;/i&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="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">min</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">duration</span><span class="plain-syntax">/6000), </span><span class="identifier-syntax">sec</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">duration</span><span class="plain-syntax">%6000)/100,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">centisec</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">duration</span><span class="plain-syntax">%100);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">line2</span><span class="plain-syntax">, </span><span class="string-syntax">"%d.%01dKB %s file: duration "</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">fsize</span><span class="plain-syntax">/1024, (</span><span class="identifier-syntax">fsize</span><span class="plain-syntax">%1024)/102, </span><span class="identifier-syntax">real_format</span><span 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</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">line2</span><span class="plain-syntax">, </span><span class="string-syntax">"%d minutes "</span><span class="plain-syntax">, </span><span class="identifier-syntax">min</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">sec</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">centisec</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">centisec</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">line2</span><span class="plain-syntax">, </span><span class="string-syntax">"%d seconds"</span><span class="plain-syntax">, </span><span class="identifier-syntax">sec</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_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">line2</span><span class="plain-syntax">, </span><span class="string-syntax">"%d.%02d seconds"</span><span class="plain-syntax">, </span><span class="identifier-syntax">sec</span><span class="plain-syntax">, </span><span class="identifier-syntax">centisec</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_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">line2</span><span class="plain-syntax">, </span><span class="string-syntax">"exactly"</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">line2</span><span class="plain-syntax">, </span><span class="string-syntax">"Sampled as %d.%01dkHz %s (%d.%01d kilobits/sec)"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pSampleRate</span><span class="plain-syntax">/1000, (</span><span class="identifier-syntax">pSampleRate</span><span class="plain-syntax">%1000)/100,</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">pChannels</span><span class="plain-syntax">==1)?</span><span class="string-syntax">"Mono"</span><span class="plain-syntax">:</span><span class="string-syntax">"Stereo"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">pBitsPerSecond</span><span class="plain-syntax">/1000, (</span><span class="identifier-syntax">pSampleRate</span><span class="plain-syntax">%1000)/100);</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">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">line2</span><span class="plain-syntax">, </span><span class="string-syntax">"&lt;i&gt;Missing from the Sounds folder&lt;/i&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::first_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">THUMBNAIL_WIDTH</span><span class="plain-syntax">+10);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rv</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"border=\"0\" src=\"inform:/doc_images/image_problem.png\""</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">preview</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">"embed"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"src=\"file:</span><span class="comment-syntax">%f\" width=\"%d\" height=\"64\" "</span>
<span class="string-syntax"> "</span><span class="identifier-syntax">autostart</span><span class="plain-syntax">=\</span><span class="string-syntax">"false\" volume=\"50%%\" mastersound"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="constant-syntax">THUMBNAIL_WIDTH</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">"embed"</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">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"border=\"0\" src=\"inform:/doc_images/sound_okay.png\""</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">"&amp;nbsp;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::next_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^name"</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-iu.html#SP2" class="function-link"><span class="function-syntax">IndexUtilities::link_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span 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">line2</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">line2</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</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">"Filename: \"%S\" - resource number %d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Filenames::get_leafname</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">), </span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">line2</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_row</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">description</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">format_found</span><span class="plain-syntax"> = </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="3-fe.html#SP1_2_1_1" class="named-paragraph-link"><span class="named-paragraph">Find sound format and duration</span><span class="named-paragraph-number">1.2.1.1</span></a></span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-fe.html#SP1_2_1_2" class="named-paragraph-link"><span class="named-paragraph">Render a table row for the sound</span><span class="named-paragraph-number">1.2.1.2</span></a></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">description</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-fe.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_3" class="paragraph-anchor"></a><b>&#167;1.3. </b>This is more or less perfunctory, but still of some use, if only as a list.
<ul class="endnotetexts"><li>This code is used in <a href="3-fe.html#SP1_2">&#167;1.2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2_1_1" class="paragraph-anchor"></a><b>&#167;1.2.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Find sound format and duration</span><span class="named-paragraph-number">1.2.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">FILE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">SOUND_FILE</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::fopen</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="string-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">SOUND_FILE</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">real_format</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"AIFF"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">format_found</span><span class="plain-syntax"> = </span><span class="identifier-syntax">SoundFiles::get_AIFF_duration</span><span class="plain-syntax">(</span><span class="identifier-syntax">SOUND_FILE</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">duration</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">pBitsPerSecond</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> &amp;</span><span class="identifier-syntax">pChannels</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">pSampleRate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">fseek</span><span class="plain-syntax">(</span><span class="identifier-syntax">SOUND_FILE</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">SEEK_END</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">fsize</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">unsigned</span><span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax">) (</span><span class="identifier-syntax">ftell</span><span class="plain-syntax">(</span><span class="identifier-syntax">SOUND_FILE</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">fclose</span><span class="plain-syntax">(</span><span class="identifier-syntax">SOUND_FILE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">format_found</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">SOUND_FILE</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::fopen</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="string-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">SOUND_FILE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">real_format</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"Ogg Vorbis"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">preview</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">format_found</span><span class="plain-syntax"> = </span><span class="identifier-syntax">SoundFiles::get_OggVorbis_duration</span><span class="plain-syntax">(</span><span class="identifier-syntax">SOUND_FILE</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">duration</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> &amp;</span><span class="identifier-syntax">pBitsPerSecond</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">pChannels</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">pSampleRate</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">fclose</span><span class="plain-syntax">(</span><span class="identifier-syntax">SOUND_FILE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">format_found</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">SOUND_FILE</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::fopen</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="string-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">SOUND_FILE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">waveform_style</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">real_format</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"MIDI"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">preview</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">format_found</span><span class="plain-syntax"> = </span><span class="identifier-syntax">SoundFiles::get_MIDI_information</span><span class="plain-syntax">(</span><span class="identifier-syntax">SOUND_FILE</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> &amp;</span><span class="identifier-syntax">midi_version</span><span class="plain-syntax">, &amp;</span><span class="identifier-syntax">no_tracks</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">fclose</span><span class="plain-syntax">(</span><span class="identifier-syntax">SOUND_FILE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">format_found</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::italic_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.UnknownSoundFormat"</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">waveform_style</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-fe.html#SP1_2_1_1_1" class="named-paragraph-link"><span class="named-paragraph">Describe sound in MIDI format</span><span class="named-paragraph-number">1.2.1.1.1</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-fe.html#SP1_2_1_1_2" class="named-paragraph-link"><span class="named-paragraph">Describe sound in waveform format</span><span class="named-paragraph-number">1.2.1.1.2</span></a></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><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::italic_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.MissingSound"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-fe.html#SP1_2_1">&#167;1.2.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2_1_1_1" class="paragraph-anchor"></a><b>&#167;1.2.1.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Describe sound in MIDI format</span><span class="named-paragraph-number">1.2.1.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">no_tracks</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_2ns</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.SoundFormatOneTrack"</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">midi_version</span><span class="plain-syntax">, </span><span class="identifier-syntax">real_format</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="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_3nsn</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.SoundFormatMultiTrack"</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">midi_version</span><span class="plain-syntax">, </span><span class="identifier-syntax">real_format</span><span class="plain-syntax">, (</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">no_tracks</span><span class="plain-syntax">);</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">description</span><span class="plain-syntax">, </span><span class="string-syntax">" - "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::italic_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.SoundUnsupported"</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-fe.html#SP1_2_1_1">&#167;1.2.1.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2_1_1_2" class="paragraph-anchor"></a><b>&#167;1.2.1.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Describe sound in waveform format</span><span class="named-paragraph-number">1.2.1.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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">size</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">size</span><span class="plain-syntax">, </span><span class="string-syntax">"%d.%01dKB"</span><span class="plain-syntax">, </span><span class="identifier-syntax">fsize</span><span class="plain-syntax">/1024, (</span><span class="identifier-syntax">fsize</span><span class="plain-syntax">%1024)/102);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_2</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.SoundFile"</span><span class="plain-syntax">, </span><span class="identifier-syntax">size</span><span class="plain-syntax">, </span><span class="identifier-syntax">real_format</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">size</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">min</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">duration</span><span class="plain-syntax">/6000), </span><span class="identifier-syntax">sec</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">duration</span><span class="plain-syntax">%6000)/100, </span><span class="identifier-syntax">centisec</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">duration</span><span class="plain-syntax">%100);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">description</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">seconds</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">centisec</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">seconds</span><span class="plain-syntax">, </span><span class="string-syntax">"%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">sec</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_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">seconds</span><span class="plain-syntax">, </span><span class="string-syntax">"%d.%02d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">sec</span><span class="plain-syntax">, </span><span class="identifier-syntax">centisec</span><span 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</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">sec</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">centisec</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="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_2ns</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.DurationMS"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">min</span><span class="plain-syntax">, </span><span class="identifier-syntax">seconds</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="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_1n</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.DurationM"</span><span class="plain-syntax">, </span><span class="identifier-syntax">min</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><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_1</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.DurationS"</span><span class="plain-syntax">, </span><span class="identifier-syntax">seconds</span><span class="plain-syntax">);</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">seconds</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">description</span><span class="plain-syntax">, </span><span class="string-syntax">"&lt;br&gt;"</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">sample</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">sample</span><span class="plain-syntax">, </span><span class="string-syntax">"%d.%01dkHz"</span><span class="plain-syntax">, </span><span class="identifier-syntax">pSampleRate</span><span class="plain-syntax">/1000, (</span><span class="identifier-syntax">pSampleRate</span><span class="plain-syntax">%1000)/100);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_1</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.Sampled"</span><span class="plain-syntax">, </span><span class="identifier-syntax">sample</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">sample</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">description</span><span class="plain-syntax">, </span><span class="string-syntax">" "</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pChannels</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.Mono"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.Stereo"</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">description</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">bitrate</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">bitrate</span><span class="plain-syntax">, </span><span class="string-syntax">"%d.%01d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">pBitsPerSecond</span><span class="plain-syntax">/1000, (</span><span class="identifier-syntax">pSampleRate</span><span class="plain-syntax">%1000)/100);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_1</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.BitRate"</span><span class="plain-syntax">, </span><span class="identifier-syntax">bitrate</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">bitrate</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">description</span><span class="plain-syntax">, </span><span class="string-syntax">")"</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-fe.html#SP1_2_1_1">&#167;1.2.1.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2_1_2" class="paragraph-anchor"></a><b>&#167;1.2.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Render a table row for the sound</span><span class="named-paragraph-number">1.2.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">HTML::first_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">THUMBNAIL_WIDTH</span><span class="plain-syntax">+10);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">format_found</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">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"border=\"0\" src=\"inform:/doc_images/image_problem.png\""</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">preview</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">"embed"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"src=\"file:</span><span class="comment-syntax">%f\" width=\"%d\" height=\"64\" "</span>
<span class="string-syntax"> "</span><span class="identifier-syntax">autostart</span><span class="plain-syntax">=\</span><span class="string-syntax">"false\" volume=\"50%%\" mastersound"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="constant-syntax">THUMBNAIL_WIDTH</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">"embed"</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">HTML_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"border=\"0\" src=\"inform:/doc_images/sound_okay.png\""</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">"&amp;nbsp;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::next_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^name"</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-iu.html#SP2" class="function-link"><span class="function-syntax">IndexUtilities::link_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span 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">description</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">description</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_2sn</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.Resource"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Filenames::get_leafname</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">), (</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_row</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-fe.html#SP1_2_1">&#167;1.2.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_3" class="paragraph-anchor"></a><b>&#167;1.3. Files. </b>This is more or less perfunctory, but still of some use, if only as a list.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Index the files</span><span class="named-paragraph-number">1.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="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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;b&gt;List of External Files&lt;/b&gt;"</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">TreeLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">file_nodes</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">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.NoFiles"</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="reserved-syntax">else</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><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::bold_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.ListOfFiles"</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="3-fe.html#SP1_3_1" class="named-paragraph-link"><span class="named-paragraph">Tabulate the files</span><span class="named-paragraph-number">1.3.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-fe.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_3_1" class="paragraph-anchor"></a><b>&#167;1.3.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Tabulate the files</span><span class="named-paragraph-number">1.3.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::begin_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"#ffffff"</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INVENTORY_PACKAGES</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">file_nodes</span><span class="plain-syntax">) {</span>
@ -332,23 +416,26 @@ to match this width, preserving the aspect ratio.
<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">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^name"</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-iu.html#SP2" class="function-link"><span class="function-syntax">IndexUtilities::link_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</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">"Filename: %s %S- owned by "</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">is_binary</span><span class="plain-syntax">)?</span><span class="string-syntax">"- binary "</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">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^leafname"</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">is_binary</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_1</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.BinaryFile"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^leafname"</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_1</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.TextFile"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^leafname"</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Metadata::read_optional_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^file_owned"</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">"this project"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.FileOwnedByThis"</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">Metadata::read_optional_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^file_owned_by_other"</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">"another project"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.FileOwnedByOther"</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"project with IFID number &lt;b&gt;%S&lt;/b&gt;"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_1</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.FileOwnedBy"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Metadata::read_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^file_owner"</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_row</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_table</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_OPEN</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="3-fe.html#SP1">&#167;1</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="3-fe.html#SP1_3">&#167;1.3</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-ee2.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-il.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tpt.html">tpt</a></li><li class="progresssection"><a href="3-ae.html">ae</a></li><li class="progresssection"><a href="3-ae2.html">ae2</a></li><li class="progresssection"><a href="3-be.html">be</a></li><li class="progresssection"><a href="3-ce.html">ce</a></li><li class="progresssection"><a href="3-ce2.html">ce2</a></li><li class="progresssection"><a href="3-ce3.html">ce3</a></li><li class="progresssection"><a href="3-ce4.html">ce4</a></li><li class="progresssection"><a href="3-ee.html">ee</a></li><li class="progresssection"><a href="3-ee2.html">ee2</a></li><li class="progresscurrent">fe</li><li class="progresssection"><a href="3-ge.html">ge</a></li><li class="progresssection"><a href="3-ge2.html">ge2</a></li><li class="progresssection"><a href="3-ie.html">ie</a></li><li class="progresssection"><a href="3-le.html">le</a></li><li class="progresssection"><a href="3-me.html">me</a></li><li class="progresssection"><a href="3-pe.html">pe</a></li><li class="progresssection"><a href="3-pe2.html">pe2</a></li><li class="progresssection"><a href="3-re.html">re</a></li><li class="progresssection"><a href="3-rfse.html">rfse</a></li><li class="progresssection"><a href="3-se.html">se</a></li><li class="progresssection"><a href="3-te.html">te</a></li><li class="progresssection"><a href="3-te2.html">te2</a></li><li class="progresssection"><a href="3-ve.html">ve</a></li><li class="progresssection"><a href="3-ve2.html">ve2</a></li><li class="progresschapter"><a href="4-mc.html">4</a></li><li class="progressnext"><a href="3-ge.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->

View file

@ -72,7 +72,8 @@ function togglePopup(material_id) {
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inter Modules</a></li><li><a href="index.html">index</a></li><li><a href="index.html#3">Chapter 3: Elements</a></li><li><b>Grouped Element</b></li></ul></div>
<p class="purpose">To write the Grouped actions element (A1) in the index, and also the detailed per-action pages linked from it.</p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b></p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>The element itself is easily made:
</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">GroupedElement::render</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">GroupedElement::render</span></span>:<br/>The Periodic Table - <a href="3-tpt.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="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">LD</span><span class="plain-syntax">) {</span>
@ -108,24 +109,22 @@ function togglePopup(material_id) {
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">f</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">f</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">suppress_comma</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</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><a href="3-ge2.html#SP1" class="function-link"><span class="function-syntax">GroupedElement::index_p1</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">oow</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^out_of_world"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">oow</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">"800000"</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">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-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">oow</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><a href="2-iu.html#SP2" class="function-link"><span class="function-syntax">IndexUtilities::link_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-iu.html#SP4" class="function-link"><span class="function-syntax">IndexUtilities::detail_link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"A"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</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">f</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">f</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>
</pre>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>Everything else in this section is for the detail pages: there is one such
page for each action.
</p>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">GroupedElement::index_p1</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">bold</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">on_details_page</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">oow</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^out_of_world"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">oow</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">"800000"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bold</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;b&gt;"</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">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-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">bold</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;/b&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">oow</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><a href="2-iu.html#SP2" class="function-link"><span class="function-syntax">IndexUtilities::link_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-iu.html#SP4" class="function-link"><span class="function-syntax">IndexUtilities::detail_link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"A"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, (</span><span class="identifier-syntax">on_details_page</span><span class="plain-syntax">)?</span><span class="identifier-syntax">FALSE:TRUE</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">GroupedElement::detail_pages</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">GroupedElement::detail_pages</span></span>:<br/>Index Interpreter - <a href="2-ii.html#SP1_4">&#167;1.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">LD</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><a href="2-ii.html#SP6" class="function-link"><span class="function-syntax">InterpretIndex::get_tree</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">tree_inventory</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inv</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Synoptic::inv</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
@ -134,38 +133,52 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INVENTORY_PACKAGES</span><span class="plain-syntax">(</span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">action_nodes</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax"> = </span><a href="2-ii.html#SP9" class="function-link"><span class="function-syntax">InterpretIndex::open_file</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"A.html"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"&lt;Actions"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-iu.html#SP1" class="function-link"><span class="function-syntax">IndexUtilities::banner_line</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Details"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Pages.ActionDetails.Heading"</span><span class="plain-syntax">, </span><span class="string-syntax">"../Actions.html"</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"hr"</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">this_area</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^index_heading"</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">this_subarea</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^index_subheading"</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;b&gt;%S - %S&lt;/b&gt;&lt;br&gt;"</span><span class="plain-syntax">, </span><span class="identifier-syntax">this_area</span><span class="plain-syntax">, </span><span class="identifier-syntax">this_subarea</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">c</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">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an2_pack</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INVENTORY_PACKAGES</span><span class="plain-syntax">(</span><span class="identifier-syntax">an2_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">action_nodes</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">this_area2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">an2_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^index_heading"</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">this_subarea2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">an2_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^index_subheading"</span><span 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">this_area</span><span class="plain-syntax">, </span><span class="identifier-syntax">this_area2</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">this_subarea</span><span class="plain-syntax">, </span><span class="identifier-syntax">this_subarea2</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax">++ &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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax"> == </span><span class="identifier-syntax">i</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;b&gt;"</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">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">an2_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-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">j</span><span class="plain-syntax"> == </span><span class="identifier-syntax">i</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;/b&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">j</span><span class="plain-syntax"> != </span><span class="identifier-syntax">i</span><span class="plain-syntax">) </span><a href="2-iu.html#SP4" class="function-link"><span class="function-syntax">IndexUtilities::detail_link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"A"</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</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="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_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"hr"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ge2.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Show the heading</span><span class="named-paragraph-number">1.1</span></a></span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"hr"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ge2.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Show the commands</span><span class="named-paragraph-number">1.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ge2.html#SP1_3" class="named-paragraph-link"><span class="named-paragraph">Show the action variables</span><span class="named-paragraph-number">1.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ge2.html#SP1_4" class="named-paragraph-link"><span class="named-paragraph">Show the rules relevant to this action</span><span class="named-paragraph-number">1.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ge2.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Write details page for the action</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-ii.html#SP10" class="function-link"><span class="function-syntax">InterpretIndex::close_index_file</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="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP1_1" class="paragraph-anchor"></a><b>&#167;1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show the heading</span><span class="named-paragraph-number">1.1</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP2_1" class="paragraph-anchor"></a><b>&#167;2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write details page for the action</span><span class="named-paragraph-number">2.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><a href="2-iu.html#SP1" class="function-link"><span class="function-syntax">IndexUtilities::banner_line</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Details"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Pages.ActionDetails.Heading"</span><span class="plain-syntax">, </span><span class="string-syntax">"../Actions.html"</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"hr"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ge2.html#SP2_1_1" class="named-paragraph-link"><span class="named-paragraph">Show the fancy navigate-similar-actions menu</span><span class="named-paragraph-number">2.1.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"hr"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ge2.html#SP2_1_2" class="named-paragraph-link"><span class="named-paragraph">Show the heading</span><span class="named-paragraph-number">2.1.2</span></a></span>
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"hr"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ge2.html#SP2_1_3" class="named-paragraph-link"><span class="named-paragraph">Show the commands</span><span class="named-paragraph-number">2.1.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ge2.html#SP2_1_4" class="named-paragraph-link"><span class="named-paragraph">Show the action variables</span><span class="named-paragraph-number">2.1.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ge2.html#SP2_1_5" class="named-paragraph-link"><span class="named-paragraph">Show the rules relevant to this action</span><span class="named-paragraph-number">2.1.5</span></a></span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-ge2.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_1_1" class="paragraph-anchor"></a><b>&#167;2.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show the fancy navigate-similar-actions menu</span><span class="named-paragraph-number">2.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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">this_area</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^index_heading"</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">this_subarea</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^index_subheading"</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;b&gt;%S - %S&lt;/b&gt;&lt;br&gt;"</span><span class="plain-syntax">, </span><span class="identifier-syntax">this_area</span><span class="plain-syntax">, </span><span class="identifier-syntax">this_subarea</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">c</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">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an2_pack</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INVENTORY_PACKAGES</span><span class="plain-syntax">(</span><span class="identifier-syntax">an2_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">action_nodes</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">this_area2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">an2_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^index_heading"</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">this_subarea2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">an2_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^index_subheading"</span><span 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">this_area</span><span class="plain-syntax">, </span><span class="identifier-syntax">this_area2</span><span class="plain-syntax">)) &amp;&amp; (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">this_subarea</span><span class="plain-syntax">, </span><span class="identifier-syntax">this_subarea2</span><span class="plain-syntax">))) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax">++ &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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax"> == </span><span class="identifier-syntax">i</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;b&gt;"</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">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">an2_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-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">j</span><span class="plain-syntax"> == </span><span class="identifier-syntax">i</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;/b&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">j</span><span class="plain-syntax"> != </span><span class="identifier-syntax">i</span><span class="plain-syntax">) </span><a href="2-iu.html#SP4" class="function-link"><span class="function-syntax">IndexUtilities::detail_link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"A"</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</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="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="3-ge2.html#SP2_1">&#167;2.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_1_2" class="paragraph-anchor"></a><b>&#167;2.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show the heading</span><span class="named-paragraph-number">2.1.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -178,57 +191,74 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">oow</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&lt;/b&gt;"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-iu.html#SP2" class="function-link"><span class="function-syntax">IndexUtilities::link_package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">requires_light</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" (requires light)"</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">" (&lt;i&gt;past tense&lt;/i&gt; %S)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^past_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">requires_light</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><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.A1.RequiresLight"</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="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><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::italic_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.A1.PastTense"</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">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^past_name"</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">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^specification"</span><span 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">spec</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">": %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</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="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">desc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^description"</span><span 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">desc</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</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">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">desc</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="3-ge2.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_2" class="paragraph-anchor"></a><b>&#167;1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show the commands</span><span class="named-paragraph-number">1.2</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="3-ge2.html#SP2_1">&#167;2.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_1_3" class="paragraph-anchor"></a><b>&#167;2.1.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show the commands</span><span class="named-paragraph-number">2.1.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="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">"&lt;b&gt;Typed commands leading to this action&lt;/b&gt;\n"</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</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::bold_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.A1.CommandsHeading"</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="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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">producers</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">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">line_pack</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_SUBPACKAGES</span><span class="plain-syntax">(</span><span class="identifier-syntax">line_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_cg_line"</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">xref</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">line_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^line"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-ce3.html#SP2" class="function-link"><span class="function-syntax">CommandsElement::index_grammar_line</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Inter::Packages::container</span><span class="plain-syntax">(</span><span class="identifier-syntax">xref</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">definition</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-ce3.html#SP2" class="function-link"><span class="function-syntax">CommandsElement::index_grammar_line</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">Inter::Packages::container</span><span class="plain-syntax">(</span><span class="identifier-syntax">xref</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">definition</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">producers</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">producers</span><span class="plain-syntax"> == </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">"&lt;i&gt;None&lt;/i&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">producers</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::bold_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.A1.NoCommands"</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="3-ge2.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_3" class="paragraph-anchor"></a><b>&#167;1.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show the action variables</span><span class="named-paragraph-number">1.3</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="3-ge2.html#SP2_1">&#167;2.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_1_4" class="paragraph-anchor"></a><b>&#167;2.1.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show the action variables</span><span class="named-paragraph-number">2.1.4</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><a href="3-ge2.html#SP2" class="function-link"><span class="function-syntax">GroupedElement::no_vars</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</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">"&lt;b&gt;Named values belonging to this action&lt;/b&gt;\n"</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="3-ge2.html#SP2" class="function-link"><span class="function-syntax">GroupedElement::index_shv_set</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-ge2.html#SP3" class="function-link"><span class="function-syntax">GroupedElement::no_vars</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</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="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::bold_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.A1.ValuesHeading"</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><a href="3-ge2.html#SP3" class="function-link"><span class="function-syntax">GroupedElement::index_shv_set</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-ge2.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP1_4" class="paragraph-anchor"></a><b>&#167;1.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show the rules relevant to this action</span><span class="named-paragraph-number">1.4</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="3-ge2.html#SP2_1">&#167;2.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_1_5" class="paragraph-anchor"></a><b>&#167;2.1.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show the rules relevant to this action</span><span class="named-paragraph-number">2.1.5</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</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">"&lt;b&gt;Rules controlling this action&lt;/b&gt;"</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</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\n"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::bold_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.A1.RulesHeading"</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="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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">resp_count</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">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">oow</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^out_of_world"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">oow</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_count</span><span class="plain-syntax"> += </span><a href="2-ir.html#SP12" class="function-link"><span class="function-syntax">IndexRules::index_action_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"persuasion"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"persuasion"</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</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="2-ir.html#SP12" class="function-link"><span class="function-syntax">IndexRules::index_action_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"unsuccessful_attempt_by"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"unsuccessful attempt"</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</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="2-ir.html#SP12" class="function-link"><span class="function-syntax">IndexRules::index_action_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"setting_action_variables"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"set action variables for"</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</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="2-ir.html#SP12" class="function-link"><span class="function-syntax">IndexRules::index_action_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"before"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"before"</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</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="2-ir.html#SP12" class="function-link"><span class="function-syntax">IndexRules::index_action_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"instead"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"instead of"</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</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="2-ir.html#SP12" class="function-link"><span class="function-syntax">IndexRules::index_action_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</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">I</span><span class="string-syntax">"persuasion"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"persuasion"</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</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="2-ir.html#SP12" class="function-link"><span class="function-syntax">IndexRules::index_action_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</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">I</span><span class="string-syntax">"unsuccessful_attempt_by"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"unsuccessful attempt"</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</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="2-ir.html#SP12" class="function-link"><span class="function-syntax">IndexRules::index_action_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</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">I</span><span class="string-syntax">"setting_action_variables"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"set action variables for"</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</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="2-ir.html#SP12" class="function-link"><span class="function-syntax">IndexRules::index_action_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</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">I</span><span class="string-syntax">"before"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"before"</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</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="2-ir.html#SP12" class="function-link"><span class="function-syntax">IndexRules::index_action_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</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">I</span><span class="string-syntax">"instead"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"instead of"</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">);</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">check_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^check_rulebook"</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">carry_out_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^carry_out_rulebook"</span><span class="plain-syntax">);</span>
@ -237,29 +267,32 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">carry_out_pack</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Packages::container</span><span class="plain-syntax">(</span><span class="identifier-syntax">carry_out_s</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">definition</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">report_pack</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Packages::container</span><span class="plain-syntax">(</span><span class="identifier-syntax">report_s</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">definition</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="2-ir.html#SP12" class="function-link"><span class="function-syntax">IndexRules::index_action_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">check_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"check"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"check"</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</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="2-ir.html#SP12" class="function-link"><span class="function-syntax">IndexRules::index_action_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">carry_out_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"carry_out"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"carry out"</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</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="2-ir.html#SP12" class="function-link"><span class="function-syntax">IndexRules::index_action_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">check_pack</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"check"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"check"</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</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="2-ir.html#SP12" class="function-link"><span class="function-syntax">IndexRules::index_action_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">carry_out_pack</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"carry_out"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"carry out"</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">oow</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_count</span><span class="plain-syntax"> += </span><a href="2-ir.html#SP12" class="function-link"><span class="function-syntax">IndexRules::index_action_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"after"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"after"</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</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="2-ir.html#SP12" class="function-link"><span class="function-syntax">IndexRules::index_action_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">report_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"report"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"report"</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</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="2-ir.html#SP12" class="function-link"><span class="function-syntax">IndexRules::index_action_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</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">I</span><span class="string-syntax">"after"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"after"</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</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="2-ir.html#SP12" class="function-link"><span class="function-syntax">IndexRules::index_action_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">, </span><span class="identifier-syntax">an_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">report_pack</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"report"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"report"</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span 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_count</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Click on the speech-bubble icons to see the responses, "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"or here to see all of them:"</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><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.A1.ResponseIcons"</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><a href="2-iu.html#SP6" class="function-link"><span class="function-syntax">IndexUtilities::extra_all_link_with</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TreeLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">rule_nodes</span><span class="plain-syntax">), </span><span class="string-syntax">"responses"</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">"%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">resp_count</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="3-ge2.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b></p>
<ul class="endnotetexts"><li>This code is used in <a href="3-ge2.html#SP2_1">&#167;2.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></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">GroupedElement::no_vars</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">GroupedElement::no_vars</span></span>:<br/><a href="3-ge2.html#SP1_3">&#167;1.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">set</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">GroupedElement::no_vars</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">GroupedElement::no_vars</span></span>:<br/><a href="3-ge2.html#SP2_1_4">&#167;2.1.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">set</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">InterTree::no_subpackages</span><span class="plain-syntax">(</span><span class="identifier-syntax">set</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_shared_variable"</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">GroupedElement::index_shv_set</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">GroupedElement::index_shv_set</span></span>:<br/><a href="3-ge2.html#SP1_3">&#167;1.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">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">set</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">GroupedElement::index_shv_set</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">GroupedElement::index_shv_set</span></span>:<br/><a href="3-ge2.html#SP2_1_4">&#167;2.1.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">set</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">var_pack</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_SUBPACKAGES</span><span class="plain-syntax">(</span><span class="identifier-syntax">var_pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">set</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_shared_variable"</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>

View file

@ -72,7 +72,8 @@ function togglePopup(material_id) {
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inter Modules</a></li><li><a href="index.html">index</a></li><li><a href="index.html#3">Chapter 3: Elements</a></li><li><b>Innards Element</b></li></ul></div>
<p class="purpose">To write the Innards element (In) in the index.</p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>Describing the current VM.
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>This element is something of a miscellany, except that it's all about the
technical implementation rather than the content of a work.
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -86,7 +87,7 @@ function togglePopup(material_id) {
<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><a href="2-iu.html#SP6" class="function-link"><span class="function-syntax">IndexUtilities::extra_link</span></a><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>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.In.Technicalities"</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><a href="2-iu.html#SP7" class="function-link"><span class="function-syntax">IndexUtilities::extra_div_open</span></a><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="constant-syntax">2</span><span class="plain-syntax">, </span><span class="string-syntax">"e0e0e0"</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>
@ -101,7 +102,9 @@ function togglePopup(material_id) {
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><a href="2-iu.html#SP5" class="function-link"><span class="function-syntax">IndexUtilities::anchor</span></a><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">"STORYFILE"</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">"Story file format: "</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><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.In.Format"</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">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Packages::by_url</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"/main/completion/basics"</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">VM</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^virtual_machine"</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">VM_icon</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^virtual_machine_icon"</span><span class="plain-syntax">);</span>
@ -117,14 +120,20 @@ function togglePopup(material_id) {
</p>
<pre class="displayed-code all-displayed-code code-font">
<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="3-ie.html#SP2" class="function-link"><span class="function-syntax">InnardsElement::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="identifier-syntax">inv</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="3-ie.html#SP2" class="function-link"><span class="function-syntax">InnardsElement::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="identifier-syntax">inv</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">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.In.ActiveUseOptions"</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_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="3-ie.html#SP3" class="function-link"><span class="function-syntax">InnardsElement::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="identifier-syntax">inv</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="identifier-syntax">LD</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-ie.html#SP3" class="function-link"><span class="function-syntax">InnardsElement::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="identifier-syntax">inv</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="identifier-syntax">LD</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INVENTORY_PACKAGES</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">module_nodes</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="3-ie.html#SP2" class="function-link"><span class="function-syntax">InnardsElement::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="identifier-syntax">inv</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><a href="3-ie.html#SP3" class="function-link"><span class="function-syntax">InnardsElement::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="identifier-syntax">inv</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="identifier-syntax">LD</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">c</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">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</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.In.InactiveUseOptions"</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_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">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INVENTORY_PACKAGES</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">use_option_nodes</span><span class="plain-syntax">) {</span>
@ -135,7 +144,7 @@ function togglePopup(material_id) {
<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">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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </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">"None."</span><span class="plain-syntax">); </span><span class="comment-syntax"> in practice, this will never happen</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.In.NoUseOptions"</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="3-ie.html#SP1">&#167;1</a>.</li></ul>
@ -156,12 +165,19 @@ function togglePopup(material_id) {
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Inform language definition:\n"</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><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.In.LanguageDefinition"</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_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</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">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Packages::by_url</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"/main/completion/basics"</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">used</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^language_elements_used"</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">not_used</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^language_elements_not_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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">used</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">"Included: %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">not_used</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">"&lt;br&gt;Excluded: %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">not_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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">used</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="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_1</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.In.Included"</span><span class="plain-syntax">, </span><span class="identifier-syntax">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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">used</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">not_used</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">"&lt;br&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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">not_used</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="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_1</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.In.Excluded"</span><span class="plain-syntax">, </span><span class="identifier-syntax">not_used</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="3-ie.html#SP1">&#167;1</a>.</li></ul>
@ -170,7 +186,8 @@ function togglePopup(material_id) {
<pre class="displayed-code all-displayed-code code-font">
<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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Debugging log:"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.In.Log"</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_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</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">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Packages::by_url</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"/main/completion/basics"</span><span class="plain-syntax">);</span>
@ -192,7 +209,9 @@ function togglePopup(material_id) {
<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="3-ie.html#SP1">&#167;1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>Now for indexing, where there's nothing much to see.
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>Use options can be set in three general ways, and the following function
answers the question "was this option set in this way?". <span class="extract"><span class="extract-syntax">E</span></span> is meaningless
except for <span class="extract"><span class="extract-syntax">EXTENSION_UO_ORIGIN</span></span>, when we are testing whether it was set in <span class="extract"><span class="extract-syntax">E</span></span>.
</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>
@ -200,30 +219,14 @@ function togglePopup(material_id) {
<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">InnardsElement::index_options_in_force_from</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">InnardsElement::index_options_in_force_from</span></span>:<br/><a href="3-ie.html#SP1_2">&#167;1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">tree_inventory</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inv</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">inter_package</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="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INVENTORY_PACKAGES</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">use_option_nodes</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">set</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^active"</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">sfs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^source_file_scoped"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">set</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">sfs</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><a href="3-ie.html#SP2_1" class="function-link"><span class="function-syntax">InnardsElement::uo_set_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pack</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="3-ie.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Write in the use option subheading</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ie.html#SP2_3" class="named-paragraph-link"><span class="named-paragraph">Write in the index line for a use option taken</span><span class="named-paragraph-number">2.3</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="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2_1" class="paragraph-anchor"></a><b>&#167;2.1. </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">InnardsElement::uo_set_from</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">InnardsElement::uo_set_from</span></span>:<br/><a href="3-ie.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">category</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_package</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">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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Metadata::read_optional_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^used_in_source_text"</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="identifier-syntax">OPTIONS_FILE_UO_ORIGIN:</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Metadata::read_optional_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^used_in_options"</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InnardsElement::uo_set_from</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">InnardsElement::uo_set_from</span></span>:<br/><a href="3-ie.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">way</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_package</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">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">way</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Metadata::read_optional_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^used_in_source_text"</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">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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Metadata::read_optional_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^used_in_options"</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">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="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^used_in_extension"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">id</span><span class="plain-syntax">) {</span>
@ -236,29 +239,50 @@ pragma is set:
<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_2" class="paragraph-anchor"></a><b>&#167;2.2. </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">2.2</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b>Here we list the UOs set in a particular way, using the same calling conventions.
</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">InnardsElement::index_options_in_force_from</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">InnardsElement::index_options_in_force_from</span></span>:<br/><a href="3-ie.html#SP1_2">&#167;1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">tree_inventory</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inv</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">way</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="reserved-syntax">localisation_dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">LD</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="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INVENTORY_PACKAGES</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">inv</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">use_option_nodes</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">set</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^active"</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">sfs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_numeric</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^source_file_scoped"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">set</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">sfs</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><a href="3-ie.html#SP2" class="function-link"><span class="function-syntax">InnardsElement::uo_set_from</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">way</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="3-ie.html#SP3_1" class="named-paragraph-link"><span class="named-paragraph">Write in the use option subheading</span><span class="named-paragraph-number">3.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ie.html#SP3_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">3.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="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3_1" class="paragraph-anchor"></a><b>&#167;3.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">3.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">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">way</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><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.In.SetFromSource"</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">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, or automatically"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.In.SetAutomatically"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">IndexUtilities::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="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^credit"</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_1</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.In.SetFrom"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^credit"</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="3-ie.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_3" class="paragraph-anchor"></a><b>&#167;2.3. </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">2.3</span></span><span class="comment-syntax"> =</span>
<ul class="endnotetexts"><li>This code is used in <a href="3-ie.html#SP3">&#167;3</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP3_2" class="paragraph-anchor"></a><b>&#167;3.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">3.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -275,11 +299,12 @@ pragma is set:
<span class="plain-syntax"> </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^name"</span><span class="plain-syntax">), </span><span class="constant-syntax">2</span><span class="plain-syntax">*</span><span class="identifier-syntax">msv</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="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><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::italic_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.In.Double"</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="3-ie.html#SP2">&#167;2</a>.</li></ul>
<ul class="endnotetexts"><li>This code is used in <a href="3-ie.html#SP3">&#167;3</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-ge2.html">&#10094;</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-il.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tpt.html">tpt</a></li><li class="progresssection"><a href="3-ae.html">ae</a></li><li class="progresssection"><a href="3-ae2.html">ae2</a></li><li class="progresssection"><a href="3-be.html">be</a></li><li class="progresssection"><a href="3-ce.html">ce</a></li><li class="progresssection"><a href="3-ce2.html">ce2</a></li><li class="progresssection"><a href="3-ce3.html">ce3</a></li><li class="progresssection"><a href="3-ce4.html">ce4</a></li><li class="progresssection"><a href="3-ee.html">ee</a></li><li class="progresssection"><a href="3-ee2.html">ee2</a></li><li class="progresssection"><a href="3-fe.html">fe</a></li><li class="progresssection"><a href="3-ge.html">ge</a></li><li class="progresssection"><a href="3-ge2.html">ge2</a></li><li class="progresscurrent">ie</li><li class="progresssection"><a href="3-le.html">le</a></li><li class="progresssection"><a href="3-me.html">me</a></li><li class="progresssection"><a href="3-pe.html">pe</a></li><li class="progresssection"><a href="3-pe2.html">pe2</a></li><li class="progresssection"><a href="3-re.html">re</a></li><li class="progresssection"><a href="3-rfse.html">rfse</a></li><li class="progresssection"><a href="3-se.html">se</a></li><li class="progresssection"><a href="3-te.html">te</a></li><li class="progresssection"><a href="3-te2.html">te2</a></li><li class="progresssection"><a href="3-ve.html">ve</a></li><li class="progresssection"><a href="3-ve2.html">ve2</a></li><li class="progresschapter"><a href="4-mc.html">4</a></li><li class="progressnext"><a href="3-le.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->

View file

@ -79,13 +79,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><a href="2-iu.html#SP5" class="function-link"><span class="function-syntax">IndexUtilities::anchor</span></a><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">"LEXICON"</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">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">, </span><span class="string-syntax">"class=\"smaller\""</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">"For instance, the description 'an unlocked door' is made "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"up from the adjective 'unlocked' and the noun 'door', both of which "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"can be found below. Property adjectives, like 'open', can be used "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"when creating things - 'In the Ballroom is an open container' is "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"allowed because 'open' is a property - but those with complicated "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"definitions, like 'empty', can only be tested during play, e.g. "</span>
<span class="plain-syntax"> </span><span class="string-syntax">"with rules like 'Instead of taking an empty container, ...'."</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-lcl.html#SP5" class="function-link"><span class="function-syntax">Localisation::write_0</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Lx.Explanation"</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>
<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="2-lxc.html#SP6" class="function-link"><span class="function-syntax">IndexLexicon::listing</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><a href="2-ii.html#SP7" class="function-link"><span class="function-syntax">InterpretIndex::get_lexicon</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">);</span>

View file

@ -104,8 +104,7 @@ function togglePopup(material_id) {
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">faux_instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_FAUX_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">faux_set</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-me.html#SP5" class="function-link"><span class="function-syntax">MapElement::no_detail_index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> || (</span><a href="2-fi.html#SP13" class="function-link"><span class="function-syntax">FauxInstances::is_a_direction</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-me.html#SP5" class="function-link"><span class="function-syntax">MapElement::no_detail_index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) || (</span><a href="2-fi.html#SP13" class="function-link"><span class="function-syntax">FauxInstances::is_a_direction</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><a href="2-fi.html#SP14" class="function-link"><span class="function-syntax">FauxInstances::increment_indexing_count</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-me.html#SP1">&#167;1</a>.</li></ul>

View file

@ -1,10 +1,10 @@
Total memory consumption was 391672K = 382 MB
Total memory consumption was 392495K = 383 MB
60.4% was used for 1994926 objects, in 371045 frames in 296 x 800K = 236800K = 231 MB:
60.5% was used for 1995026 objects, in 371046 frames in 297 x 800K = 237600K = 232 MB:
10.4% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
7.1% text_stream_array 5124 x 100 = 512400 objects, 28858368 bytes
4.3% linked_list 30840 objects, 17270400 bytes
7.1% text_stream_array 5125 x 100 = 512500 objects, 28864000 bytes
4.2% linked_list 30840 objects, 17270400 bytes
3.4% inter_symbol_array 139 x 1024 = 142336 objects, 13668704 bytes
2.5% parse_node 129399 objects, 10351920 bytes
1.8% verb_conjugation 160 objects, 7425280 bytes
@ -234,9 +234,9 @@ Total memory consumption was 391672K = 382 MB
---- kind_template_definition 1 object, 40 bytes
---- loop_over_scope 1 object, 40 bytes
39.5% was used for memory not allocated for objects:
39.4% was used for memory not allocated for objects:
20.6% text stream storage 82746500 bytes in 530520 claims
20.5% text stream storage 82770840 bytes in 530655 claims
4.5% dictionary storage 18153472 bytes in 33229 claims
---- sorting 744 bytes in 3 claims
1.7% source text 7200000 bytes in 3 claims
@ -254,5 +254,5 @@ Total memory consumption was 391672K = 382 MB
---- code generation workspace for objects 9648 bytes in 9 claims
---- emitter array storage 157552 bytes in 2061 claims
18.6% was overhead - 74974232 bytes = 73217K = 71 MB
18.8% was overhead - 75787800 bytes = 74011K = 72 MB

View file

@ -1,11 +1,11 @@
100.0% in inform7 run
56.0% in compilation to Inter
40.2% in //Sequence::undertake_queued_tasks//
3.6% in //MajorNodes::pre_pass//
2.5% in //MajorNodes::pass_1//
56.1% in compilation to Inter
40.1% in //Sequence::undertake_queued_tasks//
3.5% in //MajorNodes::pre_pass//
2.7% in //MajorNodes::pass_1//
2.1% in //RTPhrasebook::compile_entries//
1.4% in //ImperativeDefinitions::assess_all//
1.2% in //RTKindConstructors::compile//
1.1% in //RTKindConstructors::compile//
0.4% in //ImperativeDefinitions::compile_first_block//
0.4% in //MajorNodes::pass_2//
0.4% in //Sequence::undertake_queued_tasks//
@ -16,21 +16,21 @@
0.1% in //RTKindConstructors::compile_permissions//
0.1% in //Task::make_built_in_kind_constructors//
0.1% in //World::stages_II_and_III//
1.8% not specifically accounted for
42.0% in running Inter pipeline
1.9% not specifically accounted for
41.8% in running Inter pipeline
10.9% in step preparation
9.7% in inter step 7/14: consolidate-text
8.3% in inter step 2/14: link
6.9% in inter step 14/14: generate inform6 -> auto.inf
9.9% in inter step 7/14: consolidate-text
8.0% in inter step 2/14: link
7.1% in inter step 14/14: generate inform6 -> auto.inf
1.5% in inter step 10/14: make-identifiers-unique
0.4% in inter step 11/14: reconcile-verbs
0.2% in inter step 13/14: eliminate-redundant-operations
0.2% in inter step 6/14: assimilate
0.2% in inter step 8/14: resolve-external-symbols
0.2% in inter step 9/14: inspect-plugs
0.1% in inter step 12/14: eliminate-redundant-labels
0.1% in inter step 4/14: parse-linked-matter
0.1% in inter step 5/14: resolve-conditional-compilation
2.5% not specifically accounted for
1.6% in supervisor
0.2% not specifically accounted for
0.1% in inter step 9/14: inspect-plugs
2.3% not specifically accounted for
1.7% in supervisor
0.3% not specifically accounted for

View file

@ -27,9 +27,62 @@
%Index.Elements.Fi.Title = Figures
%Index.Elements.Fi.Heading = The figures, sound effects or external files used.|About figures<FIGURES>; About sounds<SOUNDS>; About files<EFILES>
%Index.Elements.Fi.NoFigures = There are no figures, or illustrations, in this project.
%Index.Elements.Fi.NoSounds = There are no sound effects in this project.
%Index.Elements.Fi.NoFiles = This project doesn't read or write external files.
%Index.Elements.Fi.ListOfFigures = List of Figures
%Index.Elements.Fi.ListOfSounds = List of Sounds
%Index.Elements.Fi.ListOfFiles = List of External Files
%Index.Elements.Fi.Format = Format *1
%Index.Elements.Fi.UnknownFormat = Unknown image format
%Index.Elements.Fi.Dimensions = *1 (width) by *2 (height) pixels
%Index.Elements.Fi.Missing = Missing from the Figures folder
%Index.Elements.Fi.Resource = Filename: "*1" - resource number *2
%Index.Elements.Fi.UnknownSoundFormat = Unknown sound format
%Index.Elements.Fi.SoundUnsupported = Warning: not officially supported in Glulx yet
%Index.Elements.Fi.SoundFormatOneTrack = Type *1 *2 file with 1 track
%Index.Elements.Fi.SoundFormatMultiTrack = Type *1 *2 file with *3 tracks
%Index.Elements.Fi.SoundFile = *1 *2 file
%Index.Elements.Fi.MissingSound = Missing from the Sounds folder
%Index.Elements.Fi.DurationS = duration *1 seconds
%Index.Elements.Fi.DurationMS = duration *1 minutes *2 seconds
%Index.Elements.Fi.DurationM = duration *1 minutes exactly
%Index.Elements.Fi.Sampled = Sampled as *1
%Index.Elements.Fi.Mono = Mono
%Index.Elements.Fi.Stereo = Stereo
%Index.Elements.Fi.BitRate = *1 kilobits/sec
%Index.Elements.Fi.BinaryFile = Binary file "*1"
%Index.Elements.Fi.TextFile = File "*1"
%Index.Elements.Fi.FileOwnedByThis = owned by this project
%Index.Elements.Fi.FileOwnedByOther = owned by another project
%Index.Elements.Fi.FileOwnedBy = owned by project with IFID number *1
%Index.Elements.Fi.ThumbnailLimit =
Only the first *1 thumbnails have been shown here, to avoid Inform taking
up too much memory. If you'd like to see more, set 'Use index figure
thumbnails of at least *2.', or whatever number you want to wait for.
%Index.Elements.In.Title = Innards
%Index.Elements.In.Heading = Technicalities about the story file being produced.|About the story file<STORYFILES>; About use options<OPTIONS>
%Index.Elements.In.Technicalities = See some technicalities for Inform maintainers only
%Index.Elements.In.Format = Story file format
%Index.Elements.In.ActiveUseOptions = The following use options are in force
%Index.Elements.In.InactiveUseOptions = Whereas these are not in force
%Index.Elements.In.NoUseOptions = None
%Index.Elements.In.LanguageDefinition = Inform language definition
%Index.Elements.In.Included = Included: *1
%Index.Elements.In.Excluded = Excluded: *1
%Index.Elements.In.Log = Debugging log
%Index.Elements.In.SetFromSource = Set from the source text
%Index.Elements.In.SetAutomatically = Set from the Options.txt configuration file, or automatically
%Index.Elements.In.SetFrom = Set from *1
%Index.Elements.In.Double = Double this
%Index.Pages.Actions.Title = Actions Index
%Index.Pages.Actions.Caption = Things that people can try to do
@ -38,6 +91,15 @@
%Index.Elements.A1.Title = Grouped
%Index.Elements.A1.Heading = With similar actions grouped together|About actions<ACTIONS>; New actions<NEWACTIONS>; Out of world actions (in red)<OUTOFWORLD>
%Index.Elements.A1.RequiresLight = requires light
%Index.Elements.A1.PastTense = past tense
%Index.Elements.A1.CommandsHeading = Typed commands leading to this action
%Index.Elements.A1.NoCommands = None
%Index.Elements.A1.ValuesHeading = Named values belonging to this action
%Index.Elements.A1.RulesHeading = Rules controlling this action
%Index.Elements.A1.ResponseIcons =
Click on the speech-bubble icons to see the responses, or here to see all of them
%Index.Elements.A2.Title = Alphabetic
%Index.Elements.A2.Heading = Listed in alphabetical order|About actions<ACTIONS>; New actions<NEWACTIONS>; Out of world actions (in red)<OUTOFWORLD>
@ -53,7 +115,7 @@
%Index.Elements.Bh.Heading = Kinds of action, grouped under common names|About kinds of action<KACTIONS>
%Index.Elements.Bh.None = No names for kinds of action have yet been defined.
%Index.Elements.Bh.Defined = defined as any of the following acts
%Index.Elements.Bh.Defined = defined as any of the following acts:
%Index.Elements.Cm.Title = Commands
%Index.Elements.Cm.Heading = Commands which the player can type|About commands<UNDERSTANDING>
@ -151,7 +213,16 @@
%Index.Elements.Lx.ToBe = *1, to be
%Index.Elements.Lx.KindOf = a kind of *1
%Index.Elements.Lx/ValueOf = value of *1
%Index.Elements.Lx.ValueOf = value of *1
%Index.Elements.Lx.Explanation =
For instance, the description 'an unlocked door' is made
up from the adjective 'unlocked' and the noun 'door', both of which
can be found below. Property adjectives, like 'open', can be used
when creating things - 'In the Ballroom is an open container' is
allowed because 'open' is a property - but those with complicated
definitions, like 'empty', can only be tested during play, e.g.
with rules like 'Instead of taking an empty container, ...'.
%Index.Elements.Rl.Title = Relations
%Index.Elements.Rl.Heading = Relations give meaning to verbs|About relations<RELATIONS>
@ -177,6 +248,9 @@
%Index.Elements.Xt.Title = Extras
%Index.Elements.Xt.Heading = Further rulebooks, from the source or extensions|About rulebooks<RULEBOOKS>; About activities<ACTIVITIES>; Moving or abolishing rules<RLISTING>
%Index.Elements.Xt.FromSourceText = From the source text
%Index.Elements.Xt.FromExtension = From the extension *1
%Index.Pages.Scenes.Title = Scenes Index
%Index.Pages.Scenes.Caption = Like scenes in a movie
@ -186,6 +260,11 @@
%Index.Elements.Ev.Title = Events
%Index.Elements.Ev.Heading = Timed events, if any|About timed events<TIMEDEVENTS>
%Index.Elements.Ev.None = None
%Index.Elements.Ev.Timeless = Events with no specific time
%Index.Elements.Ev.WhereTriggered = where triggered
%Index.Elements.Ev.Timetable = Timetable
%Index.Elements.RS.Title = Rules
%Index.Elements.RS.Heading = General rules about scenes

View file

@ -60,7 +60,8 @@ void TreeLists::add(inter_tree_location_list *NL, inter_tree_node *P) {
void TreeLists::sort(inter_tree_location_list *NL, int (*cmp)(const void *, const void *)) {
if (NL == NULL) internal_error("null inter_tree_location_list");
qsort(NL->list, (size_t) NL->list_used, sizeof(itl_entry), cmp);
if (NL->list_used > 0)
qsort(NL->list, (size_t) NL->list_used, sizeof(itl_entry), cmp);
}
@ And this macro conveniently loops through packages in a node list of their

View file

@ -185,6 +185,18 @@ with everything under the first line being italicised. For example:
Note that a valid documentation reference must begin with an upper-case letter.
=
void Localisation::bold_0(OUTPUT_STREAM, localisation_dictionary *D, text_stream *key) {
WRITE("<b>");
Localisation::write_0(OUT, D, key);
WRITE("</b>");
}
void Localisation::italic_0(OUTPUT_STREAM, localisation_dictionary *D, text_stream *key) {
WRITE("<i>");
Localisation::write_0(OUT, D, key);
WRITE("</i>");
}
void Localisation::write_0(OUTPUT_STREAM, localisation_dictionary *D, text_stream *key) {
text_stream *vals[10];
@<Vacate the vals@>;
@ -199,6 +211,17 @@ void Localisation::write_1(OUTPUT_STREAM, localisation_dictionary *D, text_strea
Localisation::write_general(OUT, D, key, vals);
}
void Localisation::write_1n(OUTPUT_STREAM, localisation_dictionary *D, text_stream *key,
int val1) {
text_stream *vals[10];
@<Vacate the vals@>;
TEMPORARY_TEXT(f1)
WRITE_TO(f1, "%d", val1);
vals[1] = f1;
Localisation::write_general(OUT, D, key, vals);
DISCARD_TEXT(f1)
}
void Localisation::write_2(OUTPUT_STREAM, localisation_dictionary *D, text_stream *key,
text_stream *val1, text_stream *val2) {
text_stream *vals[10];
@ -207,6 +230,56 @@ void Localisation::write_2(OUTPUT_STREAM, localisation_dictionary *D, text_strea
Localisation::write_general(OUT, D, key, vals);
}
void Localisation::write_2n(OUTPUT_STREAM, localisation_dictionary *D, text_stream *key,
int val1, int val2) {
text_stream *vals[10];
@<Vacate the vals@>;
TEMPORARY_TEXT(f1)
TEMPORARY_TEXT(f2)
WRITE_TO(f1, "%d", val1);
WRITE_TO(f2, "%d", val2);
vals[1] = f1; vals[2] = f2;
Localisation::write_general(OUT, D, key, vals);
DISCARD_TEXT(f1)
DISCARD_TEXT(f2)
}
void Localisation::write_2sn(OUTPUT_STREAM, localisation_dictionary *D, text_stream *key,
text_stream *val1, int val2) {
text_stream *vals[10];
@<Vacate the vals@>;
TEMPORARY_TEXT(f2)
WRITE_TO(f2, "%d", val2);
vals[1] = val1; vals[2] = f2;
Localisation::write_general(OUT, D, key, vals);
DISCARD_TEXT(f2)
}
void Localisation::write_2ns(OUTPUT_STREAM, localisation_dictionary *D, text_stream *key,
int val1, text_stream *val2) {
text_stream *vals[10];
@<Vacate the vals@>;
TEMPORARY_TEXT(f1)
WRITE_TO(f1, "%d", val1);
vals[1] = f1; vals[2] = val2;
Localisation::write_general(OUT, D, key, vals);
DISCARD_TEXT(f1)
}
void Localisation::write_3nsn(OUTPUT_STREAM, localisation_dictionary *D, text_stream *key,
int val1, text_stream *val2, int val3) {
text_stream *vals[10];
@<Vacate the vals@>;
TEMPORARY_TEXT(f1)
TEMPORARY_TEXT(f3)
WRITE_TO(f1, "%d", val1);
WRITE_TO(f3, "%d", val3);
vals[1] = f1; vals[2] = val2; vals[3] = f3;
Localisation::write_general(OUT, D, key, vals);
DISCARD_TEXT(f1)
DISCARD_TEXT(f3)
}
@<Vacate the vals@> =
for (int i=0; i<10; i++) vals[i] = NULL;

View file

@ -73,9 +73,7 @@ void AlphabeticElement::render(OUTPUT_STREAM, localisation_dictionary *LD) {
void AlphabeticElement::column(OUTPUT_STREAM, text_stream *key, localisation_dictionary *LD) {
TEMPORARY_TEXT(full)
WRITE_TO(full, "Index.Elements.A2.%S", key);
WRITE("<b>");
Localisation::write_0(OUT, LD, full);
WRITE("</b> ");
Localisation::bold_0(OUT, LD, full);
DISCARD_TEXT(full)
}
@ -83,9 +81,7 @@ void AlphabeticElement::column(OUTPUT_STREAM, text_stream *key, localisation_dic
void AlphabeticElement::note(OUTPUT_STREAM, text_stream *key, localisation_dictionary *LD) {
TEMPORARY_TEXT(full)
WRITE_TO(full, "Index.Elements.A2.%S", key);
WRITE("<i>");
Localisation::write_0(OUT, LD, full);
WRITE("</i> ");
Localisation::italic_0(OUT, LD, full);
DISCARD_TEXT(full)
}

View file

@ -64,9 +64,7 @@ void ArithmeticElement::render(OUTPUT_STREAM, localisation_dictionary *LD) {
if (Str::len(dims) > 0) {
WRITE("%S", dims);
} else {
WRITE("<i>");
Localisation::write_0(OUT, LD, I"Index.Elements.Ar.Dimensionless");
WRITE("</i>");
Localisation::italic_0(OUT, LD, I"Index.Elements.Ar.Dimensionless");
}
@ This is simply a table of all the multiplications declared in the source
@ -114,8 +112,7 @@ text, sorted into kind order of left and then right operand.
void ArithmeticElement::column(OUTPUT_STREAM, text_stream *key, localisation_dictionary *LD) {
TEMPORARY_TEXT(full)
WRITE_TO(full, "Index.Elements.Ar.%S", key);
WRITE("<b>");
Localisation::write_0(OUT, LD, full);
WRITE("</b> ");
Localisation::bold_0(OUT, LD, full);
WRITE(" ");
DISCARD_TEXT(full)
}

View file

@ -23,9 +23,8 @@ void BehaviourElement::render(OUTPUT_STREAM, localisation_dictionary *LD) {
HTML_OPEN("p"); WRITE("<b>%S</b>", name);
IndexUtilities::link_package(OUT, pack);
HTML_TAG("br");
WRITE("&nbsp;&nbsp;<i>");
Localisation::write_0(OUT, LD, I"Index.Elements.Bh.Defined");
WRITE(":</i>\n");
WRITE("&nbsp;&nbsp;");
Localisation::italic_0(OUT, LD, I"Index.Elements.Bh.Defined");
inter_tree_node *D = Inter::Packages::definition(pack);
LOOP_THROUGH_INTER_CHILDREN(C, D) {
if (C->W.data[ID_IFLD] == PACKAGE_IST) {

View file

@ -155,9 +155,9 @@ or as paragraph of text in pass 2:
HTML::open_indented_p(OUT, 1, "halftight");
IndexUtilities::anchor_numbered(OUT, i); /* ...the anchor to which the grey icon in the table led */
WRITE("<b>"); IndexUtilities::kind_name(OUT, pack, FALSE, TRUE); WRITE("</b>");
WRITE(" (<i>");
Localisation::write_0(OUT, D, I"Index.Elements.Ch.Plural");
WRITE("</i> ");
WRITE(" (");
Localisation::italic_0(OUT, D, I"Index.Elements.Ch.Plural");
WRITE(" ");
IndexUtilities::kind_name(OUT, pack, TRUE, FALSE); WRITE(")");
IndexUtilities::link_to_documentation(OUT, pack);
HTML_CLOSE("p");
@ -353,9 +353,9 @@ void ChartElement::index_object_kind(OUTPUT_STREAM, tree_inventory *inv,
IndexUtilities::kind_name(OUT, pack, FALSE, FALSE);
if (pass == 2) WRITE("</b>");
if (pass == 2) {
WRITE(" (<i>");
Localisation::write_0(OUT, D, I"Index.Elements.Ch.Plural");
WRITE("</i> ");
WRITE(" (");
Localisation::italic_0(OUT, D, I"Index.Elements.Ch.Plural");
WRITE(" ");
IndexUtilities::kind_name(OUT, pack, TRUE, FALSE);
WRITE(")");
}

View file

@ -126,24 +126,21 @@ linked_list *CommandsElement::sort(linked_list *entries) {
break;
case OUT_OF_WORLD_COMMAND:
HTML::begin_colour(OUT, I"800000");
WRITE("&quot;%S&quot;, <i>", cie->command_headword);
Localisation::write_0(OUT, LD, I"Index.Elements.Cm.Command");
WRITE("</i>");
WRITE("&quot;%S&quot;, ", cie->command_headword);
Localisation::italic_0(OUT, LD, I"Index.Elements.Cm.Command");
HTML::end_colour(OUT);
HTML_TAG("br");
break;
case TESTING_COMMAND:
HTML::begin_colour(OUT, I"800000");
WRITE("&quot;%S&quot;, <i>", cie->command_headword);
Localisation::write_0(OUT, LD, I"Index.Elements.Cm.TestingCommand");
WRITE("</i>");
WRITE("&quot;%S&quot;, ", cie->command_headword);
Localisation::italic_0(OUT, LD, I"Index.Elements.Cm.TestingCommand");
HTML::end_colour(OUT);
HTML_TAG("br");
break;
case BARE_DIRECTION_COMMAND:
WRITE("&quot;[direction]&quot; - <i>");
Localisation::write_0(OUT, LD, I"Index.Elements.Cm.DirectionCommand");
WRITE("</i>");
WRITE("&quot;[direction]&quot; - ");
Localisation::italic_0(OUT, LD, I"Index.Elements.Cm.DirectionCommand");
HTML_TAG("br");
break;
}
@ -160,9 +157,9 @@ void CommandsElement::index_normal(OUTPUT_STREAM, inter_tree *I, inter_package *
void CommandsElement::index_alias(OUTPUT_STREAM, inter_tree *I, inter_package *cg_pack,
text_stream *headword, localisation_dictionary *LD) {
WRITE("&quot;%S&quot;, <i>", headword);
Localisation::write_0(OUT, LD, I"Index.Elements.Cm.Alias");
WRITE("</i> &quot;%S&quot;", Metadata::read_textual(cg_pack, I"^command"));
WRITE("&quot;%S&quot;, ", headword);
Localisation::italic_0(OUT, LD, I"Index.Elements.Cm.Alias");
WRITE(" &quot;%S&quot;", Metadata::read_textual(cg_pack, I"^command"));
IndexUtilities::link_package(OUT, cg_pack);
HTML_TAG("br");
}
@ -181,15 +178,13 @@ void CommandsElement::index_grammar_line(OUTPUT_STREAM, inter_package *cgl,
WRITE("&quot;");
IndexUtilities::link_package(OUT, cgl);
WRITE(" - <i>%S", Metadata::read_textual(an, I"^name"));
WRITE(" - <i>%S</i>", Metadata::read_textual(an, I"^name"));
IndexUtilities::detail_link(OUT, "A",
(int) Metadata::read_numeric(an, I"action_id"), TRUE);
if (Metadata::read_optional_numeric(cgl, I"^reversed")) {
WRITE(" <i>");
Localisation::write_0(OUT, LD, I"Index.Elements.Cm.Reversed");
WRITE("</i>");
WRITE(" ");
Localisation::italic_0(OUT, LD, I"Index.Elements.Cm.Reversed");
}
WRITE("</i>");
if (oow) HTML::end_colour(OUT);
HTML_TAG("br");
}

View file

@ -173,8 +173,6 @@ void ContentsElement::index_extensions_included_by(OUTPUT_STREAM, tree_inventory
@ =
void ContentsElement::word_count(OUTPUT_STREAM, inter_package *pack,
localisation_dictionary *LD) {
TEMPORARY_TEXT(words)
WRITE_TO(words, "%d", Metadata::read_numeric(pack, I"^word_count"));
Localisation::write_1(OUT, LD, I"Index.Elements.C.Words", words);
DISCARD_TEXT(words)
Localisation::write_1n(OUT, LD, I"Index.Elements.C.Words",
(int) Metadata::read_numeric(pack, I"^word_count"));
}

View file

@ -14,7 +14,9 @@ void EventsElement::render(OUTPUT_STREAM, localisation_dictionary *LD) {
@<Index events with no specific time@>;
@<Index timetabled events@>;
if ((when_count == 0) && (tt_count == 0)) {
HTML_OPEN("p"); WRITE("<i>None.</i>"); HTML_CLOSE("p");
HTML_OPEN("p");
Localisation::italic_0(OUT, LD, I"Index.Elements.Ev.None");
HTML_CLOSE("p");
}
}
@ -25,14 +27,16 @@ void EventsElement::render(OUTPUT_STREAM, localisation_dictionary *LD) {
(Metadata::exists(pack, I"^timed_for") == FALSE)) {
if (when_count == 0) {
HTML_OPEN("p");
WRITE("<i>Events with no specific time</i>");
Localisation::italic_0(OUT, LD, I"Index.Elements.Ev.Timeless");
HTML_CLOSE("p");
}
when_count++;
HTML_OPEN_WITH("p", "class=\"tightin2\"");
WRITE("%S", Metadata::read_textual(pack, I"^preamble"));
IndexUtilities::link_package(OUT, pack);
WRITE(" (where triggered: ");
WRITE(" (");
Localisation::write_0(OUT, LD, I"Index.Elements.Ev.WhereTriggered");
WRITE(": ");
inter_package *entry;
LOOP_THROUGH_SUBPACKAGES(entry, pack, I"_timed_rule_trigger") {
int at = (int) Metadata::read_optional_numeric(entry, I"^used_at");
@ -49,7 +53,7 @@ void EventsElement::render(OUTPUT_STREAM, localisation_dictionary *LD) {
(Metadata::exists(pack, I"^timed_for"))) {
if (tt_count == 0) {
HTML_OPEN("p");
WRITE("<i>Timetable</i>");
Localisation::italic_0(OUT, LD, I"Index.Elements.Ev.Timetable");
HTML_CLOSE("p");
}
tt_count++;

View file

@ -2,7 +2,8 @@
To write the Extras element (Xt) in the index.
@
@ This is to sweep up rulebooks and activities not covered by other elements,
really, and most of the code here is just to arrange them in some logical order.
=
void ExtrasElement::render(OUTPUT_STREAM, localisation_dictionary *LD) {
@ -41,10 +42,12 @@ void ExtrasElement::render(OUTPUT_STREAM, localisation_dictionary *LD) {
@<Heading for these@> =
HTML_OPEN("p");
WRITE("<b>");
if (Metadata::read_optional_numeric(E, I"^category") == 1) {
WRITE("<b>From the source text</b>");
Localisation::write_0(OUT, LD, I"Index.Elements.Xt.FromSourceText");
} else {
WRITE("<b>From the extension %S</b>",
Localisation::write_1(OUT, LD, I"Index.Elements.Xt.FromExtension",
Metadata::read_optional_textual(E, I"^credit"));
}
WRITE("</b>");
HTML_CLOSE("p");

View file

@ -2,56 +2,45 @@
To write the Figures element (Fi) in the index.
@ This also includes sounds and external files, a little questionably.
@ Not only figures but also sounds and external files, a little questionably.
=
void FiguresElement::render(OUTPUT_STREAM, localisation_dictionary *LD) {
inter_tree *I = InterpretIndex::get_tree();
tree_inventory *inv = Synoptic::inv(I);
if (TreeLists::len(inv->figure_nodes) > 0) {
TreeLists::sort(inv->figure_nodes, Synoptic::module_order);
}
if (TreeLists::len(inv->sound_nodes) > 0) {
TreeLists::sort(inv->sound_nodes, Synoptic::module_order);
}
if (TreeLists::len(inv->file_nodes) > 0) {
TreeLists::sort(inv->file_nodes, Synoptic::module_order);
}
if (TreeLists::len(inv->figure_nodes) < 2) { /* cover art always creates 1 */
HTML_OPEN("p");
WRITE("There are no figures, or illustrations, in this project.");
HTML_CLOSE("p");
} else {
@<Index the figures@>;
}
if (TreeLists::len(inv->sound_nodes) == 0) {
HTML_OPEN("p");
WRITE("There are no sound effects in this project.");
HTML_CLOSE("p");
} else {
@<Index the sounds@>;
}
if (TreeLists::len(inv->file_nodes) == 0) {
HTML_OPEN("p");
WRITE("This project doesn't read or write external files.");
HTML_CLOSE("p");
} else {
@<Index the files@>;
}
TreeLists::sort(inv->figure_nodes, Synoptic::module_order);
TreeLists::sort(inv->sound_nodes, Synoptic::module_order);
TreeLists::sort(inv->file_nodes, Synoptic::module_order);
@<Index the figures@>;
@<Index the sounds@>;
@<Index the files@>;
}
@ The index is presented with thumbnails of a given pixel width, which
@h Figures.
@<Index the figures@> =
if (TreeLists::len(inv->figure_nodes) <= 1) { /* cover art always creates 1 */
HTML_OPEN("p");
Localisation::write_0(OUT, LD, I"Index.Elements.Fi.NoFigures");
HTML_CLOSE("p");
} else {
HTML_OPEN("p");
Localisation::bold_0(OUT, LD, I"Index.Elements.Fi.ListOfFigures");
HTML_CLOSE("p");
@<Tabulate the figures@>;
}
@ The table is presented with thumbnails of a given pixel width, which
the HTML renderer automatically scales to fit. Height is adjusted so as
to match this width, preserving the aspect ratio.
@d THUMBNAIL_WIDTH 80
=
@<Index the figures@> =
@<Tabulate the figures@> =
inter_package *settings = Inter::Packages::by_url(I, I"/main/completion/basics");
int MAX_INDEXED_FIGURES =
(int) Metadata::read_optional_numeric(settings, I"^max_indexed_figures");
HTML_OPEN("p"); WRITE("<b>List of Figures</b>"); HTML_CLOSE("p");
HTML::begin_html_table(OUT, "#ffffff", TRUE, 0, 0, 0, 0, 0);
int count_of_displayed_figures = 0;
inter_package *pack;
@ -60,76 +49,96 @@ to match this width, preserving the aspect ratio.
if (id > 1) {
text_stream *filename_as_text = Metadata::read_textual(pack, I"^filename");
filename *F = Filenames::from_text(filename_as_text);
TEMPORARY_TEXT(line2)
TEMPORARY_TEXT(description)
unsigned int width = 0, height = 0;
int rv = 0;
FILE *FIGURE_FILE = Filenames::fopen(F, "rb");
if (FIGURE_FILE) {
char *real_format = "JPEG";
rv = ImageFiles::get_JPEG_dimensions(FIGURE_FILE, &width, &height);
fclose(FIGURE_FILE);
if (rv == 0) {
FIGURE_FILE = Filenames::fopen(F, "rb");
if (FIGURE_FILE) {
real_format = "PNG";
rv = ImageFiles::get_PNG_dimensions(FIGURE_FILE, &width, &height);
fclose(FIGURE_FILE);
}
}
if (rv == 0) {
WRITE_TO(line2, "<i>Unknown image format</i>");
} else {
WRITE_TO(line2, "%s format: %d (width) by %d (height) pixels",
real_format, width, height);
}
} else {
WRITE_TO(line2, "<i>Missing from the Figures folder</i>");
}
HTML::first_html_column(OUT, THUMBNAIL_WIDTH+10);
if (rv == 0) {
HTML_TAG_WITH("img", "border=\"0\" src=\"inform:/doc_images/image_problem.png\"");
WRITE("&nbsp;");
} else if (count_of_displayed_figures++ < MAX_INDEXED_FIGURES) {
HTML_TAG_WITH("img", "border=\"1\" src=\"file://%f\" width=\"%d\" height=\"%d\"",
F, THUMBNAIL_WIDTH, THUMBNAIL_WIDTH*height/width);
WRITE("&nbsp;");
} else {
HTML_OPEN_WITH("div", "style=\"width:%dpx; height:%dpx; border:1px solid; background-color:#6495ed;\"",
THUMBNAIL_WIDTH, THUMBNAIL_WIDTH*height/width);
WRITE("&nbsp;");
HTML_CLOSE("div");
}
HTML::next_html_column(OUT, 0);
WRITE("%S", Metadata::read_textual(pack, I"^name"));
IndexUtilities::link_package(OUT, pack);
HTML_TAG("br");
if (Str::len(line2) > 0) {
WRITE("%S", line2);
HTML_TAG("br");
}
WRITE("Filename: \"%S\" - resource number %d", Filenames::get_leafname(F), id);
HTML::end_html_row(OUT);
DISCARD_TEXT(line2)
int format_found = 0;
@<Find image format and dimensions@>;
@<Render a table row for the image@>;
DISCARD_TEXT(description)
}
}
HTML::end_html_table(OUT);
if (count_of_displayed_figures > MAX_INDEXED_FIGURES) {
HTML_OPEN("p");
WRITE("(Only the first %d thumbnails have been shown here, "
"to avoid Inform taking up too much memory. If you'd like to "
"see more, set 'Use index figure thumbnails of at least %d.', or "
"whatever number you want to wait for.)",
WRITE("(");
Localisation::write_2n(OUT, LD, I"Index.Elements.Fi.ThumbnailLimit",
MAX_INDEXED_FIGURES, 10*MAX_INDEXED_FIGURES);
WRITE(")");
HTML_CLOSE("p");
}
@h Sounds Index.
@<Find image format and dimensions@> =
FILE *FIGURE_FILE = Filenames::fopen(F, "rb");
if (FIGURE_FILE) {
text_stream *real_format = I"JPEG";
format_found = ImageFiles::get_JPEG_dimensions(FIGURE_FILE, &width, &height);
fclose(FIGURE_FILE);
if (format_found == 0) {
FIGURE_FILE = Filenames::fopen(F, "rb");
if (FIGURE_FILE) {
real_format = I"PNG";
format_found = ImageFiles::get_PNG_dimensions(FIGURE_FILE, &width, &height);
fclose(FIGURE_FILE);
}
}
if (format_found == 0) {
Localisation::italic_0(description, LD, I"Index.Elements.Fi.UnknownFormat");
} else {
Localisation::write_1(description, LD, I"Index.Elements.Fi.Format", real_format);
WRITE_TO(description, ": ");
Localisation::write_2n(description, LD, I"Index.Elements.Fi.Dimensions",
(int) width, (int) height);
}
} else {
Localisation::italic_0(description, LD, I"Index.Elements.Fi.Missing");
}
@<Render a table row for the image@> =
HTML::first_html_column(OUT, THUMBNAIL_WIDTH+10);
if (format_found == 0) {
HTML_TAG_WITH("img",
"border=\"0\" src=\"inform:/doc_images/image_problem.png\"");
WRITE("&nbsp;");
} else if (count_of_displayed_figures++ < MAX_INDEXED_FIGURES) {
HTML_TAG_WITH("img",
"border=\"1\" src=\"file://%f\" width=\"%d\" height=\"%d\"",
F, THUMBNAIL_WIDTH, THUMBNAIL_WIDTH*height/width);
WRITE("&nbsp;");
} else {
HTML_OPEN_WITH("div",
"style=\"width:%dpx; height:%dpx; border:1px solid; background-color:#6495ed;\"",
THUMBNAIL_WIDTH, THUMBNAIL_WIDTH*height/width);
WRITE("&nbsp;");
HTML_CLOSE("div");
}
HTML::next_html_column(OUT, 0);
WRITE("%S", Metadata::read_textual(pack, I"^name"));
IndexUtilities::link_package(OUT, pack);
HTML_TAG("br");
if (Str::len(description) > 0) {
WRITE("%S", description);
HTML_TAG("br");
}
Localisation::write_2sn(description, LD, I"Index.Elements.Fi.Resource",
Filenames::get_leafname(F), (int) id);
HTML::end_html_row(OUT);
@h Sounds.
@<Index the sounds@> =
HTML_OPEN("p"); WRITE("<b>List of Sounds</b>"); HTML_CLOSE("p");
WRITE("\n");
if (TreeLists::len(inv->sound_nodes) == 0) {
HTML_OPEN("p");
Localisation::bold_0(OUT, LD, I"Index.Elements.Fi.ListOfSounds");
HTML_CLOSE("p");
HTML_OPEN("p");
Localisation::write_0(OUT, LD, I"Index.Elements.Fi.NoSounds");
HTML_CLOSE("p");
} else {
@<Tabulate the sounds@>;
}
@<Tabulate the sounds@> =
HTML::begin_html_table(OUT, "#ffffff", TRUE, 0, 0, 0, 0, 0);
inter_package *pack;
LOOP_OVER_INVENTORY_PACKAGES(pack, i, inv->sound_nodes) {
@ -139,102 +148,143 @@ to match this width, preserving the aspect ratio.
unsigned int duration, pBitsPerSecond, pChannels, pSampleRate, fsize,
midi_version = 0, no_tracks = 0;
int preview = TRUE, waveform_style = TRUE;
TEMPORARY_TEXT(line2)
int rv = 0;
FILE *SOUND_FILE = Filenames::fopen(F, "rb");
if (SOUND_FILE) {
char *real_format = "AIFF";
rv = SoundFiles::get_AIFF_duration(SOUND_FILE, &duration, &pBitsPerSecond,
&pChannels, &pSampleRate);
fseek(SOUND_FILE, 0, SEEK_END);
fsize = (unsigned int) (ftell(SOUND_FILE));
fclose(SOUND_FILE);
if (rv == 0) {
SOUND_FILE = Filenames::fopen(F, "rb");
if (SOUND_FILE) {
real_format = "Ogg Vorbis";
preview = FALSE;
rv = SoundFiles::get_OggVorbis_duration(SOUND_FILE, &duration,
&pBitsPerSecond, &pChannels, &pSampleRate);
fclose(SOUND_FILE);
}
}
if (rv == 0) {
SOUND_FILE = Filenames::fopen(F, "rb");
if (SOUND_FILE) {
waveform_style = FALSE;
real_format = "MIDI";
preview = TRUE;
rv = SoundFiles::get_MIDI_information(SOUND_FILE,
&midi_version, &no_tracks);
fclose(SOUND_FILE);
}
}
if (rv == 0) {
WRITE_TO(line2, "<i>Unknown sound format</i>");
} else {
if (waveform_style == FALSE) {
WRITE_TO(line2, "Type %d %s file with %d track%s",
midi_version, real_format, no_tracks,
(no_tracks == 1)?"":"s");
HTML_TAG("br");
WRITE("<i>Warning: not officially supported in glulx yet</i>");
} else {
int min = (duration/6000), sec = (duration%6000)/100,
centisec = (duration%100);
WRITE_TO(line2, "%d.%01dKB %s file: duration ",
fsize/1024, (fsize%1024)/102, real_format);
if (min > 0)
WRITE_TO(line2, "%d minutes ", min);
if ((sec > 0) || (centisec > 0)) {
if (centisec == 0)
WRITE_TO(line2, "%d seconds", sec);
else
WRITE_TO(line2, "%d.%02d seconds", sec, centisec);
} else WRITE_TO(line2, "exactly");
WRITE_TO(line2, "Sampled as %d.%01dkHz %s (%d.%01d kilobits/sec)",
pSampleRate/1000, (pSampleRate%1000)/100,
(pChannels==1)?"Mono":"Stereo",
pBitsPerSecond/1000, (pSampleRate%1000)/100);
}
}
} else {
WRITE_TO(line2, "<i>Missing from the Sounds folder</i>");
}
HTML::first_html_column(OUT, THUMBNAIL_WIDTH+10);
if (rv == 0) {
HTML_TAG_WITH("img", "border=\"0\" src=\"inform:/doc_images/image_problem.png\"");
} else if (preview) {
HTML_OPEN_WITH("embed",
"src=\"file://%f\" width=\"%d\" height=\"64\" "
"autostart=\"false\" volume=\"50%%\" mastersound",
F, THUMBNAIL_WIDTH);
HTML_CLOSE("embed");
} else {
HTML_TAG_WITH("img", "border=\"0\" src=\"inform:/doc_images/sound_okay.png\"");
}
WRITE("&nbsp;");
HTML::next_html_column(OUT, 0);
WRITE("%S", Metadata::read_textual(pack, I"^name"));
IndexUtilities::link_package(OUT, pack);
HTML_TAG("br");
if (Str::len(line2) > 0) {
WRITE("%S", line2);
HTML_TAG("br");
}
WRITE("Filename: \"%S\" - resource number %d", Filenames::get_leafname(F), id);
DISCARD_TEXT(line2)
HTML::end_html_row(OUT);
TEMPORARY_TEXT(description)
int format_found = 0;
@<Find sound format and duration@>
@<Render a table row for the sound@>;
DISCARD_TEXT(description)
}
HTML::end_html_table(OUT);
@ This is more or less perfunctory, but still of some use, if only as a list.
@<Find sound format and duration@> =
FILE *SOUND_FILE = Filenames::fopen(F, "rb");
if (SOUND_FILE) {
text_stream *real_format = I"AIFF";
format_found = SoundFiles::get_AIFF_duration(SOUND_FILE, &duration, &pBitsPerSecond,
&pChannels, &pSampleRate);
fseek(SOUND_FILE, 0, SEEK_END);
fsize = (unsigned int) (ftell(SOUND_FILE));
fclose(SOUND_FILE);
if (format_found == 0) {
SOUND_FILE = Filenames::fopen(F, "rb");
if (SOUND_FILE) {
real_format = I"Ogg Vorbis";
preview = FALSE;
format_found = SoundFiles::get_OggVorbis_duration(SOUND_FILE, &duration,
&pBitsPerSecond, &pChannels, &pSampleRate);
fclose(SOUND_FILE);
}
}
if (format_found == 0) {
SOUND_FILE = Filenames::fopen(F, "rb");
if (SOUND_FILE) {
waveform_style = FALSE;
real_format = I"MIDI";
preview = TRUE;
format_found = SoundFiles::get_MIDI_information(SOUND_FILE,
&midi_version, &no_tracks);
fclose(SOUND_FILE);
}
}
if (format_found == 0) {
Localisation::italic_0(description, LD, I"Index.Elements.Fi.UnknownSoundFormat");
} else {
if (waveform_style == FALSE) @<Describe sound in MIDI format@>
else @<Describe sound in waveform format@>;
}
} else {
Localisation::italic_0(description, LD, I"Index.Elements.Fi.MissingSound");
}
@<Describe sound in MIDI format@> =
if (no_tracks == 1) {
Localisation::write_2ns(description, LD, I"Index.Elements.Fi.SoundFormatOneTrack",
(int) midi_version, real_format);
} else {
Localisation::write_3nsn(description, LD, I"Index.Elements.Fi.SoundFormatMultiTrack",
(int) midi_version, real_format, (int) no_tracks);
}
WRITE_TO(description, " - ");
Localisation::italic_0(description, LD, I"Index.Elements.Fi.SoundUnsupported");
@<Describe sound in waveform format@> =
TEMPORARY_TEXT(size)
WRITE_TO(size, "%d.%01dKB", fsize/1024, (fsize%1024)/102);
Localisation::write_2(description, LD, I"Index.Elements.Fi.SoundFile", size, real_format);
DISCARD_TEXT(size)
int min = (duration/6000), sec = (duration%6000)/100, centisec = (duration%100);
WRITE_TO(description, ": ");
TEMPORARY_TEXT(seconds)
if (centisec == 0) WRITE_TO(seconds, "%d", sec);
else WRITE_TO(seconds, "%d.%02d", sec, centisec);
if (min > 0) {
if ((sec > 0) || (centisec > 0)) {
Localisation::write_2ns(description, LD, I"Index.Elements.Fi.DurationMS",
min, seconds);
} else {
Localisation::write_1n(description, LD, I"Index.Elements.Fi.DurationM", min);
}
} else {
Localisation::write_1(description, LD, I"Index.Elements.Fi.DurationS", seconds);
}
DISCARD_TEXT(seconds)
WRITE_TO(description, "<br>");
TEMPORARY_TEXT(sample)
WRITE_TO(sample, "%d.%01dkHz", pSampleRate/1000, (pSampleRate%1000)/100);
Localisation::write_1(OUT, LD, I"Index.Elements.Fi.Sampled", sample);
DISCARD_TEXT(sample)
WRITE_TO(description, " ");
if (pChannels == 1) Localisation::write_0(OUT, LD, I"Index.Elements.Fi.Mono");
else Localisation::write_0(OUT, LD, I"Index.Elements.Fi.Stereo");
WRITE_TO(description, " (");
TEMPORARY_TEXT(bitrate)
WRITE_TO(bitrate, "%d.%01d", pBitsPerSecond/1000, (pSampleRate%1000)/100);
Localisation::write_1(OUT, LD, I"Index.Elements.Fi.BitRate", bitrate);
DISCARD_TEXT(bitrate)
WRITE_TO(description, ")");
@<Render a table row for the sound@> =
HTML::first_html_column(OUT, THUMBNAIL_WIDTH+10);
if (format_found == 0) {
HTML_TAG_WITH("img", "border=\"0\" src=\"inform:/doc_images/image_problem.png\"");
} else if (preview) {
HTML_OPEN_WITH("embed",
"src=\"file://%f\" width=\"%d\" height=\"64\" "
"autostart=\"false\" volume=\"50%%\" mastersound",
F, THUMBNAIL_WIDTH);
HTML_CLOSE("embed");
} else {
HTML_TAG_WITH("img", "border=\"0\" src=\"inform:/doc_images/sound_okay.png\"");
}
WRITE("&nbsp;");
HTML::next_html_column(OUT, 0);
WRITE("%S", Metadata::read_textual(pack, I"^name"));
IndexUtilities::link_package(OUT, pack);
HTML_TAG("br");
if (Str::len(description) > 0) {
WRITE("%S", description);
HTML_TAG("br");
}
Localisation::write_2sn(description, LD, I"Index.Elements.Fi.Resource",
Filenames::get_leafname(F), (int) id);
HTML::end_html_row(OUT);
@h Files.
This is more or less perfunctory, but still of some use, if only as a list.
=
@<Index the files@> =
HTML_OPEN("p");
WRITE("<b>List of External Files</b>");
HTML_CLOSE("p");
if (TreeLists::len(inv->file_nodes) == 0) {
HTML_OPEN("p");
Localisation::write_0(OUT, LD, I"Index.Elements.Fi.NoFiles");
HTML_CLOSE("p");
} else {
HTML_OPEN("p");
Localisation::bold_0(OUT, LD, I"Index.Elements.Fi.ListOfFiles");
HTML_CLOSE("p");
@<Tabulate the files@>;
}
@<Tabulate the files@> =
HTML::begin_html_table(OUT, "#ffffff", TRUE, 0, 0, 0, 0, 0);
inter_package *pack;
LOOP_OVER_INVENTORY_PACKAGES(pack, i, inv->file_nodes) {
@ -250,18 +300,21 @@ to match this width, preserving the aspect ratio.
WRITE("%S", Metadata::read_textual(pack, I"^name"));
IndexUtilities::link_package(OUT, pack);
HTML_TAG("br");
WRITE("Filename: %s %S- owned by ",
(is_binary)?"- binary ":"",
Metadata::read_textual(pack, I"^leafname"));
if (is_binary)
Localisation::write_1(OUT, LD, I"Index.Elements.Fi.BinaryFile",
Metadata::read_textual(pack, I"^leafname"));
else
Localisation::write_1(OUT, LD, I"Index.Elements.Fi.TextFile",
Metadata::read_textual(pack, I"^leafname"));
WRITE(" - ");
if (Metadata::read_optional_numeric(pack, I"^file_owned")) {
WRITE("this project");
Localisation::write_0(OUT, LD, I"Index.Elements.Fi.FileOwnedByThis");
} else if (Metadata::read_optional_numeric(pack, I"^file_owned_by_other")) {
WRITE("another project");
Localisation::write_0(OUT, LD, I"Index.Elements.Fi.FileOwnedByOther");
} else {
WRITE("project with IFID number <b>%S</b>",
Localisation::write_1(OUT, LD, I"Index.Elements.Fi.FileOwnedBy",
Metadata::read_textual(pack, I"^file_owner"));
}
HTML::end_html_row(OUT);
}
HTML::end_html_table(OUT);
HTML_OPEN("p");

View file

@ -3,7 +3,9 @@
To write the Grouped actions element (A1) in the index, and also the detailed
per-action pages linked from it.
@ =
@ The element itself is easily made:
=
void GroupedElement::render(OUTPUT_STREAM, localisation_dictionary *LD) {
inter_tree *I = InterpretIndex::get_tree();
tree_inventory *inv = Synoptic::inv(I);
@ -37,24 +39,21 @@ void GroupedElement::render(OUTPUT_STREAM, localisation_dictionary *LD) {
}
if (f == FALSE) HTML_OPEN("p");
if ((f) && (suppress_comma == FALSE)) WRITE(", ");
GroupedElement::index_p1(OUT, an_pack, FALSE, FALSE, i);
inter_ti oow = Metadata::read_optional_numeric(an_pack, I"^out_of_world");
if (oow) HTML::begin_colour(OUT, I"800000");
WRITE("%S", Metadata::read_optional_textual(an_pack, I"^name"));
if (oow) HTML::end_colour(OUT);
IndexUtilities::link_package(OUT, an_pack);
IndexUtilities::detail_link(OUT, "A", i, FALSE);
f = TRUE;
}
if (f) HTML_CLOSE("p");
}
void GroupedElement::index_p1(OUTPUT_STREAM, inter_package *an_pack, int bold,
int on_details_page, int i) {
inter_ti oow = Metadata::read_optional_numeric(an_pack, I"^out_of_world");
if (oow) HTML::begin_colour(OUT, I"800000");
if (bold) WRITE("<b>");
WRITE("%S", Metadata::read_optional_textual(an_pack, I"^name"));
if (bold) WRITE("</b>");
if (oow) HTML::end_colour(OUT);
IndexUtilities::link_package(OUT, an_pack);
IndexUtilities::detail_link(OUT, "A", i, (on_details_page)?FALSE:TRUE);
}
@ Everything else in this section is for the detail pages: there is one such
page for each action.
=
void GroupedElement::detail_pages(localisation_dictionary *LD) {
inter_tree *I = InterpretIndex::get_tree();
tree_inventory *inv = Synoptic::inv(I);
@ -63,37 +62,43 @@ void GroupedElement::detail_pages(localisation_dictionary *LD) {
inter_package *an_pack;
LOOP_OVER_INVENTORY_PACKAGES(an_pack, i, inv->action_nodes) {
text_stream *OUT = InterpretIndex::open_file(NULL, I"A.html", I"<Actions", i, LD);
IndexUtilities::banner_line(OUT, NULL, 1, I"^", I"Details",
I"Index.Pages.ActionDetails.Heading", "../Actions.html", LD);
HTML_TAG("hr");
text_stream *this_area = Metadata::read_optional_textual(an_pack, I"^index_heading");
text_stream *this_subarea = Metadata::read_optional_textual(an_pack, I"^index_subheading");
HTML_OPEN("p");
WRITE("<b>%S - %S</b><br>", this_area, this_subarea);
int c = 0;
inter_package *an2_pack;
LOOP_OVER_INVENTORY_PACKAGES(an2_pack, j, inv->action_nodes) {
text_stream *this_area2 = Metadata::read_optional_textual(an2_pack, I"^index_heading");
text_stream *this_subarea2 = Metadata::read_optional_textual(an2_pack, I"^index_subheading");
if ((Str::eq(this_area, this_area2)) && (Str::eq(this_subarea, this_subarea2))) {
if (c++ > 0) WRITE(", ");
if (j == i) WRITE("<b>");
WRITE("%S", Metadata::read_optional_textual(an2_pack, I"^name"));
if (j == i) WRITE("</b>");
if (j != i) IndexUtilities::detail_link(OUT, "A", j, FALSE);
}
}
HTML_CLOSE("p");
HTML_TAG("hr");
@<Show the heading@>
HTML_TAG("hr");
@<Show the commands@>;
@<Show the action variables@>;
@<Show the rules relevant to this action@>;
@<Write details page for the action@>;
InterpretIndex::close_index_file(OUT);
}
}
@<Write details page for the action@> =
IndexUtilities::banner_line(OUT, NULL, 1, I"^", I"Details",
I"Index.Pages.ActionDetails.Heading", "../Actions.html", LD);
HTML_TAG("hr");
@<Show the fancy navigate-similar-actions menu@>;
HTML_TAG("hr");
@<Show the heading@>
HTML_TAG("hr");
@<Show the commands@>;
@<Show the action variables@>;
@<Show the rules relevant to this action@>;
@<Show the fancy navigate-similar-actions menu@> =
text_stream *this_area = Metadata::read_optional_textual(an_pack, I"^index_heading");
text_stream *this_subarea = Metadata::read_optional_textual(an_pack, I"^index_subheading");
HTML_OPEN("p");
WRITE("<b>%S - %S</b><br>", this_area, this_subarea);
int c = 0;
inter_package *an2_pack;
LOOP_OVER_INVENTORY_PACKAGES(an2_pack, j, inv->action_nodes) {
text_stream *this_area2 = Metadata::read_optional_textual(an2_pack, I"^index_heading");
text_stream *this_subarea2 = Metadata::read_optional_textual(an2_pack, I"^index_subheading");
if ((Str::eq(this_area, this_area2)) && (Str::eq(this_subarea, this_subarea2))) {
if (c++ > 0) WRITE(", ");
if (j == i) WRITE("<b>");
WRITE("%S", Metadata::read_optional_textual(an2_pack, I"^name"));
if (j == i) WRITE("</b>");
if (j != i) IndexUtilities::detail_link(OUT, "A", j, FALSE);
}
}
HTML_CLOSE("p");
@<Show the heading@> =
inter_ti oow = Metadata::read_optional_numeric(an_pack, I"^out_of_world");
inter_ti requires_light = Metadata::read_numeric(an_pack, I"^requires_light");
@ -104,8 +109,14 @@ void GroupedElement::detail_pages(localisation_dictionary *LD) {
if (oow) HTML::end_colour(OUT);
WRITE("</b>");
IndexUtilities::link_package(OUT, an_pack);
if (requires_light) WRITE(" (requires light)");
WRITE(" (<i>past tense</i> %S)", Metadata::read_optional_textual(an_pack, I"^past_name"));
if (requires_light) {
WRITE(" (");
Localisation::write_0(OUT, LD, I"Index.Elements.A1.RequiresLight");
WRITE(")");
}
WRITE(" (");
Localisation::italic_0(OUT, LD, I"Index.Elements.A1.PastTense");
WRITE(" %S)", Metadata::read_optional_textual(an_pack, I"^past_name"));
text_stream *spec = Metadata::read_optional_textual(an_pack, I"^specification");
if (Str::len(spec) > 0) WRITE(": %S", spec);
HTML_CLOSE("p");
@ -113,36 +124,47 @@ void GroupedElement::detail_pages(localisation_dictionary *LD) {
if (Str::len(desc) > 0) { HTML_OPEN("p"); WRITE("%S", desc); HTML_CLOSE("p"); }
@<Show the commands@> =
HTML_OPEN("p"); WRITE("<b>Typed commands leading to this action</b>\n"); HTML_CLOSE("p");
HTML_OPEN("p");
Localisation::bold_0(OUT, LD, I"Index.Elements.A1.CommandsHeading");
HTML_CLOSE("p");
HTML_OPEN("p");
int producers = 0;
inter_package *line_pack;
LOOP_THROUGH_SUBPACKAGES(line_pack, an_pack, I"_cg_line") {
inter_symbol *xref = Metadata::read_symbol(line_pack, I"^line");
CommandsElement::index_grammar_line(OUT, Inter::Packages::container(xref->definition), NULL, LD);
CommandsElement::index_grammar_line(OUT,
Inter::Packages::container(xref->definition), NULL, LD);
producers++;
}
if (producers == 0) WRITE("<i>None</i>");
if (producers == 0) Localisation::bold_0(OUT, LD, I"Index.Elements.A1.NoCommands");
HTML_CLOSE("p");
@<Show the action variables@> =
if (GroupedElement::no_vars(an_pack, I) > 0) {
HTML_OPEN("p"); WRITE("<b>Named values belonging to this action</b>\n"); HTML_CLOSE("p");
HTML_OPEN("p");
Localisation::bold_0(OUT, LD, I"Index.Elements.A1.ValuesHeading");
HTML_CLOSE("p");
GroupedElement::index_shv_set(OUT, I, an_pack);
}
@<Show the rules relevant to this action@> =
HTML_OPEN("p"); WRITE("<b>Rules controlling this action</b>"); HTML_CLOSE("p");
HTML_OPEN("p");
WRITE("\n");
Localisation::bold_0(OUT, LD, I"Index.Elements.A1.RulesHeading");
HTML_CLOSE("p");
HTML_OPEN("p");
int resp_count = 0;
inter_ti oow = Metadata::read_optional_numeric(an_pack, I"^out_of_world");
if (oow == FALSE) {
resp_count += IndexRules::index_action_rules(OUT, inv, an_pack, NULL, I"persuasion", I"persuasion", LD);
resp_count += IndexRules::index_action_rules(OUT, inv, an_pack, NULL, I"unsuccessful_attempt_by", I"unsuccessful attempt", LD);
resp_count += IndexRules::index_action_rules(OUT, inv, an_pack, NULL, I"setting_action_variables", I"set action variables for", LD);
resp_count += IndexRules::index_action_rules(OUT, inv, an_pack, NULL, I"before", I"before", LD);
resp_count += IndexRules::index_action_rules(OUT, inv, an_pack, NULL, I"instead", I"instead of", LD);
resp_count += IndexRules::index_action_rules(OUT, inv, an_pack, NULL,
I"persuasion", I"persuasion", LD);
resp_count += IndexRules::index_action_rules(OUT, inv, an_pack, NULL,
I"unsuccessful_attempt_by", I"unsuccessful attempt", LD);
resp_count += IndexRules::index_action_rules(OUT, inv, an_pack, NULL,
I"setting_action_variables", I"set action variables for", LD);
resp_count += IndexRules::index_action_rules(OUT, inv, an_pack, NULL,
I"before", I"before", LD);
resp_count += IndexRules::index_action_rules(OUT, inv, an_pack, NULL,
I"instead", I"instead of", LD);
}
inter_symbol *check_s = Metadata::read_symbol(an_pack, I"^check_rulebook");
inter_symbol *carry_out_s = Metadata::read_symbol(an_pack, I"^carry_out_rulebook");
@ -151,15 +173,18 @@ void GroupedElement::detail_pages(localisation_dictionary *LD) {
inter_package *carry_out_pack = Inter::Packages::container(carry_out_s->definition);
inter_package *report_pack = Inter::Packages::container(report_s->definition);
resp_count += IndexRules::index_action_rules(OUT, inv, an_pack, check_pack, I"check", I"check", LD);
resp_count += IndexRules::index_action_rules(OUT, inv, an_pack, carry_out_pack, I"carry_out", I"carry out", LD);
resp_count += IndexRules::index_action_rules(OUT, inv, an_pack, check_pack,
I"check", I"check", LD);
resp_count += IndexRules::index_action_rules(OUT, inv, an_pack, carry_out_pack,
I"carry_out", I"carry out", LD);
if (oow == FALSE)
resp_count += IndexRules::index_action_rules(OUT, inv, an_pack, NULL, I"after", I"after", LD);
resp_count += IndexRules::index_action_rules(OUT, inv, an_pack, report_pack, I"report", I"report", LD);
resp_count += IndexRules::index_action_rules(OUT, inv, an_pack, NULL,
I"after", I"after", LD);
resp_count += IndexRules::index_action_rules(OUT, inv, an_pack, report_pack,
I"report", I"report", LD);
if (resp_count > 1) {
WRITE("Click on the speech-bubble icons to see the responses, "
"or here to see all of them:");
WRITE("&nbsp;");
Localisation::write_0(OUT, LD, I"Index.Elements.A1.ResponseIcons");
WRITE(":&nbsp;");
IndexUtilities::extra_all_link_with(OUT, TreeLists::len(inv->rule_nodes), "responses");
WRITE("%d", resp_count);
}

View file

@ -2,7 +2,8 @@
To write the Innards element (In) in the index.
@ Describing the current VM.
@ This element is something of a miscellany, except that it's all about the
technical implementation rather than the content of a work.
=
void InnardsElement::render(OUTPUT_STREAM, localisation_dictionary *LD) {
@ -15,7 +16,7 @@ void InnardsElement::render(OUTPUT_STREAM, localisation_dictionary *LD) {
HTML_OPEN("p");
IndexUtilities::extra_link(OUT, 3);
WRITE("See some technicalities for Inform maintainers only");
Localisation::write_0(OUT, LD, I"Index.Elements.In.Technicalities");
HTML_CLOSE("p");
IndexUtilities::extra_div_open(OUT, 3, 2, "e0e0e0");
HTML_OPEN("p");
@ -27,7 +28,9 @@ void InnardsElement::render(OUTPUT_STREAM, localisation_dictionary *LD) {
@<Show the virtual machine compiled for@> =
IndexUtilities::anchor(OUT, I"STORYFILE");
HTML_OPEN("p"); WRITE("Story file format: ");
HTML_OPEN("p");
Localisation::write_0(OUT, LD, I"Index.Elements.In.Format");
WRITE(": ");
inter_package *pack = Inter::Packages::by_url(I, I"/main/completion/basics");
text_stream *VM = Metadata::read_optional_textual(pack, I"^virtual_machine");
text_stream *VM_icon = Metadata::read_optional_textual(pack, I"^virtual_machine_icon");
@ -39,14 +42,20 @@ void InnardsElement::render(OUTPUT_STREAM, localisation_dictionary *LD) {
HTML_CLOSE("p");
@<Show the use options@> =
HTML_OPEN("p"); WRITE("The following use options are in force:"); HTML_CLOSE("p");
InnardsElement::index_options_in_force_from(OUT, inv, MAIN_TEXT_UO_ORIGIN, NULL);
InnardsElement::index_options_in_force_from(OUT, inv, OPTIONS_FILE_UO_ORIGIN, NULL);
HTML_OPEN("p");
Localisation::write_0(OUT, LD, I"Index.Elements.In.ActiveUseOptions");
WRITE(":");
HTML_CLOSE("p");
InnardsElement::index_options_in_force_from(OUT, inv, MAIN_TEXT_UO_ORIGIN, NULL, LD);
InnardsElement::index_options_in_force_from(OUT, inv, OPTIONS_FILE_UO_ORIGIN, NULL, LD);
inter_package *E;
LOOP_OVER_INVENTORY_PACKAGES(E, i, inv->module_nodes)
InnardsElement::index_options_in_force_from(OUT, inv, EXTENSION_UO_ORIGIN, E);
InnardsElement::index_options_in_force_from(OUT, inv, EXTENSION_UO_ORIGIN, E, LD);
int c = 0;
HTML_OPEN("p"); WRITE("Whereas these are not in force:"); HTML_CLOSE("p");
HTML_OPEN("p");
Localisation::write_0(OUT, LD, I"Index.Elements.In.InactiveUseOptions");
WRITE(":");
HTML_CLOSE("p");
HTML::open_indented_p(OUT, 2, "tight");
inter_package *pack;
LOOP_OVER_INVENTORY_PACKAGES(pack, i, inv->use_option_nodes) {
@ -57,7 +66,7 @@ void InnardsElement::render(OUTPUT_STREAM, localisation_dictionary *LD) {
if (c++ > 0) WRITE(", ");
}
}
if (c == 0) WRITE("None."); /* in practice, this will never happen */
if (c == 0) Localisation::write_0(OUT, LD, I"Index.Elements.In.NoUseOptions");
HTML_CLOSE("p");
@<Write in the index line for a use option not taken@> =
@ -70,17 +79,25 @@ void InnardsElement::render(OUTPUT_STREAM, localisation_dictionary *LD) {
HTML_CLOSE("span");
@<Show the language elements used@> =
WRITE("Inform language definition:\n");
HTML_OPEN("p");
Localisation::write_0(OUT, LD, I"Index.Elements.In.LanguageDefinition");
WRITE(":");
HTML_CLOSE("p");
HTML_OPEN("p");
inter_package *pack = Inter::Packages::by_url(I, I"/main/completion/basics");
text_stream *used = Metadata::read_optional_textual(pack, I"^language_elements_used");
text_stream *not_used = Metadata::read_optional_textual(pack, I"^language_elements_not_used");
if (Str::len(used) > 0) WRITE("Included: %S", used);
if (Str::len(not_used) > 0) WRITE("<br>Excluded: %S", not_used);
if (Str::len(used) > 0)
Localisation::write_1(OUT, LD, I"Index.Elements.In.Included", used);
if ((Str::len(used) > 0) && (Str::len(not_used) > 0)) WRITE("<br>");
if (Str::len(not_used) > 0)
Localisation::write_1(OUT, LD, I"Index.Elements.In.Excluded", not_used);
HTML_CLOSE("p");
@<Add some paste buttons for the debugging log@> =
HTML_OPEN("p");
WRITE("Debugging log:");
Localisation::write_0(OUT, LD, I"Index.Elements.In.Log");
WRITE(":");
HTML_CLOSE("p");
HTML_OPEN("p");
inter_package *pack = Inter::Packages::by_url(I, I"/main/completion/basics");
@ -101,36 +118,23 @@ void InnardsElement::render(OUTPUT_STREAM, localisation_dictionary *LD) {
}
HTML_CLOSE("p");
@ Now for indexing, where there's nothing much to see.
@ Use options can be set in three general ways, and the following function
answers the question "was this option set in this way?". |E| is meaningless
except for |EXTENSION_UO_ORIGIN|, when we are testing whether it was set in |E|.
@d MAIN_TEXT_UO_ORIGIN 1
@d OPTIONS_FILE_UO_ORIGIN 2
@d EXTENSION_UO_ORIGIN 3
=
void InnardsElement::index_options_in_force_from(OUTPUT_STREAM, tree_inventory *inv, int category, inter_package *E) {
int N = 0;
inter_package *pack;
LOOP_OVER_INVENTORY_PACKAGES(pack, i, inv->use_option_nodes) {
inter_ti set = Metadata::read_numeric(pack, I"^active");
inter_ti sfs = Metadata::read_numeric(pack, I"^source_file_scoped");
if ((set) && (sfs == FALSE)) {
if (InnardsElement::uo_set_from(pack, category, E)) {
if (N++ == 0) @<Write in the use option subheading@>;
@<Write in the index line for a use option taken@>;
}
}
}
}
@ And this is what the rest of Inform calls to find out whether a particular
pragma is set:
=
int InnardsElement::uo_set_from(inter_package *pack, int category, inter_package *E) {
switch (category) {
case MAIN_TEXT_UO_ORIGIN: if (Metadata::read_optional_numeric(pack, I"^used_in_source_text")) return TRUE; break;
case OPTIONS_FILE_UO_ORIGIN: if (Metadata::read_optional_numeric(pack, I"^used_in_options")) return TRUE; break;
int InnardsElement::uo_set_from(inter_package *pack, int way, inter_package *E) {
switch (way) {
case MAIN_TEXT_UO_ORIGIN:
if (Metadata::read_optional_numeric(pack, I"^used_in_source_text")) return TRUE;
break;
case OPTIONS_FILE_UO_ORIGIN:
if (Metadata::read_optional_numeric(pack, I"^used_in_options")) return TRUE;
break;
case EXTENSION_UO_ORIGIN: {
inter_symbol *id = Metadata::read_optional_symbol(pack, I"^used_in_extension");
if (id) {
@ -143,18 +147,38 @@ int InnardsElement::uo_set_from(inter_package *pack, int category, inter_package
return FALSE;
}
@ Here we list the UOs set in a particular way, using the same calling conventions.
=
void InnardsElement::index_options_in_force_from(OUTPUT_STREAM, tree_inventory *inv,
int way, inter_package *E, localisation_dictionary *LD) {
int N = 0;
inter_package *pack;
LOOP_OVER_INVENTORY_PACKAGES(pack, i, inv->use_option_nodes) {
inter_ti set = Metadata::read_numeric(pack, I"^active");
inter_ti sfs = Metadata::read_numeric(pack, I"^source_file_scoped");
if ((set) && (sfs == FALSE)) {
if (InnardsElement::uo_set_from(pack, way, 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) {
switch (way) {
case MAIN_TEXT_UO_ORIGIN:
WRITE("the source text"); break;
Localisation::write_0(OUT, LD, I"Index.Elements.In.SetFromSource");
break;
case OPTIONS_FILE_UO_ORIGIN:
WRITE("the Options.txt configuration file, or automatically");
Localisation::write_0(OUT, LD, I"Index.Elements.In.SetAutomatically");
IndexUtilities::DocReferences::link(OUT, I"OPTIONSFILE"); break;
case EXTENSION_UO_ORIGIN:
WRITE("%S", Metadata::read_optional_textual(E, I"^credit"));
Localisation::write_1(OUT, LD, I"Index.Elements.In.SetFrom",
Metadata::read_optional_textual(E, I"^credit"));
break;
}
WRITE(":");
@ -175,6 +199,7 @@ int InnardsElement::uo_set_from(inter_package *pack, int category, inter_package
Metadata::read_optional_textual(pack, I"^name"), 2*msv);
PasteButtons::paste_text(OUT, TEMP);
DISCARD_TEXT(TEMP)
WRITE("&nbsp;<i>Double this</i>");
WRITE("&nbsp;");
Localisation::italic_0(OUT, LD, I"Index.Elements.In.Double");
}
HTML_CLOSE("p");

View file

@ -7,13 +7,7 @@ void LexiconElement::render(OUTPUT_STREAM, localisation_dictionary *LD) {
IndexUtilities::anchor(OUT, I"LEXICON");
HTML_OPEN("p");
HTML_OPEN_WITH("span", "class=\"smaller\"");
WRITE("For instance, the description 'an unlocked door' is made "
"up from the adjective 'unlocked' and the noun 'door', both of which "
"can be found below. Property adjectives, like 'open', can be used "
"when creating things - 'In the Ballroom is an open container' is "
"allowed because 'open' is a property - but those with complicated "
"definitions, like 'empty', can only be tested during play, e.g. "
"with rules like 'Instead of taking an empty container, ...'.");
Localisation::write_0(OUT, LD, I"Index.Elements.Lx.Explanation");
HTML_CLOSE("span");
HTML_CLOSE("p");
IndexLexicon::listing(OUT, InterpretIndex::get_lexicon(), FALSE, LD);

View file

@ -29,8 +29,7 @@ void MapElement::render(OUTPUT_STREAM, localisation_dictionary *D, int test_only
@<Mark parts, directions and kinds as ineligible for listing in the World index@> =
faux_instance *I;
LOOP_OVER_FAUX_INSTANCES(faux_set, I)
if ((MapElement::no_detail_index(I))
|| (FauxInstances::is_a_direction(I)))
if ((MapElement::no_detail_index(I)) || (FauxInstances::is_a_direction(I)))
FauxInstances::increment_indexing_count(I);
@<Give room details within each region in turn in the World index@> =