mirror of
https://github.com/ganelson/inform.git
synced 2024-06-26 04:00:43 +03:00
Completed census revision
This commit is contained in:
parent
d257032046
commit
00147622fe
|
@ -1,6 +1,6 @@
|
|||
# Inform 7
|
||||
|
||||
v10.1.0-alpha.1+6Q42 'Krypton' (8 May 2020)
|
||||
v10.1.0-alpha.1+6Q43 'Krypton' (9 May 2020)
|
||||
|
||||
## About Inform 7
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: alpha.1
|
||||
Build Date: 8 May 2020
|
||||
Build Number: 6Q42
|
||||
Build Date: 9 May 2020
|
||||
Build Number: 6Q43
|
||||
|
|
|
@ -419,7 +419,7 @@ with the following.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VM</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">"target VM not set yet"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::anchor</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">"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">ExtensionCensus::plot_icon</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ExtensionIndex::plot_icon</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TargetVMs::write</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><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>
|
||||
|
|
|
@ -732,7 +732,7 @@ to show, hide and colour things:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">elt</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"C"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Sentences::Headings::index</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">Extensions::Files::index</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">ExtensionCensus::update_census</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::project</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ExtensionWebsite::index_after_compilation</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::project</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">elt</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"Vl"</span><span class="plain-syntax">)) {</span>
|
||||
|
|
|
@ -448,7 +448,7 @@ We do that copy by copy.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax">) </span><a href="2-cps.html#SP8" class="function-link"><span class="function-syntax">Copies::construct_graph</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inbuild_phase</span><span class="plain-syntax"> = </span><span class="constant-syntax">OPERATIONAL_INBUILD_PHASE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">census_mode</span><span class="plain-syntax">) </span><a href="7-cns.html#SP11" class="function-link"><span class="function-syntax">ExtensionCensus::handle_census_mode</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">census_mode</span><span class="plain-syntax">) </span><a href="7-tm.html#SP2" class="function-link"><span class="function-syntax">ExtensionWebsite::handle_census_mode</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP11"></a><b>§11. The nest list. </b>Nests are directories which hold resources to be used by the Intools, and
|
||||
|
@ -570,7 +570,7 @@ the external nest is used.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::transient</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Supervisor::transient</span></span>:<br/>Project Services - <a href="5-ps2.html#SP4">§4</a><br/>Dictionary - <a href="7-dct.html#SP1">§1</a><br/>Census - <a href="7-cns.html#SP15">§15</a><br/>Documentation - <a href="7-dcm.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::transient</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Supervisor::transient</span></span>:<br/>Project Services - <a href="5-ps2.html#SP4">§4</a><br/>The Mini-Website - <a href="7-tm.html#SP3">§3</a><br/>Dictionary - <a href="7-dct.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RUN_ONLY_FROM_PHASE</span><span class="plain-syntax">(</span><span class="constant-syntax">TINKERING_INBUILD_PHASE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">shared_transient_resources</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">shared_external_nest</span><span class="plain-syntax">)</span>
|
||||
|
@ -709,7 +709,7 @@ but they're just plain old files, and are not managed by Inbuild as "copies".
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">EXTENSION_DOCUMENTATION_MODEL_IRES</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::file_from_installation</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Supervisor::file_from_installation</span></span>:<br/>Census - <a href="7-cns.html#SP15">§15</a><br/>Documentation - <a href="7-dcm.html#SP4_2">§4.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ires</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::file_from_installation</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Supervisor::file_from_installation</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_1">§1.1</a><br/>Individual Pages - <a href="7-ip2.html#SP2_2">§2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ires</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><a href="1-ic.html#SP14" class="function-link"><span class="function-syntax">Supervisor::internal</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">Errors::fatal</span><span class="plain-syntax">(</span><span class="string-syntax">"Did not set -internal when calling"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">misc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="element-syntax">location</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Miscellany"</span><span class="plain-syntax">);</span>
|
||||
|
@ -746,7 +746,7 @@ but they're just plain old files, and are not managed by Inbuild as "copies".
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-sm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-sm.html">sm</a></li><li class="progresscurrent">ic</li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="2-gnr.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-sm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-sm.html">sm</a></li><li class="progresscurrent">ic</li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-gnr.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -199,7 +199,7 @@ syntax tree.
|
|||
<span class="identifier-syntax">MAKE_ANNOTATION_FUNCTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">inclusion_of_extension</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="P-wtmd.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresscurrent">sm</li><li class="progresssection"><a href="1-ic.html">ic</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="1-ic.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="P-wtmd.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresscurrent">sm</li><li class="progresssection"><a href="1-ic.html">ic</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="1-ic.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -106,7 +106,7 @@ fields are blank.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">copy_error</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure copy_error is accessed in 2/nst, 3/is, 5/ks, 5/ls, 6/inc, 7/cns, 7/dcm and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure copy_error is accessed in 2/nst, 3/is, 5/ks, 5/ls, 6/inc, 7/cns, 7/ip, 7/ip2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>And now some creators.
|
||||
</p>
|
||||
|
||||
|
@ -194,7 +194,7 @@ output.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CopyErrors::write</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">CopyErrors::write</span></span>:<br/>Copies - <a href="2-cps.html#SP5">§5</a><br/>Census - <a href="7-cns.html#SP5">§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">copy_error</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CE</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CopyErrors::write</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">CopyErrors::write</span></span>:<br/>Copies - <a href="2-cps.html#SP5">§5</a><br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_4">§1.2.2.1.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">copy_error</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="element-syntax">error_category</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">OPEN_FAILED_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"unable to open file %f"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="element-syntax">details_file</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">EXT_MISWORDED_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"extension misworded: %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="element-syntax">details</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
@ -300,7 +300,7 @@ output.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-ce.html#SP5">§5</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-cps.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresscurrent">ce</li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="2-rqr.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-cps.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresscurrent">ce</li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-rqr.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -94,7 +94,7 @@ stored here.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inbuild_copy is accessed in 1/ic, 2/nst, 3/bg, 3/ib, 3/bs2, 3/is, 3/is2, 3/is3, 3/is4, 4/em, 4/km, 4/lm, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ls, 5/ps2, 6/hdn, 6/tbs, 6/inc, 7/dct, 7/cns, 7/dcm and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure inbuild_copy is accessed in 1/ic, 2/nst, 3/bg, 3/ib, 3/bs2, 3/is, 3/is2, 3/is3, 3/is4, 4/em, 4/km, 4/lm, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ls, 5/ps2, 6/hdn, 6/tbs, 6/inc, 7/dct, 7/cns, 7/ip, 7/ip2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>Copies are created by the managers for the respective genres, usually when
|
||||
claiming. If you are a manager, do not call this...
|
||||
</p>
|
||||
|
@ -174,7 +174,7 @@ for later reporting. These are stored in a list.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">source_text_read</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">Copies::get_source_text</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">Copies::get_source_text</span></span>:<br/>Extension Services - <a href="5-es.html#SP5">§5</a><br/>Project Services - <a href="5-ps2.html#SP24">§24</a><br/>Inclusions - <a href="6-inc.html#SP5_1">§5.1</a><br/>Documentation - <a href="7-dcm.html#SP4_1">§4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">Copies::get_source_text</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">Copies::get_source_text</span></span>:<br/>Extension Services - <a href="5-es.html#SP5">§5</a><br/>Project Services - <a href="5-ps2.html#SP24">§24</a><br/>Inclusions - <a href="6-inc.html#SP5_1">§5.1</a><br/>Individual Pages - <a href="7-ip2.html#SP2_1">§2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="identifier-syntax">source_text_read</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">C</span><span class="plain-syntax">-></span><span class="identifier-syntax">source_text_read</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">feed_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::begin</span><span class="plain-syntax">();</span>
|
||||
|
@ -286,7 +286,7 @@ its main task: building an Inform project.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-edt.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresscurrent">cps</li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="2-ce.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-edt.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresscurrent">cps</li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-ce.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -102,7 +102,7 @@ might work with all VMs, while version 8 required a 32-bit architecture.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inbuild_edition is accessed in 1/ic, 2/wrk, 2/cps, 2/rqr, 2/nst, 3/bg, 3/ib, 3/is2, 4/em, 4/km, 4/lm, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ls, 5/ps, 5/ps2, 5/ts, 6/hdn, 6/tbs, 6/inc, 6/vmg, 7/dct, 7/cns, 7/dcm and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure inbuild_edition is accessed in 1/ic, 2/wrk, 2/cps, 2/rqr, 2/nst, 3/bg, 3/ib, 3/is2, 4/em, 4/km, 4/lm, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ls, 5/ps, 5/ps2, 5/ts, 6/hdn, 6/tbs, 6/inc, 6/vmg, 7/dct, 7/cns, 7/ip, 7/ip2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>When a copy is to be duplicated into a nest <span class="extract"><span class="extract-syntax">N</span></span>, we need to work out where
|
||||
to put it. For example, version 2.1 of the extension Marbles by Steve Hogarth
|
||||
would go into <span class="extract"><span class="extract-syntax">N/Extensions/Steve Hogarth/Marbles-v2_1.i7x</span></span>. The following
|
||||
|
@ -138,7 +138,7 @@ contributes only the un-filename-extended leafname <span class="extract"><span c
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-wrk.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresscurrent">edt</li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="2-cps.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-wrk.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresscurrent">edt</li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-cps.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -238,7 +238,7 @@ the Inbuild command-line options <span class="extract"><span class="extract-synt
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">build_methodology</span><span class="plain-syntax"> *</span><span class="identifier-syntax">meth</span><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-ic.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">gnr</li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="2-wrk.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-ic.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">gnr</li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-wrk.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -104,7 +104,7 @@ see below for why. Lower-tag-numbered origins are better than later ones.
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">INTERNAL_NEST_TAG</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Nests::get_tag</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Nests::get_tag</span></span>:<br/><a href="2-nst.html#SP9">§9</a><br/>Inbuild Control - <a href="1-ic.html#SP13">§13</a><br/>Inform7 Skill - <a href="3-is2.html#SP1">§1</a><br/>Inclusions - <a href="6-inc.html#SP5_1">§5.1</a><br/>Census - <a href="7-cns.html#SP1">§1</a>, <a href="7-cns.html#SP3_1">§3.1</a>, <a href="7-cns.html#SP3_2">§3.2</a><br/>Documentation - <a href="7-dcm.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Nests::get_tag</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Nests::get_tag</span></span>:<br/><a href="2-nst.html#SP9">§9</a><br/>Inbuild Control - <a href="1-ic.html#SP13">§13</a><br/>Inform7 Skill - <a href="3-is2.html#SP1">§1</a><br/>Inclusions - <a href="6-inc.html#SP5_1">§5.1</a><br/>Census - <a href="7-cns.html#SP3">§3</a>, <a href="7-cns.html#SP5">§5</a>, <a href="7-cns.html#SP7_1">§7.1</a><br/>Index Pages - <a href="7-ip.html#SP1_2_1_1">§1.2.1.1</a>, <a href="7-ip.html#SP1_2_2_1_6_4_3">§1.2.2.1.6.4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">tag_value</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -158,7 +158,7 @@ we create one of these for each hit:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inbuild_search_result is accessed in 2/ce, 3/is, 5/ks, 5/ls, 6/inc, 7/cns, 7/dcm and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure inbuild_search_result is accessed in 2/ce, 3/is, 5/ks, 5/ls, 6/inc, 7/cns, 7/ip, 7/ip2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6"></a><b>§6. </b>These can be created only as entries in a list:
|
||||
</p>
|
||||
|
||||
|
@ -178,7 +178,7 @@ genre's manager to look for copies of that genre:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Nests::search_for</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Nests::search_for</span></span>:<br/><a href="2-nst.html#SP8">§8</a><br/>Inclusions - <a href="6-inc.html#SP5_1_2">§5.1.2</a><br/>Census - <a href="7-cns.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Nests::search_for</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Nests::search_for</span></span>:<br/><a href="2-nst.html#SP8">§8</a><br/>Inclusions - <a href="6-inc.html#SP5_1_2">§5.1.2</a><br/>Census - <a href="7-cns.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">search_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">results</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_list</span><span class="plain-syntax">) {</span>
|
||||
|
@ -193,7 +193,7 @@ others:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax"> *</span><span class="function-syntax">Nests::search_for_best</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">Nests::search_for_best</span></span>:<br/>Inter Skill - <a href="3-is.html#SP3">§3</a>, <a href="3-is.html#SP4">§4</a><br/>Kit Services - <a href="5-ks.html#SP8">§8</a><br/>Language Services - <a href="5-ls.html#SP10">§10</a><br/>Inclusions - <a href="6-inc.html#SP5_1">§5.1</a><br/>Documentation - <a href="7-dcm.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax"> *</span><span class="function-syntax">Nests::search_for_best</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">Nests::search_for_best</span></span>:<br/>Inter Skill - <a href="3-is.html#SP3">§3</a>, <a href="3-is.html#SP4">§4</a><br/>Kit Services - <a href="5-ks.html#SP8">§8</a><br/>Language Services - <a href="5-ls.html#SP10">§10</a><br/>Inclusions - <a href="6-inc.html#SP5_1">§5.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">search_list</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP7" class="function-link"><span class="function-syntax">Nests::search_for</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">req</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">);</span>
|
||||
|
@ -233,7 +233,7 @@ semantic version numbers.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-rqr.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresscurrent">nst</li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="3-bg.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-rqr.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresscurrent">nst</li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="3-bg.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -81,7 +81,7 @@ we can give a semantic version number range:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inbuild_requirement is accessed in 1/ic, 2/wrk, 2/edt, 2/cps, 3/bg, 3/ib, 3/is2, 4/em, 4/km, 4/lm, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ls, 5/ps2, 6/hdn, 6/tbs, 6/inc, 7/dct, 7/cns, 7/dcm and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure inbuild_requirement is accessed in 1/ic, 2/wrk, 2/edt, 2/cps, 3/bg, 3/ib, 3/is2, 4/em, 4/km, 4/lm, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ls, 5/ps2, 6/hdn, 6/tbs, 6/inc, 7/dct, 7/cns, 7/ip, 7/ip2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>Here are some creators:
|
||||
</p>
|
||||
|
||||
|
@ -93,11 +93,11 @@ we can give a semantic version number range:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">req</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="function-syntax">Requirements::any_version_of</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">Requirements::any_version_of</span></span>:<br/>Inter Skill - <a href="3-is.html#SP3">§3</a>, <a href="3-is.html#SP4">§4</a><br/>Kit Services - <a href="5-ks.html#SP5_4">§5.4</a>, <a href="5-ks.html#SP8">§8</a><br/>Language Services - <a href="5-ls.html#SP10">§10</a><br/>Inclusions - <a href="6-inc.html#SP5_1_2">§5.1.2</a><br/>Documentation - <a href="7-dcm.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="function-syntax">Requirements::any_version_of</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">Requirements::any_version_of</span></span>:<br/>Inter Skill - <a href="3-is.html#SP3">§3</a>, <a href="3-is.html#SP4">§4</a><br/>Kit Services - <a href="5-ks.html#SP5_4">§5.4</a>, <a href="5-ks.html#SP8">§8</a><br/>Language Services - <a href="5-ls.html#SP10">§10</a><br/>Inclusions - <a href="6-inc.html#SP5_1_2">§5.1.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-rqr.html#SP2" class="function-link"><span class="function-syntax">Requirements::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="identifier-syntax">VersionNumberRanges::any_range</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="function-syntax">Requirements::anything_of_genre</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Requirements::anything_of_genre</span></span>:<br/>Census - <a href="7-cns.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_genre</span><span class="plain-syntax"> *</span><span class="identifier-syntax">G</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="function-syntax">Requirements::anything_of_genre</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Requirements::anything_of_genre</span></span>:<br/>Census - <a href="7-cns.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_genre</span><span class="plain-syntax"> *</span><span class="identifier-syntax">G</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-rqr.html#SP2" class="function-link"><span class="function-syntax">Requirements::any_version_of</span></a><span class="plain-syntax">(</span><a href="2-wrk.html#SP2" class="function-link"><span class="function-syntax">Works::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">G</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">""</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">""</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -250,7 +250,7 @@ a requirement, then so will all other copies of it.
|
|||
</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">Requirements::meets</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">Requirements::meets</span></span>:<br/>Extension Manager - <a href="4-em.html#SP6">§6</a><br/>Kit Manager - <a href="4-km.html#SP5">§5</a><br/>Language Manager - <a href="4-lm.html#SP5">§5</a><br/>Pipeline Manager - <a href="4-pm.html#SP5">§5</a><br/>Template Manager - <a href="4-tm.html#SP5">§5</a><br/>Extension Services - <a href="5-es.html#SP15">§15</a><br/>Kit Services - <a href="5-ks.html#SP13_4">§13.4</a><br/>Inclusions - <a href="6-inc.html#SP5">§5</a><br/>Documentation - <a href="7-dcm.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_edition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">edition</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Requirements::meets</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">Requirements::meets</span></span>:<br/>Extension Manager - <a href="4-em.html#SP6">§6</a><br/>Kit Manager - <a href="4-km.html#SP5">§5</a><br/>Language Manager - <a href="4-lm.html#SP5">§5</a><br/>Pipeline Manager - <a href="4-pm.html#SP5">§5</a><br/>Template Manager - <a href="4-tm.html#SP5">§5</a><br/>Extension Services - <a href="5-es.html#SP15">§15</a><br/>Kit Services - <a href="5-ks.html#SP13_4">§13.4</a><br/>Inclusions - <a href="6-inc.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_edition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">edition</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">req</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">req</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">req</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">genre</span><span class="plain-syntax">)</span>
|
||||
|
@ -267,7 +267,7 @@ a requirement, then so will all other copies of it.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ce.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresscurrent">rqr</li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="2-nst.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ce.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresscurrent">rqr</li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-nst.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -93,7 +93,7 @@ combination of the textual names and the hash code:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inbuild_work is accessed in 1/ic, 2/edt, 2/cps, 2/rqr, 3/bg, 3/ib, 3/is2, 4/em, 4/km, 4/lm, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ls, 5/ps2, 6/tbs, 6/inc, 7/dct, 7/cns, 7/dcm and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure inbuild_work is accessed in 1/ic, 2/edt, 2/cps, 2/rqr, 3/bg, 3/ib, 3/is2, 4/em, 4/km, 4/lm, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ls, 5/ps2, 6/tbs, 6/inc, 7/tm, 7/dct, 7/ip and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>Each work structure is written only once, and its title and author name are
|
||||
not subsequently altered.
|
||||
</p>
|
||||
|
@ -186,7 +186,7 @@ begins at the start of the text, after a hyphen, or after a bracket. Thus
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">VMETHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">genre</span><span class="plain-syntax">, </span><span class="constant-syntax">GENRE_WRITE_WORK_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">work</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">Works::write_to_HTML_file</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">Works::write_to_HTML_file</span></span>:<br/><a href="2-wrk.html#SP6">§6</a><br/>Dictionary - <a href="7-dct.html#SP19_2">§19.2</a><br/>Documentation - <a href="7-dcm.html#SP4_2_1">§4.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">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">fancy</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Works::write_to_HTML_file</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">Works::write_to_HTML_file</span></span>:<br/><a href="2-wrk.html#SP6">§6</a><br/>Dictionary - <a href="7-dct.html#SP19_2">§19.2</a><br/>Individual Pages - <a href="7-ip2.html#SP2_2_1">§2.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">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">fancy</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">work</span><span class="plain-syntax">-></span><span class="element-syntax">raw_title</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">fancy</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">"404040"</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">" by "</span><span class="plain-syntax">);</span>
|
||||
|
@ -248,7 +248,7 @@ order-preserving. To emphasise this we return true or false rather than a
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::match</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Works::match</span></span>:<br/><a href="2-wrk.html#SP10">§10</a>, <a href="2-wrk.html#SP11">§11</a>, <a href="2-wrk.html#SP12">§12</a>, <a href="2-wrk.html#SP13">§13</a><br/>Headings - <a href="6-hdn.html#SP21">§21</a>, <a href="6-hdn.html#SP21_2">§21.2</a><br/>Dictionary - <a href="7-dct.html#SP12">§12</a>, <a href="7-dct.html#SP18">§18</a>, <a href="7-dct.html#SP18_2">§18.2</a><br/>Census - <a href="7-cns.html#SP3_1">§3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eid1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eid2</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::match</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Works::match</span></span>:<br/><a href="2-wrk.html#SP10">§10</a>, <a href="2-wrk.html#SP11">§11</a>, <a href="2-wrk.html#SP12">§12</a>, <a href="2-wrk.html#SP13">§13</a><br/>Headings - <a href="6-hdn.html#SP21">§21</a>, <a href="6-hdn.html#SP21_2">§21.2</a><br/>Dictionary - <a href="7-dct.html#SP12">§12</a>, <a href="7-dct.html#SP18">§18</a>, <a href="7-dct.html#SP18_2">§18.2</a><br/>Census - <a href="7-cns.html#SP7_1">§7.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eid1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eid2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">eid1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">eid2</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"bad work match"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">eid1</span><span class="plain-syntax">-></span><span class="element-syntax">inbuild_work_hash_code</span><span class="plain-syntax"> != </span><span class="identifier-syntax">eid2</span><span class="plain-syntax">-></span><span class="element-syntax">inbuild_work_hash_code</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">eid1</span><span class="plain-syntax">-></span><span class="element-syntax">author_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">eid2</span><span class="plain-syntax">-></span><span class="element-syntax">author_name</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
@ -261,21 +261,21 @@ sorting.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::compare</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Works::compare</span></span>:<br/>Dictionary - <a href="7-dct.html#SP18">§18</a><br/>Census - <a href="7-cns.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eid1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eid2</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::compare</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Works::compare</span></span>:<br/>Dictionary - <a href="7-dct.html#SP18">§18</a><br/>Census - <a href="7-cns.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eid1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eid2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">eid1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">eid2</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"bad work match"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::cmp</span><span class="plain-syntax">(</span><span class="identifier-syntax">eid1</span><span class="plain-syntax">-></span><span class="element-syntax">author_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">eid2</span><span class="plain-syntax">-></span><span class="element-syntax">author_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">d</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Str::cmp</span><span class="plain-syntax">(</span><span class="identifier-syntax">eid1</span><span class="plain-syntax">-></span><span class="element-syntax">title</span><span class="plain-syntax">, </span><span class="identifier-syntax">eid2</span><span class="plain-syntax">-></span><span class="element-syntax">title</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::compare_by_title</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">Works::compare_by_title</span></span>:<br/>Census - <a href="7-cns.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eid1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eid2</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::compare_by_title</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">Works::compare_by_title</span></span>:<br/>Census - <a href="7-cns.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eid1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eid2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">eid1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">eid2</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"bad work match"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::cmp</span><span class="plain-syntax">(</span><span class="identifier-syntax">eid1</span><span class="plain-syntax">-></span><span class="element-syntax">title</span><span class="plain-syntax">, </span><span class="identifier-syntax">eid2</span><span class="plain-syntax">-></span><span class="element-syntax">title</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">d</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Str::cmp</span><span class="plain-syntax">(</span><span class="identifier-syntax">eid1</span><span class="plain-syntax">-></span><span class="element-syntax">author_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">eid2</span><span class="plain-syntax">-></span><span class="element-syntax">author_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::compare_by_date</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">Works::compare_by_date</span></span>:<br/>Census - <a href="7-cns.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eid1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eid2</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::compare_by_date</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">Works::compare_by_date</span></span>:<br/>Census - <a href="7-cns.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eid1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eid2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">eid1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">eid2</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"bad work match"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::cmp</span><span class="plain-syntax">(</span><a href="2-wrk.html#SP12" class="function-link"><span class="function-syntax">Works::get_sort_date</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">eid2</span><span class="plain-syntax">), </span><a href="2-wrk.html#SP12" class="function-link"><span class="function-syntax">Works::get_sort_date</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">eid1</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">d</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax">;</span>
|
||||
|
@ -284,7 +284,7 @@ sorting.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Str::cmp</span><span class="plain-syntax">(</span><span class="identifier-syntax">eid1</span><span class="plain-syntax">-></span><span class="element-syntax">author_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">eid2</span><span class="plain-syntax">-></span><span class="element-syntax">author_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::compare_by_length</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Works::compare_by_length</span></span>:<br/>Census - <a href="7-cns.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eid1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eid2</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::compare_by_length</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Works::compare_by_length</span></span>:<br/>Census - <a href="7-cns.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eid1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eid2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">eid1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">eid2</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"bad work match"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::cmp</span><span class="plain-syntax">(</span><a href="2-wrk.html#SP12" class="function-link"><span class="function-syntax">Works::get_sort_word_count</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">eid2</span><span class="plain-syntax">), </span><a href="2-wrk.html#SP12" class="function-link"><span class="function-syntax">Works::get_sort_word_count</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">eid1</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">d</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax">;</span>
|
||||
|
@ -300,7 +300,7 @@ single function testing if a work refers to them.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">a_work_for_standard_rules</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::is_standard_rules</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Works::is_standard_rules</span></span>:<br/><a href="2-wrk.html#SP6">§6</a>, <a href="2-wrk.html#SP7">§7</a><br/>Extension Services - <a href="5-es.html#SP2_1">§2.1</a><br/>Documentation - <a href="7-dcm.html#SP4_2_1">§4.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::is_standard_rules</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Works::is_standard_rules</span></span>:<br/><a href="2-wrk.html#SP6">§6</a>, <a href="2-wrk.html#SP7">§7</a><br/>Extension Services - <a href="5-es.html#SP2_1">§2.1</a><br/>Individual Pages - <a href="7-ip2.html#SP2_2_1">§2.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">a_work_for_standard_rules</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">a_work_for_standard_rules</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="2-wrk.html#SP2" class="function-link"><span class="function-syntax">Works::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">extension_genre</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Standard Rules"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Graham Nelson"</span><span class="plain-syntax">);</span>
|
||||
|
@ -361,7 +361,7 @@ indeed, the typical number will be 0 or 1.
|
|||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">work_database_created</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">inbuild_work_database_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">hash_of_works</span><span class="plain-syntax">[</span><span class="constant-syntax">WORK_HASH_CODING_BASE</span><span class="plain-syntax">];</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Works::add_to_database</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">Works::add_to_database</span></span>:<br/><a href="2-wrk.html#SP10">§10</a><br/>Extension Manager - <a href="4-em.html#SP5">§5</a><br/>Kit Manager - <a href="4-km.html#SP4">§4</a><br/>Language Manager - <a href="4-lm.html#SP4">§4</a><br/>Pipeline Manager - <a href="4-pm.html#SP4">§4</a><br/>Project Bundle Manager - <a href="4-pbm.html#SP3">§3</a><br/>Project File Manager - <a href="4-pfm.html#SP3">§3</a><br/>Template Manager - <a href="4-tm.html#SP4">§4</a><br/>Extension Services - <a href="5-es.html#SP2">§2</a><br/>Headings - <a href="6-hdn.html#SP12_3">§12.3</a><br/>Inclusions - <a href="6-inc.html#SP4_1">§4.1</a><br/>Dictionary - <a href="7-dct.html#SP4">§4</a><br/>Census - <a href="7-cns.html#SP3_2">§3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">context</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Works::add_to_database</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">Works::add_to_database</span></span>:<br/><a href="2-wrk.html#SP10">§10</a><br/>Extension Manager - <a href="4-em.html#SP5">§5</a><br/>Kit Manager - <a href="4-km.html#SP4">§4</a><br/>Language Manager - <a href="4-lm.html#SP4">§4</a><br/>Pipeline Manager - <a href="4-pm.html#SP4">§4</a><br/>Project Bundle Manager - <a href="4-pbm.html#SP3">§3</a><br/>Project File Manager - <a href="4-pfm.html#SP3">§3</a><br/>Template Manager - <a href="4-tm.html#SP4">§4</a><br/>Extension Services - <a href="5-es.html#SP2">§2</a><br/>Headings - <a href="6-hdn.html#SP12_3">§12.3</a><br/>Inclusions - <a href="6-inc.html#SP4_1">§4.1</a><br/>Dictionary - <a href="7-dct.html#SP4">§4</a><br/>Census - <a href="7-cns.html#SP7_2">§7.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">context</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">work_database_created</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">work_database_created</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">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"><</span><span class="constant-syntax">WORK_HASH_CODING_BASE</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">hash_of_works</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>
|
||||
|
@ -385,7 +385,7 @@ indeed, the typical number will be 0 or 1.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">iwde</span><span class="plain-syntax">-></span><span class="identifier-syntax">word_count_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inbuild_work_database_entry is accessed in 1/ic, 2/edt, 2/cps, 2/rqr, 3/bg, 3/ib, 3/is2, 4/em, 4/km, 4/lm, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ls, 5/ps2, 6/hdn, 6/tbs, 6/inc, 7/dct, 7/cns, 7/dcm and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure inbuild_work_database_entry is accessed in 1/ic, 2/edt, 2/cps, 2/rqr, 3/bg, 3/ib, 3/is2, 4/em, 4/km, 4/lm, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ls, 5/ps2, 6/hdn, 6/tbs, 6/inc, 7/dct, 7/cns, 7/ip, 7/ip2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12"></a><b>§12. </b>This gives us reasonably rapid access to a shared date:
|
||||
</p>
|
||||
|
||||
|
@ -410,7 +410,7 @@ indeed, the typical number will be 0 or 1.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Works::get_usage_date</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">Works::get_usage_date</span></span>:<br/>Census - <a href="7-cns.html#SP6_7_4_4">§6.7.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Works::get_usage_date</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">Works::get_usage_date</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_6_4_4">§1.2.2.1.6.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_work_database_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iwde</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">hc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">inbuild_work_hash_code</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">iwde</span><span class="plain-syntax"> = </span><span class="identifier-syntax">hash_of_works</span><span class="plain-syntax">[</span><span class="identifier-syntax">hc</span><span class="plain-syntax">]; </span><span class="identifier-syntax">iwde</span><span class="plain-syntax">; </span><span class="identifier-syntax">iwde</span><span class="plain-syntax"> = </span><span class="identifier-syntax">iwde</span><span class="plain-syntax">-></span><span class="element-syntax">hash_next</span><span class="plain-syntax">)</span>
|
||||
|
@ -463,7 +463,7 @@ indeed, the typical number will be 0 or 1.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"---"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::forgot</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">Works::forgot</span></span>:<br/>Census - <a href="7-cns.html#SP6_7_4_4">§6.7.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::forgot</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">Works::forgot</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_6_4_4">§1.2.2.1.6.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_work_database_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iwde</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">hc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">inbuild_work_hash_code</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">iwde</span><span class="plain-syntax"> = </span><span class="identifier-syntax">hash_of_works</span><span class="plain-syntax">[</span><span class="identifier-syntax">hc</span><span class="plain-syntax">]; </span><span class="identifier-syntax">iwde</span><span class="plain-syntax">; </span><span class="identifier-syntax">iwde</span><span class="plain-syntax"> = </span><span class="identifier-syntax">iwde</span><span class="plain-syntax">-></span><span class="element-syntax">hash_next</span><span class="plain-syntax">)</span>
|
||||
|
@ -477,7 +477,7 @@ indeed, the typical number will be 0 or 1.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::never</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">Works::never</span></span>:<br/>Census - <a href="7-cns.html#SP6_7_4_4">§6.7.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::never</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">Works::never</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_6_4_4">§1.2.2.1.6.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_work_database_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iwde</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">hc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">inbuild_work_hash_code</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">iwde</span><span class="plain-syntax"> = </span><span class="identifier-syntax">hash_of_works</span><span class="plain-syntax">[</span><span class="identifier-syntax">hc</span><span class="plain-syntax">]; </span><span class="identifier-syntax">iwde</span><span class="plain-syntax">; </span><span class="identifier-syntax">iwde</span><span class="plain-syntax"> = </span><span class="identifier-syntax">iwde</span><span class="plain-syntax">-></span><span class="element-syntax">hash_next</span><span class="plain-syntax">)</span>
|
||||
|
@ -491,7 +491,7 @@ indeed, the typical number will be 0 or 1.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::get_word_count</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">Works::get_word_count</span></span>:<br/>Census - <a href="7-cns.html#SP6_7_4_4">§6.7.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::get_word_count</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">Works::get_word_count</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_6_4_4">§1.2.2.1.6.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_work_database_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iwde</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">hc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">inbuild_work_hash_code</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">iwde</span><span class="plain-syntax"> = </span><span class="identifier-syntax">hash_of_works</span><span class="plain-syntax">[</span><span class="identifier-syntax">hc</span><span class="plain-syntax">]; </span><span class="identifier-syntax">iwde</span><span class="plain-syntax">; </span><span class="identifier-syntax">iwde</span><span class="plain-syntax"> = </span><span class="identifier-syntax">iwde</span><span class="plain-syntax">-></span><span class="element-syntax">hash_next</span><span class="plain-syntax">)</span>
|
||||
|
@ -505,7 +505,7 @@ for one of the following usage counts:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::no_times_used_in_context</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">Works::no_times_used_in_context</span></span>:<br/>Dictionary - <a href="7-dct.html#SP11">§11</a><br/>Census - <a href="7-cns.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">context</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Works::no_times_used_in_context</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">Works::no_times_used_in_context</span></span>:<br/>Dictionary - <a href="7-dct.html#SP11">§11</a><br/>Census - <a href="7-cns.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">context</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_work_database_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iwde</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">iwde</span><span class="plain-syntax"> = </span><span class="identifier-syntax">hash_of_works</span><span class="plain-syntax">[</span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">inbuild_work_hash_code</span><span class="plain-syntax">]; </span><span class="identifier-syntax">iwde</span><span class="plain-syntax">; </span><span class="identifier-syntax">iwde</span><span class="plain-syntax"> = </span><span class="identifier-syntax">iwde</span><span class="plain-syntax">-></span><span class="element-syntax">hash_next</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-wrk.html#SP8" class="function-link"><span class="function-syntax">Works::match</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="identifier-syntax">iwde</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">iwde</span><span class="plain-syntax">-></span><span class="element-syntax">incidence_count</span><span class="plain-syntax">[</span><span class="identifier-syntax">context</span><span class="plain-syntax">];</span>
|
||||
|
@ -516,7 +516,7 @@ for one of the following usage counts:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Works::log_work_hash_table</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">Works::log_work_hash_table</span></span>:<br/>Census - <a href="7-cns.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Works::log_work_hash_table</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">Works::log_work_hash_table</span></span>:<br/>The Mini-Website - <a href="7-tm.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">hc</span><span class="plain-syntax">, </span><span class="identifier-syntax">total</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">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Work identifier hash table:\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">hc</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">hc</span><span class="plain-syntax"><</span><span class="constant-syntax">WORK_HASH_CODING_BASE</span><span class="plain-syntax">; </span><span class="identifier-syntax">hc</span><span class="plain-syntax">++) {</span>
|
||||
|
@ -537,7 +537,7 @@ each extension's page is generated from its <span class="extract"><span class="e
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Works::begin_extension_link</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">Works::begin_extension_link</span></span>:<br/>Census - <a href="7-cns.html#SP6_7_4_1">§6.7.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rubric</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Works::begin_extension_link</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">Works::begin_extension_link</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_6_4_1">§1.2.2.1.6.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rubric</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">, </span><span class="string-syntax">"href='inform://Extensions/Extensions/"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-wrk.html#SP15" class="function-link"><span class="function-syntax">Works::escape_apostrophes</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">link</span><span class="plain-syntax">, </span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">author_name</span><span class="plain-syntax">);</span>
|
||||
|
@ -562,12 +562,12 @@ each extension's page is generated from its <span class="extract"><span class="e
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Works::end_extension_link</span><button class="popup" onclick="togglePopup('usagePopup29')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup29">Usage of <span class="code-font"><span class="function-syntax">Works::end_extension_link</span></span>:<br/>Census - <a href="7-cns.html#SP6_7_4_1">§6.7.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Works::end_extension_link</span><button class="popup" onclick="togglePopup('usagePopup29')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup29">Usage of <span class="code-font"><span class="function-syntax">Works::end_extension_link</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_6_4_1">§1.2.2.1.6.4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-gnr.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresscurrent">wrk</li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="2-edt.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-gnr.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresscurrent">wrk</li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-edt.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -116,7 +116,7 @@ compiled, is a file vertex.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">build_vertex</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure build_vertex is accessed in 3/ib, 3/bs2, 3/is, 3/is2, 3/is3, 3/is4, 4/em, 5/es, 5/ks, 5/ls, 5/ps, 5/ps2, 5/ts, 6/hdn, 6/tbs, 6/inc, 7/dct, 7/dcm and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure build_vertex is accessed in 3/ib, 3/bs2, 3/is, 3/is2, 3/is3, 3/is4, 4/em, 5/es, 5/ks, 5/ls, 5/ps, 5/ps2, 5/ts, 6/hdn, 6/tbs, 6/inc, 7/dct, 7/ip2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. Creation. </b>First, the three colours of vertex.
|
||||
</p>
|
||||
|
||||
|
@ -389,7 +389,7 @@ to <span class="extract"><span class="extract-syntax">N</span></span> if it's al
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bg.html#SP9">§9</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-nst.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresscurrent">bg</li><li class="progresssection"><a href="3-bm.html">bm</a></li><li class="progresssection"><a href="3-ib.html">ib</a></li><li class="progresssection"><a href="3-bs.html">bs</a></li><li class="progresssection"><a href="3-bs2.html">bs2</a></li><li class="progresssection"><a href="3-is.html">is</a></li><li class="progresssection"><a href="3-is2.html">is2</a></li><li class="progresssection"><a href="3-is3.html">is3</a></li><li class="progresssection"><a href="3-is4.html">is4</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="3-bm.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-nst.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresscurrent">bg</li><li class="progresssection"><a href="3-bm.html">bm</a></li><li class="progresssection"><a href="3-ib.html">ib</a></li><li class="progresssection"><a href="3-bs.html">bs</a></li><li class="progresssection"><a href="3-bs2.html">bs2</a></li><li class="progresssection"><a href="3-is.html">is</a></li><li class="progresssection"><a href="3-is2.html">is2</a></li><li class="progresssection"><a href="3-is3.html">is3</a></li><li class="progresssection"><a href="3-is4.html">is4</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="3-bm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -138,7 +138,7 @@ It gets its BM by calling the following:
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-bg.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-bg.html">bg</a></li><li class="progresscurrent">bm</li><li class="progresssection"><a href="3-ib.html">ib</a></li><li class="progresssection"><a href="3-bs.html">bs</a></li><li class="progresssection"><a href="3-bs2.html">bs2</a></li><li class="progresssection"><a href="3-is.html">is</a></li><li class="progresssection"><a href="3-is2.html">is2</a></li><li class="progresssection"><a href="3-is3.html">is3</a></li><li class="progresssection"><a href="3-is4.html">is4</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="3-ib.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-bg.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-bg.html">bg</a></li><li class="progresscurrent">bm</li><li class="progresssection"><a href="3-ib.html">ib</a></li><li class="progresssection"><a href="3-bs.html">bs</a></li><li class="progresssection"><a href="3-bs2.html">bs2</a></li><li class="progresssection"><a href="3-is.html">is</a></li><li class="progresssection"><a href="3-is2.html">is2</a></li><li class="progresssection"><a href="3-is3.html">is3</a></li><li class="progresssection"><a href="3-is4.html">is4</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="3-ib.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -112,7 +112,7 @@ always succeeds and returns <span class="extract"><span class="extract-syntax">T
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-ib.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-bg.html">bg</a></li><li class="progresssection"><a href="3-bm.html">bm</a></li><li class="progresssection"><a href="3-ib.html">ib</a></li><li class="progresscurrent">bs</li><li class="progresssection"><a href="3-bs2.html">bs2</a></li><li class="progresssection"><a href="3-is.html">is</a></li><li class="progresssection"><a href="3-is2.html">is2</a></li><li class="progresssection"><a href="3-is3.html">is3</a></li><li class="progresssection"><a href="3-is4.html">is4</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="3-bs2.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-ib.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-bg.html">bg</a></li><li class="progresssection"><a href="3-bm.html">bm</a></li><li class="progresssection"><a href="3-ib.html">ib</a></li><li class="progresscurrent">bs</li><li class="progresssection"><a href="3-bs2.html">bs2</a></li><li class="progresssection"><a href="3-is.html">is</a></li><li class="progresssection"><a href="3-is2.html">is2</a></li><li class="progresssection"><a href="3-is3.html">is3</a></li><li class="progresssection"><a href="3-is4.html">is4</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="3-bs2.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -197,7 +197,7 @@ that shell commands return 0 to indicate happiness.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-bs.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-bg.html">bg</a></li><li class="progresssection"><a href="3-bm.html">bm</a></li><li class="progresssection"><a href="3-ib.html">ib</a></li><li class="progresssection"><a href="3-bs.html">bs</a></li><li class="progresscurrent">bs2</li><li class="progresssection"><a href="3-is.html">is</a></li><li class="progresssection"><a href="3-is2.html">is2</a></li><li class="progresssection"><a href="3-is3.html">is3</a></li><li class="progresssection"><a href="3-is4.html">is4</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="3-is.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-bs.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-bg.html">bg</a></li><li class="progresssection"><a href="3-bm.html">bm</a></li><li class="progresssection"><a href="3-ib.html">ib</a></li><li class="progresssection"><a href="3-bs.html">bs</a></li><li class="progresscurrent">bs2</li><li class="progresssection"><a href="3-is.html">is</a></li><li class="progresssection"><a href="3-is2.html">is2</a></li><li class="progresssection"><a href="3-is3.html">is3</a></li><li class="progresssection"><a href="3-is4.html">is4</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="3-is.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -337,7 +337,7 @@ created during the same second.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-ib.html#SP7_1_3">§7.1.3</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-bm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-bg.html">bg</a></li><li class="progresssection"><a href="3-bm.html">bm</a></li><li class="progresscurrent">ib</li><li class="progresssection"><a href="3-bs.html">bs</a></li><li class="progresssection"><a href="3-bs2.html">bs2</a></li><li class="progresssection"><a href="3-is.html">is</a></li><li class="progresssection"><a href="3-is2.html">is2</a></li><li class="progresssection"><a href="3-is3.html">is3</a></li><li class="progresssection"><a href="3-is4.html">is4</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="3-bs.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-bm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-bg.html">bg</a></li><li class="progresssection"><a href="3-bm.html">bm</a></li><li class="progresscurrent">ib</li><li class="progresssection"><a href="3-bs.html">bs</a></li><li class="progresssection"><a href="3-bs2.html">bs2</a></li><li class="progresssection"><a href="3-is.html">is</a></li><li class="progresssection"><a href="3-is2.html">is2</a></li><li class="progresssection"><a href="3-is3.html">is3</a></li><li class="progresssection"><a href="3-is4.html">is4</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="3-bs.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -219,7 +219,7 @@ it defaults to <span class="extract"><span class="extract-syntax">compile</span>
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-bs2.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-bg.html">bg</a></li><li class="progresssection"><a href="3-bm.html">bm</a></li><li class="progresssection"><a href="3-ib.html">ib</a></li><li class="progresssection"><a href="3-bs.html">bs</a></li><li class="progresssection"><a href="3-bs2.html">bs2</a></li><li class="progresscurrent">is</li><li class="progresssection"><a href="3-is2.html">is2</a></li><li class="progresssection"><a href="3-is3.html">is3</a></li><li class="progresssection"><a href="3-is4.html">is4</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="3-is2.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-bs2.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-bg.html">bg</a></li><li class="progresssection"><a href="3-bm.html">bm</a></li><li class="progresssection"><a href="3-ib.html">ib</a></li><li class="progresssection"><a href="3-bs.html">bs</a></li><li class="progresssection"><a href="3-bs2.html">bs2</a></li><li class="progresscurrent">is</li><li class="progresssection"><a href="3-is2.html">is2</a></li><li class="progresssection"><a href="3-is3.html">is3</a></li><li class="progresssection"><a href="3-is4.html">is4</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="3-is2.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -140,7 +140,7 @@ folders anyway; maybe we should leave well be.)
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-is.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-bg.html">bg</a></li><li class="progresssection"><a href="3-bm.html">bm</a></li><li class="progresssection"><a href="3-ib.html">ib</a></li><li class="progresssection"><a href="3-bs.html">bs</a></li><li class="progresssection"><a href="3-bs2.html">bs2</a></li><li class="progresssection"><a href="3-is.html">is</a></li><li class="progresscurrent">is2</li><li class="progresssection"><a href="3-is3.html">is3</a></li><li class="progresssection"><a href="3-is4.html">is4</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="3-is3.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-is.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-bg.html">bg</a></li><li class="progresssection"><a href="3-bm.html">bm</a></li><li class="progresssection"><a href="3-ib.html">ib</a></li><li class="progresssection"><a href="3-bs.html">bs</a></li><li class="progresssection"><a href="3-bs2.html">bs2</a></li><li class="progresssection"><a href="3-is.html">is</a></li><li class="progresscurrent">is2</li><li class="progresssection"><a href="3-is3.html">is3</a></li><li class="progresssection"><a href="3-is4.html">is4</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="3-is3.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -104,7 +104,7 @@ called as a function.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-is2.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-bg.html">bg</a></li><li class="progresssection"><a href="3-bm.html">bm</a></li><li class="progresssection"><a href="3-ib.html">ib</a></li><li class="progresssection"><a href="3-bs.html">bs</a></li><li class="progresssection"><a href="3-bs2.html">bs2</a></li><li class="progresssection"><a href="3-is.html">is</a></li><li class="progresssection"><a href="3-is2.html">is2</a></li><li class="progresscurrent">is3</li><li class="progresssection"><a href="3-is4.html">is4</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="3-is4.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-is2.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-bg.html">bg</a></li><li class="progresssection"><a href="3-bm.html">bm</a></li><li class="progresssection"><a href="3-ib.html">ib</a></li><li class="progresssection"><a href="3-bs.html">bs</a></li><li class="progresssection"><a href="3-bs2.html">bs2</a></li><li class="progresssection"><a href="3-is.html">is</a></li><li class="progresssection"><a href="3-is2.html">is2</a></li><li class="progresscurrent">is3</li><li class="progresssection"><a href="3-is4.html">is4</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="3-is4.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -93,7 +93,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-is3.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-bg.html">bg</a></li><li class="progresssection"><a href="3-bm.html">bm</a></li><li class="progresssection"><a href="3-ib.html">ib</a></li><li class="progresssection"><a href="3-bs.html">bs</a></li><li class="progresssection"><a href="3-bs2.html">bs2</a></li><li class="progresssection"><a href="3-is.html">is</a></li><li class="progresssection"><a href="3-is2.html">is2</a></li><li class="progresssection"><a href="3-is3.html">is3</a></li><li class="progresscurrent">is4</li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="4-em.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-is3.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-bg.html">bg</a></li><li class="progresssection"><a href="3-bm.html">bm</a></li><li class="progresssection"><a href="3-ib.html">ib</a></li><li class="progresssection"><a href="3-bs.html">bs</a></li><li class="progresssection"><a href="3-bs2.html">bs2</a></li><li class="progresssection"><a href="3-is.html">is</a></li><li class="progresssection"><a href="3-is2.html">is2</a></li><li class="progresssection"><a href="3-is3.html">is3</a></li><li class="progresscurrent">is4</li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="4-em.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -103,7 +103,7 @@ later on, as needed, just for extensions of interest: see below.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionManager::path_within_nest</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">ExtensionManager::path_within_nest</span></span>:<br/><a href="4-em.html#SP6">§6</a>, <a href="4-em.html#SP7">§7</a><br/>Census - <a href="7-cns.html#SP1">§1</a>, <a href="7-cns.html#SP6_7_4_3">§6.7.4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionManager::path_within_nest</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">ExtensionManager::path_within_nest</span></span>:<br/><a href="4-em.html#SP6">§6</a>, <a href="4-em.html#SP7">§7</a><br/>Census - <a href="7-cns.html#SP3">§3</a><br/>Index Pages - <a href="7-ip.html#SP1_2_2_1_6_4_3">§1.2.2.1.6.4.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no nest"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">location</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Extensions"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -113,7 +113,7 @@ which stores data about extensions used by the Inform compiler.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionManager::from_copy</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">ExtensionManager::from_copy</span></span>:<br/><a href="4-em.html#SP8">§8</a>, <a href="4-em.html#SP9">§9</a><br/>Extension Services - <a href="5-es.html#SP7">§7</a><br/>Project Services - <a href="5-ps2.html#SP26">§26</a><br/>Source Text - <a href="6-st.html#SP12">§12</a><br/>Inclusions - <a href="6-inc.html#SP5_1">§5.1</a><br/>Census - <a href="7-cns.html#SP2">§2</a><br/>Documentation - <a href="7-dcm.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionManager::from_copy</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">ExtensionManager::from_copy</span></span>:<br/><a href="4-em.html#SP8">§8</a>, <a href="4-em.html#SP9">§9</a><br/>Extension Services - <a href="5-es.html#SP7">§7</a><br/>Project Services - <a href="5-ps2.html#SP26">§26</a><br/>Source Text - <a href="6-st.html#SP12">§12</a><br/>Inclusions - <a href="6-inc.html#SP5_1">§5.1</a><br/>Census - <a href="7-cns.html#SP5">§5</a><br/>Individual Pages - <a href="7-ip2.html#SP2_1">§2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">C</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">genre</span><span class="plain-syntax"> == </span><span class="identifier-syntax">extension_genre</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">RETRIEVE_POINTER_inform_extension</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">metadata</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -304,7 +304,7 @@ the current VM settings.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-is4.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">em</li><li class="progresssection"><a href="4-km.html">km</a></li><li class="progresssection"><a href="4-lm.html">lm</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresssection"><a href="4-pbm.html">pbm</a></li><li class="progresssection"><a href="4-pfm.html">pfm</a></li><li class="progresssection"><a href="4-tm.html">tm</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="4-km.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-is4.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">em</li><li class="progresssection"><a href="4-km.html">km</a></li><li class="progresssection"><a href="4-lm.html">lm</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresssection"><a href="4-pbm.html">pbm</a></li><li class="progresssection"><a href="4-pfm.html">pfm</a></li><li class="progresssection"><a href="4-tm.html">tm</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="4-km.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -251,7 +251,7 @@ we need to <span class="extract"><span class="extract-syntax">rsync</span></span
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-em.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-em.html">em</a></li><li class="progresscurrent">km</li><li class="progresssection"><a href="4-lm.html">lm</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresssection"><a href="4-pbm.html">pbm</a></li><li class="progresssection"><a href="4-pfm.html">pfm</a></li><li class="progresssection"><a href="4-tm.html">tm</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="4-lm.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-em.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-em.html">em</a></li><li class="progresscurrent">km</li><li class="progresssection"><a href="4-lm.html">lm</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresssection"><a href="4-pbm.html">pbm</a></li><li class="progresssection"><a href="4-pfm.html">pfm</a></li><li class="progresssection"><a href="4-tm.html">tm</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="4-lm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -239,7 +239,7 @@ we need to <span class="extract"><span class="extract-syntax">rsync</span></span
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-km.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-em.html">em</a></li><li class="progresssection"><a href="4-km.html">km</a></li><li class="progresscurrent">lm</li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresssection"><a href="4-pbm.html">pbm</a></li><li class="progresssection"><a href="4-pfm.html">pfm</a></li><li class="progresssection"><a href="4-tm.html">tm</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="4-pm.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-km.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-em.html">em</a></li><li class="progresssection"><a href="4-km.html">km</a></li><li class="progresscurrent">lm</li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresssection"><a href="4-pbm.html">pbm</a></li><li class="progresssection"><a href="4-pfm.html">pfm</a></li><li class="progresssection"><a href="4-tm.html">tm</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="4-pm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -183,7 +183,7 @@ it would mean fully parsing and partially syntax-analysing its source text.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-pm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-em.html">em</a></li><li class="progresssection"><a href="4-km.html">km</a></li><li class="progresssection"><a href="4-lm.html">lm</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresscurrent">pbm</li><li class="progresssection"><a href="4-pfm.html">pfm</a></li><li class="progresssection"><a href="4-tm.html">tm</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="4-pfm.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-pm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-em.html">em</a></li><li class="progresssection"><a href="4-km.html">km</a></li><li class="progresssection"><a href="4-lm.html">lm</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresscurrent">pbm</li><li class="progresssection"><a href="4-pfm.html">pfm</a></li><li class="progresssection"><a href="4-tm.html">tm</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="4-pfm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -184,7 +184,7 @@ it would mean fully parsing and partially syntax-analysing its source text.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-pbm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-em.html">em</a></li><li class="progresssection"><a href="4-km.html">km</a></li><li class="progresssection"><a href="4-lm.html">lm</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresssection"><a href="4-pbm.html">pbm</a></li><li class="progresscurrent">pfm</li><li class="progresssection"><a href="4-tm.html">tm</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="4-tm.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-pbm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-em.html">em</a></li><li class="progresssection"><a href="4-km.html">km</a></li><li class="progresssection"><a href="4-lm.html">lm</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresssection"><a href="4-pbm.html">pbm</a></li><li class="progresscurrent">pfm</li><li class="progresssection"><a href="4-tm.html">tm</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="4-tm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -214,7 +214,7 @@ since a pipeline is a single file; to sync, we just overwrite.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-lm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-em.html">em</a></li><li class="progresssection"><a href="4-km.html">km</a></li><li class="progresssection"><a href="4-lm.html">lm</a></li><li class="progresscurrent">pm</li><li class="progresssection"><a href="4-pbm.html">pbm</a></li><li class="progresssection"><a href="4-pfm.html">pfm</a></li><li class="progresssection"><a href="4-tm.html">tm</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="4-pbm.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-lm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-em.html">em</a></li><li class="progresssection"><a href="4-km.html">km</a></li><li class="progresssection"><a href="4-lm.html">lm</a></li><li class="progresscurrent">pm</li><li class="progresssection"><a href="4-pbm.html">pbm</a></li><li class="progresssection"><a href="4-pfm.html">pfm</a></li><li class="progresssection"><a href="4-tm.html">tm</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="4-pbm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -220,7 +220,7 @@ a folder, we need to <span class="extract"><span class="extract-syntax">rsync</s
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-pfm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-em.html">em</a></li><li class="progresssection"><a href="4-km.html">km</a></li><li class="progresssection"><a href="4-lm.html">lm</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresssection"><a href="4-pbm.html">pbm</a></li><li class="progresssection"><a href="4-pfm.html">pfm</a></li><li class="progresscurrent">tm</li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="5-es.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-pfm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-em.html">em</a></li><li class="progresssection"><a href="4-km.html">km</a></li><li class="progresssection"><a href="4-lm.html">lm</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresssection"><a href="4-pbm.html">pbm</a></li><li class="progresssection"><a href="4-pfm.html">pfm</a></li><li class="progresscurrent">tm</li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="5-es.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -96,7 +96,7 @@ length to one character less than the following constants:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inform_extension is accessed in 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 5/ks, 5/ls, 5/ps, 5/ps2, 5/ts, 6/hdn, 6/tbs, 6/inc, 7/dct, 7/cns, 7/dcm and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure inform_extension is accessed in 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 5/ks, 5/ls, 5/ps, 5/ps2, 5/ts, 6/hdn, 6/tbs, 6/inc, 7/dct, 7/cns, 7/ip2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>This is called as soon as a new copy <span class="extract"><span class="extract-syntax">C</span></span> of the extension genre is created.
|
||||
We scan the extension file for the title, author, version number and any
|
||||
compatibility notes given (such as "for Glulx only").
|
||||
|
@ -518,7 +518,7 @@ calling the routines below.
|
|||
its "begins here" line, is parsed as a sentence and will be read as an
|
||||
assertion in the usual way when the material from this extension is being
|
||||
worked through (quite a long time after the EF structure was created). When
|
||||
that happens, the following routine will be called to set the rubric.
|
||||
that happens, the following function will be called to set the rubric.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -528,7 +528,7 @@ that happens, the following routine will be called to set the rubric.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">EXTENSIONS_CENSUS</span><span class="plain-syntax">, </span><span class="string-syntax">"Extension rubric: %S\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">rubric_as_lexed</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Extensions::get_rubric</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Extensions::get_rubric</span></span>:<br/>Census - <a href="7-cns.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Extensions::get_rubric</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Extensions::get_rubric</span></span>:<br/>Census - <a href="7-cns.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">E</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">rubric_as_lexed</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -608,7 +608,7 @@ its requirements (even though it did when first loaded). This tests for that:
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-tm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresscurrent">es</li><li class="progresssection"><a href="5-ks.html">ks</a></li><li class="progresssection"><a href="5-ls.html">ls</a></li><li class="progresssection"><a href="5-ps.html">ps</a></li><li class="progresssection"><a href="5-ps2.html">ps2</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="5-ks.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-tm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresscurrent">es</li><li class="progresssection"><a href="5-ks.html">ks</a></li><li class="progresssection"><a href="5-ls.html">ls</a></li><li class="progresssection"><a href="5-ps.html">ps</a></li><li class="progresssection"><a href="5-ps2.html">ps2</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="5-ks.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -106,7 +106,7 @@ module of <span class="extract"><span class="extract-syntax">inform7</span></spa
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">inform_kit</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inform_kit is accessed in 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 5/es, 5/ls, 5/ps, 5/ps2, 5/ts, 6/hdn, 6/tbs, 6/inc, 7/dct, 7/dcm and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure inform_kit is accessed in 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 5/es, 5/ls, 5/ps, 5/ps2, 5/ts, 6/hdn, 6/tbs, 6/inc, 7/dct, 7/ip2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>Kits come with an "if this then that" service for including other kits,
|
||||
and we represent rules with the following:
|
||||
</p>
|
||||
|
@ -489,7 +489,7 @@ vertex, i.e., to a vertex meaning "we would like Locksmith but can't find it".
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ks.html#SP13">§13</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-es.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-es.html">es</a></li><li class="progresscurrent">ks</li><li class="progresssection"><a href="5-ls.html">ls</a></li><li class="progresssection"><a href="5-ps.html">ps</a></li><li class="progresssection"><a href="5-ps2.html">ps2</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="5-ls.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-es.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-es.html">es</a></li><li class="progresscurrent">ks</li><li class="progresssection"><a href="5-ls.html">ls</a></li><li class="progresssection"><a href="5-ps.html">ps</a></li><li class="progresssection"><a href="5-ps2.html">ps2</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="5-ls.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -85,7 +85,7 @@ small resource folder called its "bundle". (This includes English.)
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">inform_language</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inform_language is accessed in 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 5/es, 5/ks, 5/ps, 5/ps2, 5/ts, 6/hdn, 6/tbs, 6/inc, 7/dct, 7/dcm and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure inform_language is accessed in 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 5/es, 5/ks, 5/ps, 5/ps2, 5/ts, 6/hdn, 6/tbs, 6/inc, 7/dct, 7/ip2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>This is called as soon as a new copy <span class="extract"><span class="extract-syntax">C</span></span> of the language genre is created.
|
||||
</p>
|
||||
|
||||
|
@ -244,7 +244,7 @@ include the Materials folder for any relevant project.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ks.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-es.html">es</a></li><li class="progresssection"><a href="5-ks.html">ks</a></li><li class="progresscurrent">ls</li><li class="progresssection"><a href="5-ps.html">ps</a></li><li class="progresssection"><a href="5-ps2.html">ps2</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="5-ps.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ks.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-es.html">es</a></li><li class="progresssection"><a href="5-ks.html">ks</a></li><li class="progresscurrent">ls</li><li class="progresssection"><a href="5-ps.html">ps</a></li><li class="progresssection"><a href="5-ps2.html">ps2</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="5-ps.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -79,7 +79,7 @@ in the following structure.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">inform_pipeline</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inform_pipeline is accessed in 2/edt, 2/rqr, 2/nst, 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 5/es, 5/ks, 5/ls, 5/ps2, 5/ts, 6/hdn, 6/tbs, 6/inc, 6/vmg, 7/dct, 7/cns, 7/dcm and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure inform_pipeline is accessed in 2/edt, 2/rqr, 2/nst, 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 5/es, 5/ks, 5/ls, 5/ps2, 5/ts, 6/hdn, 6/tbs, 6/inc, 6/vmg, 7/dct, 7/ip, 7/ip2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>This is called as soon as a new copy <span class="extract"><span class="extract-syntax">C</span></span> of the language genre is created.
|
||||
</p>
|
||||
|
||||
|
@ -93,7 +93,7 @@ in the following structure.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ls.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-es.html">es</a></li><li class="progresssection"><a href="5-ks.html">ks</a></li><li class="progresssection"><a href="5-ls.html">ls</a></li><li class="progresscurrent">ps</li><li class="progresssection"><a href="5-ps2.html">ps2</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="5-ps2.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ls.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-es.html">es</a></li><li class="progresssection"><a href="5-ks.html">ks</a></li><li class="progresssection"><a href="5-ls.html">ls</a></li><li class="progresscurrent">ps</li><li class="progresssection"><a href="5-ps2.html">ps2</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="5-ps2.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -95,7 +95,7 @@ in the following structure.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">inform_project</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inform_project is accessed in 2/edt, 2/rqr, 2/nst, 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 4/pbm, 4/pfm, 5/es, 5/ks, 5/ls, 5/ps, 5/ts, 6/hdn, 6/tbs, 6/inc, 6/vmg, 7/dct, 7/cns, 7/dcm and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure inform_project is accessed in 2/edt, 2/rqr, 2/nst, 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 4/pbm, 4/pfm, 5/es, 5/ks, 5/ls, 5/ps, 5/ts, 6/hdn, 6/tbs, 6/inc, 6/vmg, 7/tm, 7/dct, 7/cns, 7/ip, 7/ip2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>This is called as soon as a new copy <span class="extract"><span class="extract-syntax">C</span></span> of the language genre is created.
|
||||
It doesn't actually do any scanning to speak of, in fact: we may eventually
|
||||
learn a lot about the project, but for now we simply initialise to bland
|
||||
|
@ -164,7 +164,7 @@ is small, but one likes to minimise the effect of the CWD.)
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Projects::path</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Projects::path</span></span>:<br/><a href="5-ps2.html#SP2">§2</a><br/>Census - <a href="7-cns.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Projects::path</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Projects::path</span></span>:<br/><a href="5-ps2.html#SP2">§2</a><br/>The Mini-Website - <a href="7-tm.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">proj</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">proj</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">location_if_path</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">proj</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">location_if_path</span><span class="plain-syntax">;</span>
|
||||
|
@ -193,7 +193,7 @@ reasons, this list is created on demand.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="function-syntax">Projects::nest_list</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Projects::nest_list</span></span>:<br/><a href="5-ps2.html#SP12">§12</a>, <a href="5-ps2.html#SP15">§15</a><br/>Incremental Building - <a href="3-ib.html#SP7_1">§7.1</a><br/>Inter Skill - <a href="3-is.html#SP4">§4</a><br/>Inform7 Skill - <a href="3-is2.html#SP1">§1</a><br/>Inclusions - <a href="6-inc.html#SP5_1">§5.1</a>, <a href="6-inc.html#SP5_1_2">§5.1.2</a><br/>Census - <a href="7-cns.html#SP1">§1</a><br/>Documentation - <a href="7-dcm.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="function-syntax">Projects::nest_list</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Projects::nest_list</span></span>:<br/><a href="5-ps2.html#SP12">§12</a>, <a href="5-ps2.html#SP15">§15</a><br/>Incremental Building - <a href="3-ib.html#SP7_1">§7.1</a><br/>Inter Skill - <a href="3-is.html#SP4">§4</a><br/>Inform7 Skill - <a href="3-is2.html#SP1">§1</a><br/>Inclusions - <a href="6-inc.html#SP5_1">§5.1</a>, <a href="6-inc.html#SP5_1_2">§5.1.2</a><br/>Census - <a href="7-cns.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">proj</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="1-ic.html#SP14" class="function-link"><span class="function-syntax">Supervisor::shared_nest_list</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RUN_ONLY_FROM_PHASE</span><span class="plain-syntax">(</span><span class="constant-syntax">NESTED_INBUILD_PHASE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">LinkedLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">proj</span><span class="plain-syntax">-></span><span class="element-syntax">search_list</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
|
@ -974,7 +974,7 @@ place of... instructions after the sweep for inclusions.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ps2.html#SP27">§27</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ps.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-es.html">es</a></li><li class="progresssection"><a href="5-ks.html">ks</a></li><li class="progresssection"><a href="5-ls.html">ls</a></li><li class="progresssection"><a href="5-ps.html">ps</a></li><li class="progresscurrent">ps2</li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="5-ts.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ps.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-es.html">es</a></li><li class="progresssection"><a href="5-ks.html">ks</a></li><li class="progresssection"><a href="5-ls.html">ls</a></li><li class="progresssection"><a href="5-ps.html">ps</a></li><li class="progresscurrent">ps2</li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="5-ts.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -79,7 +79,7 @@ stored in the following structure.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">inform_template</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inform_template is accessed in 2/edt, 2/rqr, 2/nst, 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 5/es, 5/ks, 5/ls, 5/ps, 5/ps2, 6/hdn, 6/tbs, 6/inc, 6/vmg, 7/dct, 7/cns, 7/dcm and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure inform_template is accessed in 2/edt, 2/rqr, 2/nst, 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 5/es, 5/ks, 5/ls, 5/ps, 5/ps2, 6/hdn, 6/tbs, 6/inc, 6/vmg, 7/dct, 7/ip, 7/ip2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>This is called as soon as a new copy <span class="extract"><span class="extract-syntax">C</span></span> of the language genre is created.
|
||||
</p>
|
||||
|
||||
|
@ -93,7 +93,7 @@ stored in the following structure.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ps2.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-es.html">es</a></li><li class="progresssection"><a href="5-ks.html">ks</a></li><li class="progresssection"><a href="5-ls.html">ls</a></li><li class="progresssection"><a href="5-ps.html">ps</a></li><li class="progresssection"><a href="5-ps2.html">ps2</a></li><li class="progresscurrent">ts</li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="6-st.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ps2.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-es.html">es</a></li><li class="progresssection"><a href="5-ks.html">ks</a></li><li class="progresssection"><a href="5-ls.html">ls</a></li><li class="progresssection"><a href="5-ps.html">ps</a></li><li class="progresssection"><a href="5-ps2.html">ps2</a></li><li class="progresscurrent">ts</li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="6-st.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -293,7 +293,7 @@ overlapping with this, and they need to match.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="6-inc.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-st.html">st</a></li><li class="progresssection"><a href="6-hdn.html">hdn</a></li><li class="progresssection"><a href="6-tbs.html">tbs</a></li><li class="progresssection"><a href="6-tof.html">tof</a></li><li class="progresssection"><a href="6-inc.html">inc</a></li><li class="progresscurrent">cs</li><li class="progresssection"><a href="6-vmg.html">vmg</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="6-vmg.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="6-inc.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-st.html">st</a></li><li class="progresssection"><a href="6-hdn.html">hdn</a></li><li class="progresssection"><a href="6-tbs.html">tbs</a></li><li class="progresssection"><a href="6-tof.html">tof</a></li><li class="progresssection"><a href="6-inc.html">inc</a></li><li class="progresscurrent">cs</li><li class="progresssection"><a href="6-vmg.html">vmg</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="6-vmg.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -583,7 +583,7 @@ runs in linear time.)
|
|||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="6-hdn.html#SP14">§14</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP15"></a><b>§15. </b>The above routine, then, calls <span class="extract"><span class="extract-syntax">Headings::move_below</span></span> to attach a heading
|
||||
<p class="commentary firstcommentary"><a id="SP15"></a><b>§15. </b>The above function, then, calls <span class="extract"><span class="extract-syntax">Headings::move_below</span></span> to attach a heading
|
||||
to the tree as a child of a given parent:
|
||||
</p>
|
||||
|
||||
|
@ -671,7 +671,7 @@ affects problem messages.
|
|||
</p>
|
||||
|
||||
<p class="commentary">Because every file has an Implied (0) heading registered at line 1, the loop
|
||||
in the following routine is guaranteed to return a valid heading provided
|
||||
in the following function is guaranteed to return a valid heading provided
|
||||
the original source location is well formed (i.e., has a non-null source
|
||||
file and a line number of at least 1).
|
||||
</p>
|
||||
|
@ -705,7 +705,7 @@ file and a line number of at least 1).
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP19"></a><b>§19. </b>Although Implied (0) headings do have text, contrary to the implication of
|
||||
the routine here, this text is only what happens to be first in the file,
|
||||
the function here, this text is only what happens to be first in the file,
|
||||
or else is something supplied by <a href="index.html" class="internal">supervisor</a> purely to make the debugging
|
||||
log comprehensible: it isn't a heading typed as such by the user, which is all
|
||||
that we are interested in for this purpose. So we send back a null word range.
|
||||
|
@ -889,7 +889,7 @@ elsewhere).
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="6-hdn.html#SP21">§21</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="6-st.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-st.html">st</a></li><li class="progresscurrent">hdn</li><li class="progresssection"><a href="6-tbs.html">tbs</a></li><li class="progresssection"><a href="6-tof.html">tof</a></li><li class="progresssection"><a href="6-inc.html">inc</a></li><li class="progresssection"><a href="6-cs.html">cs</a></li><li class="progresssection"><a href="6-vmg.html">vmg</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="6-tbs.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="6-st.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-st.html">st</a></li><li class="progresscurrent">hdn</li><li class="progresssection"><a href="6-tbs.html">tbs</a></li><li class="progresssection"><a href="6-tof.html">tof</a></li><li class="progresssection"><a href="6-inc.html">inc</a></li><li class="progresssection"><a href="6-cs.html">cs</a></li><li class="progresssection"><a href="6-vmg.html">vmg</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="6-tbs.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -449,7 +449,7 @@ the "begins here".
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="6-tof.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-st.html">st</a></li><li class="progresssection"><a href="6-hdn.html">hdn</a></li><li class="progresssection"><a href="6-tbs.html">tbs</a></li><li class="progresssection"><a href="6-tof.html">tof</a></li><li class="progresscurrent">inc</li><li class="progresssection"><a href="6-cs.html">cs</a></li><li class="progresssection"><a href="6-vmg.html">vmg</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="6-cs.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="6-tof.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-st.html">st</a></li><li class="progresssection"><a href="6-hdn.html">hdn</a></li><li class="progresssection"><a href="6-tbs.html">tbs</a></li><li class="progresssection"><a href="6-tof.html">tof</a></li><li class="progresscurrent">inc</li><li class="progresssection"><a href="6-cs.html">cs</a></li><li class="progresssection"><a href="6-vmg.html">vmg</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="6-cs.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -411,7 +411,7 @@ stack into the new world of kits), so we issue a syntax error.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ts.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresscurrent">st</li><li class="progresssection"><a href="6-hdn.html">hdn</a></li><li class="progresssection"><a href="6-tbs.html">tbs</a></li><li class="progresssection"><a href="6-tof.html">tof</a></li><li class="progresssection"><a href="6-inc.html">inc</a></li><li class="progresssection"><a href="6-cs.html">cs</a></li><li class="progresssection"><a href="6-vmg.html">vmg</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="6-hdn.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ts.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresscurrent">st</li><li class="progresssection"><a href="6-hdn.html">hdn</a></li><li class="progresssection"><a href="6-tbs.html">tbs</a></li><li class="progresssection"><a href="6-tof.html">tof</a></li><li class="progresssection"><a href="6-inc.html">inc</a></li><li class="progresssection"><a href="6-cs.html">cs</a></li><li class="progresssection"><a href="6-vmg.html">vmg</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="6-hdn.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -67,7 +67,7 @@ project has been read in.
|
|||
|
||||
<p class="commentary">But this isn't fast enough, because the sentence also specifies the language
|
||||
of syntax, and we need to know of any non-English choice immediately. So a
|
||||
special hook in the <a href="../syntax-module/index.html" class="internal">syntax</a> module calls the following routine as soon as
|
||||
special hook in the <a href="../syntax-module/index.html" class="internal">syntax</a> module calls the following function as soon as
|
||||
such a sentence is found; thus, it happens during sentence-breaking, not
|
||||
after it, and may therefore affect how subsequent sentences are broken.
|
||||
</p>
|
||||
|
@ -160,7 +160,7 @@ to declare the title and author.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="6-tbs.html#SP1">§1</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="6-hdn.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-st.html">st</a></li><li class="progresssection"><a href="6-hdn.html">hdn</a></li><li class="progresscurrent">tbs</li><li class="progresssection"><a href="6-tof.html">tof</a></li><li class="progresssection"><a href="6-inc.html">inc</a></li><li class="progresssection"><a href="6-cs.html">cs</a></li><li class="progresssection"><a href="6-vmg.html">vmg</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="6-tof.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="6-hdn.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-st.html">st</a></li><li class="progresssection"><a href="6-hdn.html">hdn</a></li><li class="progresscurrent">tbs</li><li class="progresssection"><a href="6-tof.html">tof</a></li><li class="progresssection"><a href="6-inc.html">inc</a></li><li class="progresssection"><a href="6-cs.html">cs</a></li><li class="progresssection"><a href="6-vmg.html">vmg</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="6-tof.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -126,7 +126,7 @@ unyielding the user's views, it's not allowed to write:
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="6-tbs.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-st.html">st</a></li><li class="progresssection"><a href="6-hdn.html">hdn</a></li><li class="progresssection"><a href="6-tbs.html">tbs</a></li><li class="progresscurrent">tof</li><li class="progresssection"><a href="6-inc.html">inc</a></li><li class="progresssection"><a href="6-cs.html">cs</a></li><li class="progresssection"><a href="6-vmg.html">vmg</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="6-inc.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="6-tbs.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-st.html">st</a></li><li class="progresssection"><a href="6-hdn.html">hdn</a></li><li class="progresssection"><a href="6-tbs.html">tbs</a></li><li class="progresscurrent">tof</li><li class="progresssection"><a href="6-inc.html">inc</a></li><li class="progresssection"><a href="6-cs.html">cs</a></li><li class="progresssection"><a href="6-vmg.html">vmg</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="6-inc.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -101,7 +101,7 @@ with result <span class="extract"><span class="Preform-extract-syntax">TRUE</spa
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-prf.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="6-cs.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-st.html">st</a></li><li class="progresssection"><a href="6-hdn.html">hdn</a></li><li class="progresssection"><a href="6-tbs.html">tbs</a></li><li class="progresssection"><a href="6-tof.html">tof</a></li><li class="progresssection"><a href="6-inc.html">inc</a></li><li class="progresssection"><a href="6-cs.html">cs</a></li><li class="progresscurrent">vmg</li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="7-dct.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="6-cs.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-st.html">st</a></li><li class="progresssection"><a href="6-hdn.html">hdn</a></li><li class="progresssection"><a href="6-tbs.html">tbs</a></li><li class="progresssection"><a href="6-tof.html">tof</a></li><li class="progresssection"><a href="6-inc.html">inc</a></li><li class="progresssection"><a href="6-cs.html">cs</a></li><li class="progresscurrent">vmg</li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="7-tm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -207,7 +207,7 @@ variable created by <a href="../../../inweb/docs/foundation-module/index.html" c
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionDictionary::time_stamp</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">ExtensionDictionary::time_stamp</span></span>:<br/>Census - <a href="7-cns.html#SP6_2">§6.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionDictionary::time_stamp</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">ExtensionDictionary::time_stamp</span></span>:<br/>The Mini-Website - <a href="7-tm.html#SP2_1">§2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">dbuff</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">ascday</span><span class="plain-syntax">[] = { </span><span class="string-syntax">"Sun"</span><span class="plain-syntax">, </span><span class="string-syntax">"Mon"</span><span class="plain-syntax">, </span><span class="string-syntax">"Tue"</span><span class="plain-syntax">, </span><span class="string-syntax">"Wed"</span><span class="plain-syntax">, </span><span class="string-syntax">"Thu"</span><span class="plain-syntax">, </span><span class="string-syntax">"Fri"</span><span class="plain-syntax">, </span><span class="string-syntax">"Sat"</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">ascmon</span><span class="plain-syntax">[] = { </span><span class="string-syntax">"January"</span><span class="plain-syntax">, </span><span class="string-syntax">"February"</span><span class="plain-syntax">, </span><span class="string-syntax">"March"</span><span class="plain-syntax">, </span><span class="string-syntax">"April"</span><span class="plain-syntax">, </span><span class="string-syntax">"May"</span><span class="plain-syntax">, </span><span class="string-syntax">"June"</span><span class="plain-syntax">,</span>
|
||||
|
@ -256,12 +256,12 @@ but note that it lists the erasure flag too:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">ede</span><span class="plain-syntax">-></span><span class="element-syntax">entry_text</span><span class="plain-syntax">, </span><span class="identifier-syntax">ede</span><span class="plain-syntax">-></span><span class="element-syntax">type</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8"></a><b>§8. Reading in. </b>Not a surprising routine: open, convert one line at a time to an
|
||||
<p class="commentary firstcommentary"><a id="SP8"></a><b>§8. Reading in. </b>Not a surprising function: open, convert one line at a time to an
|
||||
<a href="7-dct.html#SP3" class="internal">extension_dictionary_entry</a> object, close.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionDictionary::read_from_file</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">ExtensionDictionary::read_from_file</span></span>:<br/>Census - <a href="7-cns.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionDictionary::read_from_file</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">ExtensionDictionary::read_from_file</span></span>:<br/>The Mini-Website - <a href="7-tm.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</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="7-dct.html#SP1" class="function-link"><span class="function-syntax">ExtensionDictionary::filename</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">F</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>
|
||||
|
||||
|
@ -332,7 +332,7 @@ days when overlong records were truncated.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionDictionary::write_back</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">ExtensionDictionary::write_back</span></span>:<br/>Census - <a href="7-cns.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionDictionary::write_back</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">ExtensionDictionary::write_back</span></span>:<br/>The Mini-Website - <a href="7-tm.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</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">DICTF_struct</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">DICTF</span><span class="plain-syntax"> = &</span><span class="identifier-syntax">DICTF_struct</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="7-dct.html#SP1" class="function-link"><span class="function-syntax">ExtensionDictionary::filename</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -525,14 +525,7 @@ fact, the HTML rendering of the dictionary constructed above.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionDictionary::write_to_HTML</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">ExtensionDictionary::write_to_HTML</span></span>:<br/>Census - <a href="7-cns.html#SP15">§15</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Whenever an extension is used, its definitions are entered into the "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"following index. (Thus, a newly installed but never-used extension "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"is not indexed yet.)."</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::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">HTML::end_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionDictionary::write_to_HTML</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">ExtensionDictionary::write_to_HTML</span></span>:<br/>Index Pages - <a href="7-ip.html#SP1_2_2">§1.2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">first_letter</span><span class="plain-syntax"> = </span><span class="character-syntax">'a'</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_dictionary_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ede</span><span class="plain-syntax">, *</span><span class="identifier-syntax">previous_ede</span><span class="plain-syntax">, *</span><span class="identifier-syntax">next_ede</span><span class="plain-syntax">;</span>
|
||||
|
@ -637,16 +630,12 @@ one of John Clemens's.) Different EDEs deriving from the same extension do
|
|||
not exemplify a clash.
|
||||
</li><li>(c) For each extension L, there is at most one KEC whose left EDE derives
|
||||
from L and which has the "first known" flag set.
|
||||
</li></ul>
|
||||
<p class="commentary">(-c.1) If such a KEC does not exist, then L does not clash with any other
|
||||
If such a KEC does not exist, then L does not clash with any other
|
||||
extension.
|
||||
</p>
|
||||
|
||||
<p class="commentary">(-c.2) If such a KEC does exist, then it is the head of a linked list of
|
||||
If such a KEC does exist, then it is the head of a linked list of
|
||||
KECs all of which have lefthand EDE deriving from L, and in which no two
|
||||
entries have righthand EDEs deriving from the same extension as each other.
|
||||
</p>
|
||||
|
||||
</li></ul>
|
||||
<p class="commentary">It follows that we can determine if extensions X and Y clash by arranging
|
||||
them as L and R (rule (a)), looking for L among the left EDEs of all KECs
|
||||
with the "first known" flag set (rule (c)), and then looking for Y among
|
||||
|
@ -800,7 +789,7 @@ are, if anything, a sign of life and activity.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-dct.html#SP19">§19</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="6-vmg.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresscurrent">dct</li><li class="progresssection"><a href="7-cns.html">cns</a></li><li class="progresssection"><a href="7-dcm.html">dcm</a></li><li class="progressnext"><a href="7-cns.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="7-tm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-tm.html">tm</a></li><li class="progresscurrent">dct</li><li class="progresssection"><a href="7-cns.html">cns</a></li><li class="progresssection"><a href="7-ip.html">ip</a></li><li class="progresssection"><a href="7-ip2.html">ip2</a></li><li class="progressnext"><a href="7-cns.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
821
docs/supervisor-module/7-ip.html
Normal file
821
docs/supervisor-module/7-ip.html
Normal file
|
@ -0,0 +1,821 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Index Pages</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="index.html"><span class="selectedlink">supervisor</span></a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="../core-module/index.html">core</a></li>
|
||||
<li><a href="../inflections-module/index.html">inflections</a></li>
|
||||
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
||||
<li><a href="../kinds-module/index.html">kinds</a></li>
|
||||
<li><a href="../if-module/index.html">if</a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="../problems-module/index.html">problems</a></li>
|
||||
<li><a href="../index-module/index.html">index</a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../bytecode-module/index.html">bytecode</a></li>
|
||||
<li><a href="../building-module/index.html">building</a></li>
|
||||
<li><a href="../codegen-module/index.html">codegen</a></li>
|
||||
</ul><h2>Shared Modules</h2><ul>
|
||||
<li><a href="../arch-module/index.html">arch</a></li>
|
||||
<li><a href="../syntax-module/index.html">syntax</a></li>
|
||||
<li><a href="../words-module/index.html">words</a></li>
|
||||
<li><a href="../html-module/index.html">html</a></li>
|
||||
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Index Pages' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inbuild Modules</a></li><li><a href="index.html">supervisor</a></li><li><a href="index.html#7">Chapter 7: Extension Indexing</a></li><li><b>Index Pages</b></li></ul></div>
|
||||
<p class="purpose">To generate the two top-level pages in the extension mini-website.</p>
|
||||
|
||||
<ul class="toc"><li><a href="7-ip.html#SP1">§1. Writing the extensions home pages</a></li><li><a href="7-ip.html#SP2">§2. Icons for virtual machines</a></li><li><a href="7-ip.html#SP3">§3. Displaying VM restrictions</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. Writing the extensions home pages. </b>There are two of these, both with the same surround:
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">HOME_EXTPAGE</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">INDEX_EXTPAGE</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">ExtensionIndex::write</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">ExtensionIndex::write</span></span>:<br/>The Mini-Website - <a href="7-tm.html#SP2_2">§2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">content</span><span class="plain-syntax">, </span><span class="reserved-syntax">extension_census</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">F</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</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">HOMEPAGE_struct</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax"> = &</span><span class="identifier-syntax">HOMEPAGE_struct</span><span 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">(</span><span class="identifier-syntax">OUT</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><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::declare_as_HTML</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Write the head of the HTML</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="7-ip.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Write the body of the HTML</span><span class="named-paragraph-number">1.2</span></a></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">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1"></a><b>§1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the head of the HTML</span><span class="named-paragraph-number">1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_head</span><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="plain-syntax"> </span><span class="identifier-syntax">HTML::title</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">"Extensions"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::incorporate_javascript</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ic.html#SP20" class="function-link"><span class="function-syntax">Supervisor::file_from_installation</span></a><span class="plain-syntax">(</span><span class="constant-syntax">JAVASCRIPT_FOR_EXTENSIONS_IRES</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::incorporate_CSS</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ic.html#SP20" class="function-link"><span class="function-syntax">Supervisor::file_from_installation</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CSS_FOR_STANDARD_PAGES_IRES</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_head</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="7-ip.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2"></a><b>§1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the body of the HTML</span><span class="named-paragraph-number">1.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_body</span><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="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="identifier-syntax">NULL</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">4</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">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">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">"src='inform:/doc_images/extensions@2x.png' border=0 width=150 height=150"</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">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"div"</span><span class="plain-syntax">, </span><span class="string-syntax">"class=\"headingboxDark\""</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">"div"</span><span class="plain-syntax">, </span><span class="string-syntax">"class=\"headingtextWhite\""</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">"Installed Extensions"</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="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"div"</span><span class="plain-syntax">, </span><span class="string-syntax">"class=\"headingrubricWhite\""</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">"Bundles of extra rules or phrases to extend what Inform can do"</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="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="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_1" class="named-paragraph-link"><span class="named-paragraph">Write the heading details text for the page</span><span class="named-paragraph-number">1.2.1</span></a></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">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_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="7-ip.html#SP1_2_2" class="named-paragraph-link"><span class="named-paragraph">Write the main content for the page</span><span class="named-paragraph-number">1.2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_body</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="7-ip.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_1"></a><b>§1.2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the heading details text for the page</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="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">content</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">HOME_EXTPAGE:</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_1_1" class="named-paragraph-link"><span class="named-paragraph">Display the location of installed extensions</span><span class="named-paragraph-number">1.2.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_1_2" class="named-paragraph-link"><span class="named-paragraph">Display a warning about any census errors which turned up</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="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">INDEX_EXTPAGE:</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">"Whenever an extension is used, its definitions are entered into the "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"following index. (Thus, a newly installed but never-used extension "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"is not indexed yet.)."</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">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2">§1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2"></a><b>§1.2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the main content for the page</span><span class="named-paragraph-number">1.2.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">content</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">HOME_EXTPAGE:</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1" class="named-paragraph-link"><span class="named-paragraph">Display an alphabetised directory</span><span class="named-paragraph-number">1.2.2.1</span></a></span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">INDEX_EXTPAGE:</span><span class="plain-syntax"> </span><a href="7-dct.html#SP15" class="function-link"><span class="function-syntax">ExtensionDictionary::write_to_HTML</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2">§1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_1_1"></a><b>§1.2.1.1. </b>From here on, then, all the code in this section generates the main directory
|
||||
page, not the index of terms, which is all handled by
|
||||
<a href="7-dct.html#SP15" class="internal">ExtensionDictionary::write_to_HTML</a>.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Display the location of installed extensions</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">nps</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">nbi</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">ni</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">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">, </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-nst.html#SP2" class="function-link"><span class="function-syntax">Nests::get_tag</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">nest</span><span class="plain-syntax">) == </span><span class="constant-syntax">MATERIALS_NEST_TAG</span><span class="plain-syntax">) </span><span class="identifier-syntax">nps</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><a href="2-nst.html#SP2" class="function-link"><span class="function-syntax">Nests::get_tag</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">nest</span><span class="plain-syntax">) == </span><span class="constant-syntax">INTERNAL_NEST_TAG</span><span class="plain-syntax">) </span><span class="identifier-syntax">nbi</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">ni</span><span class="plain-syntax">++;</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_TAG_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"img"</span><span class="plain-syntax">, </span><span class="string-syntax">"src='inform:/doc_images/builtin_ext.png' border=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">"&nbsp;You have "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"%d extensions built-in to this copy of Inform, marked with a grey folder "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"icon in the catalogue below."</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">nbi</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ni</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">"src='inform:/doc_images/folder4.png' border=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">"&nbsp;You have no other extensions installed at present."</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">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">INDEX_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::open_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><a href="7-cns.html#SP3" class="function-link"><span class="function-syntax">ExtensionCensus::external_path</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"src='inform:/doc_images/folder4.png' border=0"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;You have %d further extension%s installed. These are marked "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"with a blue folder icon in the catalogue below. (Click it to see "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"where the file is stored on your computer.) "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"For more extensions, visit <b>www.inform7.com</b>."</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ni</span><span class="plain-syntax">, (</span><span class="identifier-syntax">ni</span><span class="plain-syntax">==1)?</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="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">nps</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">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">INDEX_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::open_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><a href="7-cns.html#SP3" class="function-link"><span class="function-syntax">ExtensionCensus::internal_path</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="constant-syntax">PROJECT_SPECIFIC_SYMBOL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;You have %d extension%s in the .materials folder for the "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"current project. (Click the purple folder icon to show the "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"location.) %s not available to other projects."</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">nps</span><span class="plain-syntax">, (</span><span class="identifier-syntax">nps</span><span class="plain-syntax">==1)?</span><span class="string-syntax">""</span><span class="plain-syntax">:</span><span class="string-syntax">"s"</span><span class="plain-syntax">, (</span><span class="identifier-syntax">nps</span><span class="plain-syntax">==1)?</span><span class="string-syntax">"This is"</span><span class="plain-syntax">:</span><span class="string-syntax">"These are"</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="7-ip.html#SP1_2_1">§1.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_1_2"></a><b>§1.2.1.2. </b>We sometimes position a warning prominently at the top of the listing,
|
||||
because otherwise its position at the bottom will be invisible unless the user
|
||||
scrolls a long way:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Display a warning about any census errors which turned up</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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">no_census_errors</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">NUMBER_CREATED</span><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax">) >= </span><span class="constant-syntax">20</span><span class="plain-syntax">)) { </span><span class="comment-syntax"> it's a short page anyway</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_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/misinstalled.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">"&nbsp;"</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"<b>Warning</b>. One or more extensions are installed incorrectly: "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"see details below."</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="7-ip.html#SP1_2_1">§1.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1"></a><b>§1.2.2.1. </b>The following is an alphabetised directory of extensions by author and then
|
||||
title, along with some useful information about them, and then a list of
|
||||
any oddities found in the external extensions area.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Display an alphabetised directory</span><span class="named-paragraph-number">1.2.2.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">key_vms</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">key_override</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">key_builtin</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">key_pspec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">key_bullet</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_1" class="named-paragraph-link"><span class="named-paragraph">Display the census radio buttons</span><span class="named-paragraph-number">1.2.2.1.1</span></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">no_entries</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NUMBER_CREATED</span><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> **</span><span class="identifier-syntax">sorted_census_results</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Memory::calloc</span><span class="plain-syntax">(</span><span class="identifier-syntax">no_entries</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">sizeof</span><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *), </span><span class="constant-syntax">EXTENSION_DICTIONARY_MREASON</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</span><span class="plain-syntax">=1; </span><span class="identifier-syntax">d</span><span class="plain-syntax"><=5; </span><span class="identifier-syntax">d</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_2" class="named-paragraph-link"><span class="named-paragraph">Start an HTML division for this sorted version of the census</span><span class="named-paragraph-number">1.2.2.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_5" class="named-paragraph-link"><span class="named-paragraph">Sort the census into the appropriate order</span><span class="named-paragraph-number">1.2.2.1.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6" class="named-paragraph-link"><span class="named-paragraph">Display the sorted version of the census</span><span class="named-paragraph-number">1.2.2.1.6</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"div"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_3" class="named-paragraph-link"><span class="named-paragraph">Print the key to any symbols used in the census lines</span><span class="named-paragraph-number">1.2.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="7-ip.html#SP1_2_2_1_4" class="named-paragraph-link"><span class="named-paragraph">Transcribe any census errors</span><span class="named-paragraph-number">1.2.2.1.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Memory::I7_array_free</span><span class="plain-syntax">(</span><span class="identifier-syntax">sorted_census_results</span><span class="plain-syntax">, </span><span class="constant-syntax">EXTENSION_DICTIONARY_MREASON</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">no_entries</span><span class="plain-syntax">, </span><span class="reserved-syntax">sizeof</span><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *));</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2">§1.2.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_1"></a><b>§1.2.2.1.1. </b>I am the first to admit that this implementation is not inspired. There
|
||||
are five radio buttons, and number 2 is selected by default.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Display the census radio buttons</span><span class="named-paragraph-number">1.2.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">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">"Sort catalogue: "</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="plain-syntax"> </span><span class="string-syntax">"href=\"#\" style=\"text-decoration: none\" "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"onclick=\"openExtra('disp1', 'plus1'); closeExtra('disp2', 'plus2'); "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"closeExtra('disp3', 'plus3'); closeExtra('disp4', 'plus4'); "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"closeExtra('disp5', 'plus5'); return false;\""</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 id=\"plus1\" src=inform:/doc_images/extrarboff.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">"&nbsp;By title"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><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_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"href=\"#\" style=\"text-decoration: none\" "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"onclick=\"closeExtra('disp1', 'plus1'); openExtra('disp2', 'plus2'); "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"closeExtra('disp3', 'plus3'); closeExtra('disp4', 'plus4'); "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"closeExtra('disp5', 'plus5'); return false;\""</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 id=\"plus2\" src=inform:/doc_images/extrarbon.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">"&nbsp;By author"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><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_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"href=\"#\" style=\"text-decoration: none\" "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"onclick=\"closeExtra('disp1', 'plus1'); closeExtra('disp2', 'plus2'); "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"openExtra('disp3', 'plus3'); closeExtra('disp4', 'plus4'); "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"closeExtra('disp5', 'plus5'); return false;\""</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 id=\"plus3\" src=inform:/doc_images/extrarboff.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">"&nbsp;By installation"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><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_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"href=\"#\" style=\"text-decoration: none\" "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"onclick=\"closeExtra('disp1', 'plus1'); closeExtra('disp2', 'plus2'); "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"closeExtra('disp3', 'plus3'); openExtra('disp4', 'plus4'); "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"closeExtra('disp5', 'plus5'); return false;\""</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 id=\"plus4\" src=inform:/doc_images/extrarboff.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">"&nbsp;By date 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">"a"</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_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"href=\"#\" style=\"text-decoration: none\" "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"onclick=\"closeExtra('disp1', 'plus1'); closeExtra('disp2', 'plus2'); "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"closeExtra('disp3', 'plus3'); closeExtra('disp4', 'plus4'); "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"openExtra('disp5', 'plus5'); return false;\""</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 id=\"plus5\" src=inform:/doc_images/extrarboff.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">"&nbsp;By word count"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><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="7-ip.html#SP1_2_2_1">§1.2.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_2"></a><b>§1.2.2.1.2. </b>Consequently, of the five divisions, number 2 is shown and the others
|
||||
hidden, by default.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Start an HTML division for this sorted version of the census</span><span class="named-paragraph-number">1.2.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="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">display</span><span class="plain-syntax"> = </span><span class="string-syntax">"none"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">d</span><span class="plain-syntax"> == </span><span class="constant-syntax">SORT_CE_BY_AUTHOR</span><span class="plain-syntax">) </span><span class="identifier-syntax">display</span><span class="plain-syntax"> = </span><span class="string-syntax">"block"</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">"div"</span><span class="plain-syntax">, </span><span class="string-syntax">"id=\"disp%d\" style=\"display: %s;\""</span><span class="plain-syntax">, </span><span class="identifier-syntax">d</span><span class="plain-syntax">, </span><span class="identifier-syntax">display</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1">§1.2.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_3"></a><b>§1.2.2.1.3. </b>The key at the foot only explicates those symbols actually used, and
|
||||
doesn't explicate the "unindexed" symbol at all, since that's actually
|
||||
just a blank image used for horizontal spacing to keep margins straight.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print the key to any symbols used in the census lines</span><span class="named-paragraph-number">1.2.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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">key_builtin</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">key_override</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">key_bullet</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">key_vms</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">key_pspec</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">"Key: "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">key_bullet</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">"%s"</span><span class="plain-syntax">, </span><span class="constant-syntax">INDEXED_SYMBOL</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">" Used&nbsp;"</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">key_builtin</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">"%s"</span><span class="plain-syntax">, </span><span class="constant-syntax">BUILT_IN_SYMBOL</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">" Built in&nbsp;"</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">key_pspec</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">"%s"</span><span class="plain-syntax">, </span><span class="constant-syntax">PROJECT_SPECIFIC_SYMBOL</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 specific&nbsp;"</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">key_override</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">"%s"</span><span class="plain-syntax">, </span><span class="constant-syntax">OVERRIDING_SYMBOL</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">" Your version overrides the one built in&nbsp;"</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">key_vms</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="7-ip.html#SP2" class="function-link"><span class="function-syntax">ExtensionIndex::write_key</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">endif</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="7-ip.html#SP1_2_2_1">§1.2.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_4"></a><b>§1.2.2.1.4. </b>Census errors are nothing more than copy errors arising on the copies
|
||||
of extensions found by the census:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe any census errors</span><span class="named-paragraph-number">1.2.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><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="identifier-syntax">no_census_errors</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_4_1" class="named-paragraph-link"><span class="named-paragraph">Include the headnote explaining what census errors are</span><span class="named-paragraph-number">1.2.2.1.4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">raw_data</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">LinkedLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">errors_reading_source_text</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">copy_error</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">, </span><span class="reserved-syntax">copy_error</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">errors_reading_source_text</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">INDEX_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::open_para</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">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">INDEX_MODULE</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">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<b>%X</b> - "</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ce.html#SP5" class="function-link"><span class="function-syntax">CopyErrors::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">CE</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="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1">§1.2.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_4_1"></a><b>§1.2.2.1.4.1. </b>We only want to warn people here: not to stop them from using Inform
|
||||
until they put matters right.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Include the headnote explaining what census errors are</span><span class="named-paragraph-number">1.2.2.1.4.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_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">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_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 align=\"left\" src=inform:/doc_images/census_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">"<b>Warning</b>. Inform checks the folder of user-installed extensions "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"each time it translates the source text, in order to keep this directory "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"page up to date. Each file must be a properly labelled extension (with "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"its titling line correctly identifying itself), and must be in the right "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"place - e.g. 'Marbles by Daphne Quilt' must have the filename 'Marbles.i7x' "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"(or just 'Marbles' with no file extension) and be stored in the folder "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"'Daphne Quilt'. The title should be at most %d characters long; the "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"author name, %d. At the last check, these rules were not being followed:"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">MAX_EXTENSION_TITLE_LENGTH</span><span class="plain-syntax">, </span><span class="constant-syntax">MAX_EXTENSION_AUTHOR_LENGTH</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="7-ip.html#SP1_2_2_1_4">§1.2.2.1.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_5"></a><b>§1.2.2.1.5. </b></p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">SORT_CE_BY_TITLE</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">SORT_CE_BY_AUTHOR</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">SORT_CE_BY_INSTALL</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">SORT_CE_BY_DATE</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">SORT_CE_BY_LENGTH</span><span class="plain-syntax"> </span><span class="constant-syntax">5</span>
|
||||
</pre>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Sort the census into the appropriate order</span><span class="named-paragraph-number">1.2.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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">, </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sorted_census_results</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">++] = </span><span class="identifier-syntax">ecd</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> (*</span><span class="identifier-syntax">criterion</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="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">d</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">SORT_CE_BY_TITLE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">criterion</span><span class="plain-syntax"> = </span><a href="7-cns.html#SP6" class="function-link"><span class="function-syntax">ExtensionCensus::compare_ecd_by_title</span></a><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SORT_CE_BY_AUTHOR:</span><span class="plain-syntax"> </span><span class="identifier-syntax">criterion</span><span class="plain-syntax"> = </span><a href="7-cns.html#SP6" class="function-link"><span class="function-syntax">ExtensionCensus::compare_ecd_by_author</span></a><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SORT_CE_BY_INSTALL:</span><span class="plain-syntax"> </span><span class="identifier-syntax">criterion</span><span class="plain-syntax"> = </span><a href="7-cns.html#SP6" class="function-link"><span class="function-syntax">ExtensionCensus::compare_ecd_by_installation</span></a><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SORT_CE_BY_DATE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">criterion</span><span class="plain-syntax"> = </span><a href="7-cns.html#SP6" class="function-link"><span class="function-syntax">ExtensionCensus::compare_ecd_by_date</span></a><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SORT_CE_BY_LENGTH:</span><span class="plain-syntax"> </span><span class="identifier-syntax">criterion</span><span class="plain-syntax"> = </span><a href="7-cns.html#SP6" class="function-link"><span class="function-syntax">ExtensionCensus::compare_ecd_by_length</span></a><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span><span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no such sorting criterion"</span><span class="plain-syntax">);</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">sorted_census_results</span><span class="plain-syntax">, (</span><span class="identifier-syntax">size_t</span><span class="plain-syntax">) </span><span class="identifier-syntax">no_entries</span><span class="plain-syntax">, </span><span class="reserved-syntax">sizeof</span><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">criterion</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1">§1.2.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6"></a><b>§1.2.2.1.6. </b>Standard rows have black text on striped background colours, these being
|
||||
the usual ones seen in Mac OS X applications such as iTunes.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">FIRST_STRIPE_COLOUR</span><span class="plain-syntax"> </span><span class="string-syntax">"#ffffff"</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">SECOND_STRIPE_COLOUR</span><span class="plain-syntax"> </span><span class="string-syntax">"#f3f6fa"</span>
|
||||
</pre>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Display the sorted version of the census</span><span class="named-paragraph-number">1.2.2.1.6</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">FIRST_STRIPE_COLOUR</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">2</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="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1" class="named-paragraph-link"><span class="named-paragraph">Show a titling row explaining the census sorting, if necessary</span><span class="named-paragraph-number">1.2.2.1.6.1</span></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">stripe</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_author_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">current_installation</span><span class="plain-syntax"> = -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><</span><span class="identifier-syntax">no_entries</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">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax"> = </span><span class="identifier-syntax">sorted_census_results</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_2" class="named-paragraph-link"><span class="named-paragraph">Insert a subtitling row in the census sorting, if necessary</span><span class="named-paragraph-number">1.2.2.1.6.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">stripe</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax"> - </span><span class="identifier-syntax">stripe</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stripe</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::first_html_column_coloured</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="constant-syntax">SECOND_STRIPE_COLOUR</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">else</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::first_html_column_coloured</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="constant-syntax">FIRST_STRIPE_COLOUR</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="7-ip.html#SP1_2_2_1_6_4" class="named-paragraph-link"><span class="named-paragraph">Print the census line for this extension</span><span class="named-paragraph-number">1.2.2.1.6.4</span></a></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">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_author_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_3" class="named-paragraph-link"><span class="named-paragraph">Show a final titling row closing the census sorting</span><span class="named-paragraph-number">1.2.2.1.6.3</span></a></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="7-ip.html#SP1_2_2_1">§1.2.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_1"></a><b>§1.2.2.1.6.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show a titling row explaining the census sorting, if necessary</span><span class="named-paragraph-number">1.2.2.1.6.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">switch</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SORT_CE_BY_TITLE:</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_1" class="named-paragraph-link"><span class="named-paragraph">Begin a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.1</span></a></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">"Extensions in alphabetical order"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_2" class="named-paragraph-link"><span class="named-paragraph">End a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SORT_CE_BY_DATE:</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_1" class="named-paragraph-link"><span class="named-paragraph">Begin a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.1</span></a></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">"Extensions in order of date used (most recent first)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_2" class="named-paragraph-link"><span class="named-paragraph">End a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SORT_CE_BY_LENGTH:</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_1" class="named-paragraph-link"><span class="named-paragraph">Begin a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.1</span></a></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">"Extensions in order of word count (longest first)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_2" class="named-paragraph-link"><span class="named-paragraph">End a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6">§1.2.2.1.6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_2"></a><b>§1.2.2.1.6.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Insert a subtitling row in the census sorting, if necessary</span><span class="named-paragraph-number">1.2.2.1.6.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">d</span><span class="plain-syntax"> == </span><span class="constant-syntax">SORT_CE_BY_AUTHOR</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Str::ne</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_author_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">author_name</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_author_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">author_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_1" class="named-paragraph-link"><span class="named-paragraph">Begin a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_2_1" class="named-paragraph-link"><span class="named-paragraph">Print the author's line in the extension census table</span><span class="named-paragraph-number">1.2.2.1.6.2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_2" class="named-paragraph-link"><span class="named-paragraph">End a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">stripe</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">d</span><span class="plain-syntax"> == </span><span class="constant-syntax">SORT_CE_BY_INSTALL</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="7-cns.html#SP5" class="function-link"><span class="function-syntax">ExtensionCensus::installation_region</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">) != </span><span class="identifier-syntax">current_installation</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_installation</span><span class="plain-syntax"> = </span><a href="7-cns.html#SP5" class="function-link"><span class="function-syntax">ExtensionCensus::installation_region</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_1" class="named-paragraph-link"><span class="named-paragraph">Begin a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_2_2" class="named-paragraph-link"><span class="named-paragraph">Print the installation region in the extension census table</span><span class="named-paragraph-number">1.2.2.1.6.2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_2" class="named-paragraph-link"><span class="named-paragraph">End a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">stripe</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6">§1.2.2.1.6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_3"></a><b>§1.2.2.1.6.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show a final titling row closing the census sorting</span><span class="named-paragraph-number">1.2.2.1.6.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="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_1" class="named-paragraph-link"><span class="named-paragraph">Begin a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.1</span></a></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">"%d extensions installed"</span><span class="plain-syntax">, </span><span class="identifier-syntax">no_entries</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="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_1_2" class="named-paragraph-link"><span class="named-paragraph">End a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6">§1.2.2.1.6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_1_1"></a><b>§1.2.2.1.6.1.1. </b>Black text on a grey background.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">CENSUS_TITLING_BG</span><span class="plain-syntax"> </span><span class="string-syntax">"#808080"</span>
|
||||
</pre>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Begin a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">span</span><span class="plain-syntax"> = </span><span class="constant-syntax">4</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">d</span><span class="plain-syntax"> == </span><span class="constant-syntax">SORT_CE_BY_TITLE</span><span class="plain-syntax">) </span><span class="identifier-syntax">span</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">HTML::first_html_column_coloured</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="constant-syntax">CENSUS_TITLING_BG</span><span class="plain-syntax">, </span><span class="identifier-syntax">span</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">"ffffff"</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">"&nbsp;"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6_1">§1.2.2.1.6.1</a> (three times), <a href="7-ip.html#SP1_2_2_1_6_2">§1.2.2.1.6.2</a> (twice), <a href="7-ip.html#SP1_2_2_1_6_3">§1.2.2.1.6.3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_1_2"></a><b>§1.2.2.1.6.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">End a tinted census line</span><span class="named-paragraph-number">1.2.2.1.6.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::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::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="7-ip.html#SP1_2_2_1_6_1">§1.2.2.1.6.1</a> (three times), <a href="7-ip.html#SP1_2_2_1_6_2">§1.2.2.1.6.2</a> (twice), <a href="7-ip.html#SP1_2_2_1_6_3">§1.2.2.1.6.3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_2_1"></a><b>§1.2.2.1.6.2.1. </b>Used only in "by author".
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print the author's line in the extension census table</span><span class="named-paragraph-number">1.2.2.1.6.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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">raw_author_name</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cu</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">cn</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">j</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">j</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i</span><span class="plain-syntax">; </span><span class="identifier-syntax">j</span><span class="plain-syntax"> < </span><span class="identifier-syntax">no_entries</span><span class="plain-syntax">; </span><span class="identifier-syntax">j</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ecd2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">sorted_census_results</span><span class="plain-syntax">[</span><span class="identifier-syntax">j</span><span 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::ne</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_author_name</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">author_name</span><span class="plain-syntax">)) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="7-cns.html#SP5" class="function-link"><span class="function-syntax">ExtensionCensus::ecd_used</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd2</span><span class="plain-syntax">)) </span><span class="identifier-syntax">cu</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">cn</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">"&nbsp;&nbsp;"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">, </span><span class="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">"%d extension%s"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cu</span><span class="plain-syntax">+</span><span class="identifier-syntax">cn</span><span class="plain-syntax">, (</span><span class="identifier-syntax">cu</span><span class="plain-syntax">+</span><span class="identifier-syntax">cn</span><span class="plain-syntax">==1)?</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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">cu</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">cn</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">", unused"</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">cu</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">cn</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">", both unused"</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">cu</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">cn</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">", all unused"</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">cn</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">cu</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">", used"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">cn</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">cu</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">", both used"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">cn</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">cu</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">", all used"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">cn</span><span class="plain-syntax">+</span><span class="identifier-syntax">cu</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">", %d used, %d unused"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cu</span><span class="plain-syntax">, </span><span class="identifier-syntax">cn</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">"span"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6_2">§1.2.2.1.6.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_2_2"></a><b>§1.2.2.1.6.2.2. </b>Used only in "by installation".
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print the installation region in the extension census table</span><span class="named-paragraph-number">1.2.2.1.6.2.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">current_installation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Supplied in the .materials folder&nbsp;&nbsp;"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">, </span><span class="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">"%p"</span><span class="plain-syntax">, </span><a href="7-cns.html#SP3" class="function-link"><span class="function-syntax">ExtensionCensus::internal_path</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Built in to Inform"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax">: </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"User installed but overriding a built-in extension"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax">:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"User installed&nbsp;&nbsp;"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">, </span><span class="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">"%p"</span><span class="plain-syntax">, </span><a href="7-cns.html#SP3" class="function-link"><span class="function-syntax">ExtensionCensus::external_path</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6_2">§1.2.2.1.6.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_4"></a><b>§1.2.2.1.6.4. </b></p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">UNINDEXED_SYMBOL</span><span class="plain-syntax"> </span><span class="string-syntax">"border=\"0\" src=\"inform:/doc_images/unindexed_bullet.png\""</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">INDEXED_SYMBOL</span><span class="plain-syntax"> </span><span class="string-syntax">"border=\"0\" src=\"inform:/doc_images/indexed_bullet.png\""</span>
|
||||
</pre>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print the census line for this extension</span><span class="named-paragraph-number">1.2.2.1.6.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="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_4_1" class="named-paragraph-link"><span class="named-paragraph">Print column 1 of the census line</span><span class="named-paragraph-number">1.2.2.1.6.4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::next_html_column_nw</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">d</span><span class="plain-syntax"> != </span><span class="constant-syntax">SORT_CE_BY_TITLE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_4_2" class="named-paragraph-link"><span class="named-paragraph">Print column 2 of the census line</span><span class="named-paragraph-number">1.2.2.1.6.4.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::next_html_column_nw</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="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_4_3" class="named-paragraph-link"><span class="named-paragraph">Print column 3 of the census line</span><span class="named-paragraph-number">1.2.2.1.6.4.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::next_html_column_w</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="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_4_4" class="named-paragraph-link"><span class="named-paragraph">Print column 4 of the census line</span><span class="named-paragraph-number">1.2.2.1.6.4.4</span></a></span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6">§1.2.2.1.6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_4_1"></a><b>§1.2.2.1.6.4.1. </b>The appearance of the line is
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
<p>(bullet) The Title (by The Author) (VM requirement icons)</p>
|
||||
</blockquote>
|
||||
|
||||
<p class="commentary">where all is optional except the title part.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print column 1 of the census line</span><span class="named-paragraph-number">1.2.2.1.6.4.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">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bulletornot</span><span class="plain-syntax"> = </span><span class="constant-syntax">UNINDEXED_SYMBOL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="7-cns.html#SP5" class="function-link"><span class="function-syntax">ExtensionCensus::ecd_used</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">bulletornot</span><span class="plain-syntax"> = </span><span class="constant-syntax">INDEXED_SYMBOL</span><span class="plain-syntax">; </span><span class="identifier-syntax">key_bullet</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;"</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">"%s"</span><span class="plain-syntax">, </span><span class="identifier-syntax">bulletornot</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="2-wrk.html#SP15" class="function-link"><span class="function-syntax">Works::begin_extension_link</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">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">, </span><a href="7-cns.html#SP5" class="function-link"><span class="function-syntax">ExtensionCensus::ecd_rubric</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">d</span><span class="plain-syntax"> != </span><span class="constant-syntax">SORT_CE_BY_AUTHOR</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">"404040"</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">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">raw_title</span><span 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">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">raw_title</span><span class="plain-syntax">) +</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">raw_author_name</span><span class="plain-syntax">) > </span><span class="constant-syntax">45</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">"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&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="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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"by %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">raw_author_name</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="reserved-syntax">else</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">"404040"</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">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">raw_title</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="plain-syntax"> </span><a href="2-wrk.html#SP15" class="function-link"><span class="function-syntax">Works::end_extension_link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">compatibility_specification</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">compatibility</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="identifier-syntax">parsed_from</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip.html#SP1_2_2_1_6_4_1_1" class="named-paragraph-link"><span class="named-paragraph">Append icons which signify the VM requirements of the extension</span><span class="named-paragraph-number">1.2.2.1.6.4.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">key_vms</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6_4">§1.2.2.1.6.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_4_1_1"></a><b>§1.2.2.1.6.4.1.1. </b>VM requirements are parsed by feeding them into the lexer and calling the
|
||||
same routines as would be used when parsing headings about VM requirements
|
||||
in a normal run of Inform. Note that because the requirements are in round
|
||||
brackets, which the lexer will split off as distinct words, we can ignore
|
||||
the first and last word and just look at what is in between:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Append icons which signify the VM requirements of the extension</span><span class="named-paragraph-number">1.2.2.1.6.4.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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="identifier-syntax">parsed_from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
||||
<span class="plain-syntax"> </span><a href="7-ip.html#SP3" class="function-link"><span class="function-syntax">ExtensionIndex::write_icons</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6_4_1">§1.2.2.1.6.4.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_4_2"></a><b>§1.2.2.1.6.4.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print column 2 of the census line</span><span class="named-paragraph-number">1.2.2.1.6.4.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VersionNumbers::is_null</span><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">version</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">"v&nbsp;%v"</span><span class="plain-syntax">, &(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">version</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</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">"span"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6_4">§1.2.2.1.6.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_4_3"></a><b>§1.2.2.1.6.4.3. </b></p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">BUILT_IN_SYMBOL</span><span class="plain-syntax"> </span><span class="string-syntax">"border=\"0\" src=\"inform:/doc_images/builtin_ext.png\""</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">OVERRIDING_SYMBOL</span><span class="plain-syntax"> </span><span class="string-syntax">"border=\"0\" src=\"inform:/doc_images/override_ext.png\""</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PROJECT_SPECIFIC_SYMBOL</span><span class="plain-syntax"> </span><span class="string-syntax">"border=\"0\" src=\"inform:/doc_images/pspec_ext.png\""</span>
|
||||
</pre>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print column 3 of the census line</span><span class="named-paragraph-number">1.2.2.1.6.4.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">opener</span><span class="plain-syntax"> = </span><span class="string-syntax">"src='inform:/doc_images/folder4.png' border=0"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-nst.html#SP2" class="function-link"><span class="function-syntax">Nests::get_tag</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">nest</span><span class="plain-syntax">) == </span><span class="constant-syntax">INTERNAL_NEST_TAG</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">opener</span><span class="plain-syntax"> = </span><span class="constant-syntax">BUILT_IN_SYMBOL</span><span class="plain-syntax">; </span><span class="identifier-syntax">key_builtin</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">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">overriding_a_built_in_extension</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">opener</span><span class="plain-syntax"> = </span><span class="constant-syntax">OVERRIDING_SYMBOL</span><span class="plain-syntax">; </span><span class="identifier-syntax">key_override</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><a href="2-nst.html#SP2" class="function-link"><span class="function-syntax">Nests::get_tag</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">nest</span><span class="plain-syntax">) == </span><span class="constant-syntax">MATERIALS_NEST_TAG</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">opener</span><span class="plain-syntax"> = </span><span class="constant-syntax">PROJECT_SPECIFIC_SYMBOL</span><span class="plain-syntax">; </span><span class="identifier-syntax">key_pspec</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><a href="2-nst.html#SP2" class="function-link"><span class="function-syntax">Nests::get_tag</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">nest</span><span class="plain-syntax">) == </span><span class="constant-syntax">INTERNAL_NEST_TAG</span><span class="plain-syntax">)</span>
|
||||
<span class="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">"%s"</span><span class="plain-syntax">, </span><span class="identifier-syntax">opener</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">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">INDEX_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">area</span><span class="plain-syntax"> = </span><a href="4-em.html#SP3" class="function-link"><span class="function-syntax">ExtensionManager::path_within_nest</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">nest</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::Javascript::open_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">area</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="identifier-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">raw_author_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">opener</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6_4">§1.2.2.1.6.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2_1_6_4_4"></a><b>§1.2.2.1.6.4.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Print column 4 of the census line</span><span class="named-paragraph-number">1.2.2.1.6.4.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="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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">d</span><span class="plain-syntax"> == </span><span class="constant-syntax">SORT_CE_BY_DATE</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">d</span><span class="plain-syntax"> == </span><span class="constant-syntax">SORT_CE_BY_INSTALL</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><a href="2-wrk.html#SP12" class="function-link"><span class="function-syntax">Works::get_usage_date</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">d</span><span class="plain-syntax"> == </span><span class="constant-syntax">SORT_CE_BY_LENGTH</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-wrk.html#SP12" class="function-link"><span class="function-syntax">Works::forgot</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"I did read this, but forgot"</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><a href="2-wrk.html#SP12" class="function-link"><span class="function-syntax">Works::never</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"I've never read this"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%d words"</span><span class="plain-syntax">, </span><a href="2-wrk.html#SP12" class="function-link"><span class="function-syntax">Works::get_word_count</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">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">Str::len</span><span class="plain-syntax">(</span><a href="7-cns.html#SP5" class="function-link"><span class="function-syntax">ExtensionCensus::ecd_rubric</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</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><a href="7-cns.html#SP5" class="function-link"><span class="function-syntax">ExtensionCensus::ecd_rubric</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</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">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip.html#SP1_2_2_1_6_4">§1.2.2.1.6.4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. Icons for virtual machines. </b>And everything else is cosmetic: printing, or showing icons to signify,
|
||||
the current VM or some set of permitted VMs. The following plots the
|
||||
icon associated with a given minor VM, and explicates what the icons mean:
|
||||
</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">ExtensionIndex::plot_icon</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">ExtensionIndex::plot_icon</span></span>:<br/><a href="7-ip.html#SP3">§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">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span 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">VM</span><span class="plain-syntax">-></span><span class="identifier-syntax">VM_image</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/%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="identifier-syntax">VM_image</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">"&nbsp;"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionIndex::write_key</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">ExtensionIndex::write_key</span></span>:<br/><a href="7-ip.html#SP1_2_2_1_3">§1.2.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="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Extensions compatible with specific story file formats only: "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="identifier-syntax">target_vm</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VM</span><span class="plain-syntax">-></span><span class="identifier-syntax">with_debugging_enabled</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">; </span><span class="comment-syntax"> avoids listing twice</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">++ > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="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="7-ip.html#SP2" class="function-link"><span class="function-syntax">ExtensionIndex::plot_icon</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TargetVMs::write</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3"></a><b>§3. Displaying VM restrictions. </b>Given a word range, we describe the result as concisely as we can with a
|
||||
row of icons (but do not bother for the common case where some extension
|
||||
has no restriction on its use).
|
||||
</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">ExtensionIndex::write_icons</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">ExtensionIndex::write_icons</span></span>:<br/><a href="7-ip.html#SP1_2_2_1_6_4_1_1">§1.2.2.1.6.4.1.1</a><br/>Individual Pages - <a href="7-ip2.html#SP2_2_1_2">§2.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="identifier-syntax">compatibility_specification</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">something</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">everything</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">target_vm</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VM</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="identifier-syntax">target_vm</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Compatibility::with</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">something</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">everything</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">something</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">"none"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">everything</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">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">, </span><span class="identifier-syntax">target_vm</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Compatibility::with</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">TargetVMs::debug_enabled</span><span class="plain-syntax">(</span><span class="identifier-syntax">VM</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><a href="7-ip.html#SP2" class="function-link"><span class="function-syntax">ExtensionIndex::plot_icon</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">VM</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="7-cns.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-tm.html">tm</a></li><li class="progresssection"><a href="7-dct.html">dct</a></li><li class="progresssection"><a href="7-cns.html">cns</a></li><li class="progresscurrent">ip</li><li class="progresssection"><a href="7-ip2.html">ip2</a></li><li class="progressnext"><a href="7-ip2.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Documentation</title>
|
||||
<title>Individual Pages</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
|
@ -61,67 +61,32 @@ function togglePopup(material_id) {
|
|||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Documentation' generated by Inweb-->
|
||||
<!--Weave of 'Individual Pages' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inbuild Modules</a></li><li><a href="index.html">supervisor</a></li><li><a href="index.html#7">Chapter 7: Extension Indexing</a></li><li><b>Documentation</b></li></ul></div>
|
||||
<p class="purpose">To generate HTML documentation for extensions.</p>
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inbuild Modules</a></li><li><a href="index.html">supervisor</a></li><li><a href="index.html#7">Chapter 7: Extension Indexing</a></li><li><b>Individual Pages</b></li></ul></div>
|
||||
<p class="purpose">To generate the individual pages on extensions in the extension mini-website.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. </b>Each extension gets its own page in the external documentation area, but
|
||||
this page can have two forms:
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. </b><a href="7-tm.html#SP2" class="internal">ExtensionWebsite::go</a> calls the following function to make either a
|
||||
detailed or a sketchy documentation page on an extension, supplying either
|
||||
a non-null <span class="extract"><span class="extract-syntax">E</span></span> for details, or a non-null <span class="extract"><span class="extract-syntax">ecd</span></span> for a sketch.
|
||||
</p>
|
||||
|
||||
<p class="commentary">First, the deluxe version, produced if a project <span class="extract"><span class="extract-syntax">proj</span></span> has successfully used
|
||||
the extension on this run and we therefore know a lot about the extension —
|
||||
</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">ExtensionDocumentation::write_detailed</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">ExtensionDocumentation::write_detailed</span></span>:<br/>Census - <a href="7-cns.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dcm.html#SP3" class="function-link"><span class="function-syntax">ExtensionDocumentation::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">proj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>Second, the ordinaire version, where a census has detected the extension
|
||||
but Inform has apparently never used it. <span class="extract"><span class="extract-syntax">force_update</span></span> here is <span class="extract"><span class="extract-syntax">TRUE</span></span> if a
|
||||
full <span class="extract"><span class="extract-syntax">-census</span></span> run is under way, <span class="extract"><span class="extract-syntax">FALSE</span></span> if this is instead merely an update,
|
||||
in which case we do not overwrite an existing documentation file. See below.
|
||||
</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">ExtensionDocumentation::write_sketchy</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">ExtensionDocumentation::write_sketchy</span></span>:<br/>Census - <a href="7-cns.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">force_update</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dcm.html#SP3" class="function-link"><span class="function-syntax">ExtensionDocumentation::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">force_update</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3"></a><b>§3. </b>Thus we pass two arguments, <span class="extract"><span class="extract-syntax">ecd</span></span> and <span class="extract"><span class="extract-syntax">E</span></span>, to <span class="extract"><span class="extract-syntax">ExtensionDocumentation::write</span></span>:
|
||||
one is a valid pointer, the other null. If <span class="extract"><span class="extract-syntax">E</span></span> is valid, we can write a full
|
||||
page: if <span class="extract"><span class="extract-syntax">ecd</span></span> is valid, only a sketchy one.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The outer shell routine calls the inner one first to generate the main
|
||||
<p class="commentary">The outer shell function calls the inner one first to generate the main
|
||||
page of the documentation (where <span class="extract"><span class="extract-syntax">eg_number</span></span> is <span class="extract"><span class="extract-syntax">-1</span></span>), then uses its return
|
||||
value (the number of examples provided, which may be 0) to generate
|
||||
associated files for each example. For instance, we might end up making,
|
||||
in sequence,
|
||||
associated files for each example.w
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> Documentation/Extensions/Emily Short/Locksmith.html</span>
|
||||
<span class="plain-syntax"> Documentation/Extensions/Emily Short/Locksmith-eg1.html</span>
|
||||
<span class="plain-syntax"> Documentation/Extensions/Emily Short/Locksmith-eg2.html</span>
|
||||
<span class="plain-syntax"> Documentation/Extensions/Emily Short/Locksmith-eg3.html</span>
|
||||
<span class="plain-syntax"> Documentation/Extensions/Emily Short/Locksmith-eg4.html</span>
|
||||
</pre>
|
||||
<p class="commentary">where these are pathnames relative to the external resources area.
|
||||
</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">ExtensionDocumentation::write</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">ExtensionDocumentation::write</span></span>:<br/><a href="7-dcm.html#SP1">§1</a>, <a href="7-dcm.html#SP2">§2</a>, <a href="7-dcm.html#SP4_1">§4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionPages::write_page</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">ExtensionPages::write_page</span></span>:<br/><a href="7-ip2.html#SP2_1">§2.1</a><br/>The Mini-Website - <a href="7-tm.html#SP2_3">§2.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">force_update</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">, </span><span class="identifier-syntax">eg_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">eg_count</span><span class="plain-syntax"> = </span><a href="7-dcm.html#SP4" class="function-link"><span class="function-syntax">ExtensionDocumentation::write_page</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">force_update</span><span class="plain-syntax">, </span><span class="identifier-syntax">proj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">eg_count</span><span class="plain-syntax"> = </span><a href="7-ip2.html#SP2" class="function-link"><span class="function-syntax">ExtensionPages::write_page_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">force_update</span><span class="plain-syntax">, </span><span class="identifier-syntax">proj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax">=1; </span><span class="identifier-syntax">c</span><span class="plain-syntax"><=</span><span class="identifier-syntax">eg_count</span><span class="plain-syntax">; </span><span class="identifier-syntax">c</span><span class="plain-syntax">++)</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dcm.html#SP4" class="function-link"><span class="function-syntax">ExtensionDocumentation::write_page</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">, </span><span class="identifier-syntax">force_update</span><span class="plain-syntax">, </span><span class="identifier-syntax">proj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="7-ip2.html#SP2" class="function-link"><span class="function-syntax">ExtensionPages::write_page_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">, </span><span class="identifier-syntax">force_update</span><span class="plain-syntax">, </span><span class="identifier-syntax">proj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4"></a><b>§4. </b>Here then is the nub of it. An ECD is not really enough information to go on.
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>Here then is the nub of it. An ECD is not really enough information to go on.
|
||||
We are not always obliged to make a sketchy page from an ECD: we decide against
|
||||
in a normal run where a page exists for it already, as otherwise a user with
|
||||
many extensions installed would detect an annoying slight delay on every run
|
||||
|
@ -136,27 +101,21 @@ is any, as well as the correct identifying headings and requirements.
|
|||
</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">ExtensionDocumentation::write_page</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">ExtensionDocumentation::write_page</span></span>:<br/><a href="7-dcm.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionPages::write_page_inner</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">ExtensionPages::write_page_inner</span></span>:<br/><a href="7-ip2.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">eg_number</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">force_update</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">) </span><span class="identifier-syntax">work</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">E</span><span class="plain-syntax">) </span><span class="identifier-syntax">work</span><span class="plain-syntax"> = </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"write_page incorrectly called"</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">leaf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">leaf</span><span class="plain-syntax">, </span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">title</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">eg_number</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">leaf</span><span class="plain-syntax">, </span><span class="string-syntax">"-eg%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">eg_number</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="7-dcm.html#SP6" class="function-link"><span class="function-syntax">ExtensionDocumentation::location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">leaf</span><span class="plain-syntax">, </span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">author_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><a href="7-tm.html#SP5" class="function-link"><span class="function-syntax">ExtensionWebsite::page_URL</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="identifier-syntax">eg_number</span><span 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">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">page_exists_already</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TextFiles::exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">EXTENSIONS_CENSUS</span><span class="plain-syntax">, </span><span class="string-syntax">"Write %s (%X)/%d %s: %f\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">)?</span><span class="string-syntax">"ecd"</span><span class="plain-syntax">:</span><span class="string-syntax">" ef"</span><span class="plain-syntax">, </span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="identifier-syntax">eg_number</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">page_exists_already</span><span class="plain-syntax">)?</span><span class="string-syntax">"exists"</span><span class="plain-syntax">:</span><span class="string-syntax">"does not exist"</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">page_exists_already</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">force_update</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-dcm.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">Convert ECD to a text-only E</span><span class="named-paragraph-number">4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="comment-syntax"> ensure no requests sent for further pages about the ECD: see below</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="7-ip2.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Convert ECD to a text-only E</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Pathnames::create_in_file_system</span><span class="plain-syntax">(</span><span class="identifier-syntax">Filenames::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">)) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> </span><span class="identifier-syntax">DOCF_struct</span><span class="plain-syntax">;</span>
|
||||
|
@ -165,34 +124,36 @@ is any, as well as the correct identifying headings and requirements.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="comment-syntax"> if we lack permissions, e.g., then write no documentation</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">no_egs</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="7-dcm.html#SP4_2" class="named-paragraph-link"><span class="named-paragraph">Write the actual extension documentation page</span><span class="named-paragraph-number">4.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip2.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Write the actual extension documentation page</span><span class="named-paragraph-number">2.2</span></a></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">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">leaf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">no_egs</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4_1"></a><b>§4.1. </b>The reader may wonder why we perform the conversion in this slightly recursive
|
||||
way, by calling our parent routine again. Wouldn't it be simpler just to set
|
||||
<p class="commentary firstcommentary"><a id="SP2_1"></a><b>§2.1. </b>The reader may wonder why we perform the conversion in this slightly recursive
|
||||
way, by calling our parent function again. Wouldn't it be simpler just to set
|
||||
<span class="extract"><span class="extract-syntax">ecd</span></span> to null and let events take their course? The answer is that this would
|
||||
fail if there were examples, because we would return (say) 3 for the number
|
||||
of examples, and then the routine would be called 3 more times — but with
|
||||
of examples, and then the function would be called 3 more times — but with
|
||||
the original ECD as argument each time: that would mean reading the file
|
||||
thrice more, reconverting to E each time. So we restart the process from
|
||||
our E, and return 0 in response to the ECD call to prevent further ECD calls.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Convert ECD to a text-only E</span><span class="named-paragraph-number">4.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Convert ECD to a text-only E</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><span class="identifier-syntax">Feeds::feed_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="string-syntax">"This sentence provides a firebreak, no more. "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><a href="7-dcm.html#SP5" class="function-link"><span class="function-syntax">ExtensionDocumentation::obtain_extension</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="identifier-syntax">proj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">E</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="comment-syntax"> shouldn't happen: it was there only moments ago</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cps.html#SP7" class="function-link"><span class="function-syntax">Copies::get_source_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dcm.html#SP3" class="function-link"><span class="function-syntax">ExtensionDocumentation::write</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">force_update</span><span class="plain-syntax">, </span><span class="identifier-syntax">proj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">page_exists_already</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">force_update</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Feeds::feed_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="string-syntax">"This sentence provides a firebreak, no more. "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><a href="4-em.html#SP4" class="function-link"><span class="function-syntax">ExtensionManager::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">-></span><span class="element-syntax">found_as</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">E</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="comment-syntax"> but shouldn't happen: it was there only moments ago</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cps.html#SP7" class="function-link"><span class="function-syntax">Copies::get_source_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="7-ip2.html#SP1" class="function-link"><span class="function-syntax">ExtensionPages::write_page</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">force_update</span><span class="plain-syntax">, </span><span class="identifier-syntax">proj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-dcm.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_2"></a><b>§4.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the actual extension documentation page</span><span class="named-paragraph-number">4.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip2.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_2"></a><b>§2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the actual extension documentation page</span><span class="named-paragraph-number">2.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -207,39 +168,47 @@ our E, and return 0 in response to the ECD call to prevent further ECD calls.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_head</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::begin_body</span><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="plain-syntax"> </span><span class="identifier-syntax">HTML::incorporate_HTML</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ic.html#SP20" class="function-link"><span class="function-syntax">Supervisor::file_from_installation</span></a><span class="plain-syntax">(</span><span class="constant-syntax">EXTENSION_DOCUMENTATION_MODEL_IRES</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-dcm.html#SP4_2_1" class="named-paragraph-link"><span class="named-paragraph">Write documentation for a specific extension into the page</span><span class="named-paragraph-number">4.2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip2.html#SP2_2_1" class="named-paragraph-link"><span class="named-paragraph">Write documentation for a specific extension into the page</span><span class="named-paragraph-number">2.2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_body</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="7-dcm.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_2_1"></a><b>§4.2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write documentation for a specific extension into the page</span><span class="named-paragraph-number">4.2.1</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip2.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_2_1"></a><b>§2.2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write documentation for a specific extension into the page</span><span class="named-paragraph-number">2.2.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">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><a href="2-wrk.html#SP10" class="function-link"><span class="function-syntax">Works::is_standard_rules</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">work</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-dcm.html#SP4_2_1_1" class="named-paragraph-link"><span class="named-paragraph">Write Javascript paste icon for source text to include this extension</span><span class="named-paragraph-number">4.2.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip2.html#SP2_2_1_1" class="named-paragraph-link"><span class="named-paragraph">Write Javascript paste icon for source text to include this extension</span><span class="named-paragraph-number">2.2.1.1</span></a></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">"<b>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-wrk.html#SP5" class="function-link"><span class="function-syntax">Works::write_to_HTML_file</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">work</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</b>"</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">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="named-paragraph-container code-font"><a href="7-dcm.html#SP4_2_1_2" class="named-paragraph-link"><span class="named-paragraph">Write up any restrictions on VM usage</span><span class="named-paragraph-number">4.2.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">E</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="7-dcm.html#SP4_2_1_3" class="named-paragraph-link"><span class="named-paragraph">Write up the version number, if any, and location</span><span class="named-paragraph-number">4.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="7-ip2.html#SP2_2_1_2" class="named-paragraph-link"><span class="named-paragraph">Write up any restrictions on VM usage</span><span class="named-paragraph-number">2.2.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">E</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="7-ip2.html#SP2_2_1_3" class="named-paragraph-link"><span class="named-paragraph">Write up the version number, if any, and location</span><span class="named-paragraph-number">2.2.1.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"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><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">E</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="7-dcm.html#SP4_2_1_4" class="named-paragraph-link"><span class="named-paragraph">Write up the rubric, if any</span><span class="named-paragraph-number">4.2.1.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">E</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="7-dcm.html#SP4_2_1_5" class="named-paragraph-link"><span class="named-paragraph">Write up the table of contents for the supplied documentation, if any</span><span class="named-paragraph-number">4.2.1.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">E</span><span class="plain-syntax">) </span><span class="identifier-syntax">Extensions::Files::document_in_detail</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">endif</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">E</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="7-dcm.html#SP4_2_1_6" class="named-paragraph-link"><span class="named-paragraph">Write up the supplied documentation, if any</span><span class="named-paragraph-number">4.2.1.6</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax"> = </span><a href="7-tm.html#SP5" class="function-link"><span class="function-syntax">ExtensionWebsite::page_URL</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">work</span><span class="plain-syntax">, -1);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">leaf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Filenames::write_unextended_leafname</span><span class="plain-syntax">(</span><span class="identifier-syntax">leaf</span><span class="plain-syntax">, </span><span class="identifier-syntax">B</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip2.html#SP2_2_1_4" class="named-paragraph-link"><span class="named-paragraph">Write up the rubric, if any</span><span class="named-paragraph-number">2.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="7-ip2.html#SP2_2_1_5" class="named-paragraph-link"><span class="named-paragraph">Write up the table of contents for the supplied documentation, if any</span><span class="named-paragraph-number">2.2.1.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Extensions::Files::document_in_detail</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-ip2.html#SP2_2_1_6" class="named-paragraph-link"><span class="named-paragraph">Write up the supplied documentation, if any</span><span class="named-paragraph-number">2.2.1.6</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">leaf</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</span><span class="plain-syntax">(</span><span class="string-syntax">"hr"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-dcm.html#SP4_2">§4.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_2_1_1"></a><b>§4.2.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write Javascript paste icon for source text to include this extension</span><span class="named-paragraph-number">4.2.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip2.html#SP2_2">§2.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_2_1_1"></a><b>§2.2.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write Javascript paste icon for source text to include this extension</span><span class="named-paragraph-number">2.2.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -249,19 +218,19 @@ our E, and return 0 in response to the ECD call to prevent further ECD calls.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">inclusion_text</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">"&nbsp;"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-dcm.html#SP4_2_1">§4.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_2_1_2"></a><b>§4.2.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write up any restrictions on VM usage</span><span class="named-paragraph-number">4.2.1.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip2.html#SP2_2_1">§2.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_2_1_2"></a><b>§2.2.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write up any restrictions on VM usage</span><span class="named-paragraph-number">2.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">compatibility_specification</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">compatibility</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="identifier-syntax">parsed_from</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S&nbsp;"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="identifier-syntax">parsed_from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="7-cns.html#SP10" class="function-link"><span class="function-syntax">ExtensionCensus::write_icons</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="7-ip.html#SP3" class="function-link"><span class="function-syntax">ExtensionIndex::write_icons</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-dcm.html#SP4_2_1">§4.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_2_1_3"></a><b>§4.2.1.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write up the version number, if any, and location</span><span class="named-paragraph-number">4.2.1.3</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip2.html#SP2_2_1">§2.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_2_1_3"></a><b>§2.2.1.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write up the version number, if any, and location</span><span class="named-paragraph-number">2.2.1.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -272,8 +241,8 @@ our E, and return 0 in response to the ECD call to prevent further ECD calls.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" built in to Inform"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-dcm.html#SP4_2_1">§4.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_2_1_4"></a><b>§4.2.1.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write up the rubric, if any</span><span class="named-paragraph-number">4.2.1.4</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip2.html#SP2_2_1">§2.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_2_1_4"></a><b>§2.2.1.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write up the rubric, if any</span><span class="named-paragraph-number">2.2.1.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -284,14 +253,14 @@ our E, and return 0 in response to the ECD call to prevent further ECD calls.
|
|||
<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">"<i>%S</i>"</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">extra_credit_as_lexed</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="7-dcm.html#SP4_2_1">§4.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_2_1_5"></a><b>§4.2.1.5. </b>This appears above the definition paragraphs because it tends to be only
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip2.html#SP2_2_1">§2.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_2_1_5"></a><b>§2.2.1.5. </b>This appears above the definition paragraphs because it tends to be only
|
||||
large extensions which provide TOCs: and they, ipso facto, make many definitions.
|
||||
If the TOC were directly at the top of the supplied documentation, it might
|
||||
easily be scrolled down off screen when the user first visits the page.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write up the table of contents for the supplied documentation, if any</span><span class="named-paragraph-number">4.2.1.5</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write up the table of contents for the supplied documentation, if any</span><span class="named-paragraph-number">2.2.1.5</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -301,8 +270,8 @@ easily be scrolled down off screen when the user first visits the page.
|
|||
<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="7-dcm.html#SP4_2_1">§4.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_2_1_6"></a><b>§4.2.1.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write up the supplied documentation, if any</span><span class="named-paragraph-number">4.2.1.6</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip2.html#SP2_2_1">§2.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_2_1_6"></a><b>§2.2.1.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write up the supplied documentation, if any</span><span class="named-paragraph-number">2.2.1.6</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -315,64 +284,9 @@ easily be scrolled down off screen when the user first visits the page.
|
|||
<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="7-dcm.html#SP4_2_1">§4.2.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5"></a><b>§5. </b>This is where we load an extension purely to look at its supplied
|
||||
documentation.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionDocumentation::obtain_extension</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">ExtensionDocumentation::obtain_extension</span></span>:<br/><a href="7-dcm.html#SP4_1">§4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax"> = </span><a href="2-rqr.html#SP2" class="function-link"><span class="function-syntax">Requirements::any_version_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">work</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-rqr.html#SP7" class="function-link"><span class="function-syntax">Requirements::meets</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><a href="2-nst.html#SP8" class="function-link"><span class="function-syntax">Nests::search_for_best</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">req</span><span class="plain-syntax">, </span><a href="5-ps2.html#SP5" class="function-link"><span class="function-syntax">Projects::nest_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">proj</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><a href="4-em.html#SP4" class="function-link"><span class="function-syntax">ExtensionManager::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-nst.html#SP2" class="function-link"><span class="function-syntax">Nests::get_tag</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">-></span><span class="element-syntax">nest</span><span class="plain-syntax">) == </span><span class="constant-syntax">INTERNAL_NEST_TAG</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="element-syntax">loaded_from_built_in_area</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6"></a><b>§6. </b>The documentation goes into <span class="extract"><span class="extract-syntax">Documentation/Extensions/AUTHOR/TITLE.html</span></span>,
|
||||
inside the transient area.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Everything fails safely (and without errors) if this can't be made. Some
|
||||
Inform users working clandestinely on thumb drives at their places of work say
|
||||
that they can't write extension documentation because they lack the necessary
|
||||
file-system privileges. It would be a pity to deprive them of Inform over this.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionDocumentation::path</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="1-ic.html#SP15" class="function-link"><span class="function-syntax">Supervisor::transient</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">P</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">Pathnames::create_in_file_system</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"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">Pathnames::create_in_file_system</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Extensions"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Pathnames::create_in_file_system</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionDocumentation::location</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">ExtensionDocumentation::location</span></span>:<br/><a href="7-dcm.html#SP4">§4</a></span></button><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="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">author</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="7-dcm.html#SP6" class="function-link"><span class="function-syntax">ExtensionDocumentation::path</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">leaf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">leaf</span><span class="plain-syntax">, </span><span class="string-syntax">"%S.html"</span><span class="plain-syntax">, </span><span class="identifier-syntax">title</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::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">author</span><span class="plain-syntax">), </span><span class="identifier-syntax">leaf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">leaf</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">F</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-ip2.html#SP2_2_1">§2.2.1</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="7-cns.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-dct.html">dct</a></li><li class="progresssection"><a href="7-cns.html">cns</a></li><li class="progresscurrent">dcm</li><li class="progressnextoff">❯</li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="7-ip.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresssection"><a href="7-tm.html">tm</a></li><li class="progresssection"><a href="7-dct.html">dct</a></li><li class="progresssection"><a href="7-cns.html">cns</a></li><li class="progresssection"><a href="7-ip.html">ip</a></li><li class="progresscurrent">ip2</li><li class="progressnextoff">❯</li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
260
docs/supervisor-module/7-tm.html
Normal file
260
docs/supervisor-module/7-tm.html
Normal file
|
@ -0,0 +1,260 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>The Mini-Website</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="index.html"><span class="selectedlink">supervisor</span></a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="../core-module/index.html">core</a></li>
|
||||
<li><a href="../inflections-module/index.html">inflections</a></li>
|
||||
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
||||
<li><a href="../kinds-module/index.html">kinds</a></li>
|
||||
<li><a href="../if-module/index.html">if</a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="../problems-module/index.html">problems</a></li>
|
||||
<li><a href="../index-module/index.html">index</a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../bytecode-module/index.html">bytecode</a></li>
|
||||
<li><a href="../building-module/index.html">building</a></li>
|
||||
<li><a href="../codegen-module/index.html">codegen</a></li>
|
||||
</ul><h2>Shared Modules</h2><ul>
|
||||
<li><a href="../arch-module/index.html">arch</a></li>
|
||||
<li><a href="../syntax-module/index.html">syntax</a></li>
|
||||
<li><a href="../words-module/index.html">words</a></li>
|
||||
<li><a href="../html-module/index.html">html</a></li>
|
||||
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'The Mini-Website' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inbuild Modules</a></li><li><a href="index.html">supervisor</a></li><li><a href="index.html#7">Chapter 7: Extension Indexing</a></li><li><b>The Mini-Website</b></li></ul></div>
|
||||
<p class="purpose">To refresh the mini-website of available extensions presented in the Inform GUI applications.</p>
|
||||
|
||||
<ul class="toc"><li><a href="7-tm.html#SP1">§1. The mini-website</a></li><li><a href="7-tm.html#SP3">§3. Organisation of the website</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. The mini-website. </b>The Inform GUI apps present HTML in-app documentation on extensions: in
|
||||
effect, a mini-website showing all the extensions available to the current
|
||||
user, and giving detailed documentation on each one. The code in this
|
||||
chapter of <a href="index.html" class="internal">supervisor</a> runs only if and when we want to generate or
|
||||
update that website, and plays no part in Inform compilation or building
|
||||
as such: it lives in <a href="index.html" class="internal">supervisor</a> because it's essentially concerned
|
||||
with managing resources (i.e., extensions in nests).
|
||||
</p>
|
||||
|
||||
<p class="commentary">A principle used throughout is that we fail safe and silent: if we can't
|
||||
write the documentation website for any reason (permissions failures, for
|
||||
example) then we make no complaint. It's a convenience for the user, but not
|
||||
an essential. This point of view was encouraged by many Inform users working
|
||||
clandestinely on thumb drives at their places of work, and whose employers
|
||||
had locked their computers down fairly heavily.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>The process always involves a "census" of all installed extensions, but
|
||||
can happen for two different reasons:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(a) when we run in "census mode", because of <span class="extract"><span class="extract-syntax">-census</span></span> at the command line;
|
||||
</li><li>(b) when <a href="../inform7/index.html" class="internal">inform7</a> is indexing after a successful compilation.
|
||||
</li></ul>
|
||||
<p class="commentary">Reason (a) typically happens because the user installs a new extension from
|
||||
the app, and it calls the <a href="../inform7/index.html" class="internal">inform7</a> tool in <span class="extract"><span class="extract-syntax">-census</span></span> mode to force an
|
||||
update of the documentation. But (a) can also happen from the command line
|
||||
using either <a href="../inbuild/index.html" class="internal">inbuild</a> or <a href="../inform7/index.html" class="internal">inform7</a>.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The second sort of census is lighter in effect because only incremental
|
||||
changes to documentation are made, but the process of census-taking is the
|
||||
same either way. Here are the functions for (a) and (b) respectively:
|
||||
</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">ExtensionWebsite::handle_census_mode</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">ExtensionWebsite::handle_census_mode</span></span>:<br/>Inbuild Control - <a href="1-ic.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::set_link_abbreviation_path</span><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="7-tm.html#SP2" class="function-link"><span class="function-syntax">ExtensionWebsite::go</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionWebsite::index_after_compilation</span><span class="plain-syntax">(</span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTMLFiles::set_link_abbreviation_path</span><span class="plain-syntax">(</span><a href="5-ps2.html#SP4" class="function-link"><span class="function-syntax">Projects::path</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">proj</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="7-tm.html#SP2" class="function-link"><span class="function-syntax">ExtensionWebsite::go</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">proj</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ExtensionWebsite::go</span><span class="plain-syntax">(</span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">force_update</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dct.html#SP8" class="function-link"><span class="function-syntax">ExtensionDictionary::read_from_file</span></a><span class="plain-syntax">();</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="7-cns.html#SP7" class="function-link"><span class="function-syntax">ExtensionCensus::perform</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">proj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-tm.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Time-stamp extensions used in the project as being last used today</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-tm.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Write index pages</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="7-tm.html#SP2_3" class="named-paragraph-link"><span class="named-paragraph">Write individual pages on individual extensions</span><span class="named-paragraph-number">2.3</span></a></span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="7-dct.html#SP10" class="function-link"><span class="function-syntax">ExtensionDictionary::write_back</span></a><span class="plain-syntax">();</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Log::aspect_switched_on</span><span class="plain-syntax">(</span><span class="constant-syntax">EXTENSIONS_CENSUS_DA</span><span class="plain-syntax">)) </span><a href="2-wrk.html#SP14" class="function-link"><span class="function-syntax">Works::log_work_hash_table</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2_1"></a><b>§2.1. </b>This simply ensures that dates used are updated to today's date for
|
||||
extensions used in the current run; otherwise they wouldn't show in the
|
||||
documentation as used today until the next run, for obscure timing reasons.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Time-stamp extensions used in the project as being last used today</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><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax">, </span><span class="identifier-syntax">proj</span><span class="plain-syntax">-></span><span class="element-syntax">extensions_included</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="7-dct.html#SP5" class="function-link"><span class="function-syntax">ExtensionDictionary::time_stamp</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-tm.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_2"></a><b>§2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write index pages</span><span class="named-paragraph-number">2.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="7-ip.html#SP1" class="function-link"><span class="function-syntax">ExtensionIndex::write</span></a><span class="plain-syntax">(</span><a href="7-tm.html#SP4" class="function-link"><span class="function-syntax">ExtensionWebsite::index_URL</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Extensions.html"</span><span class="plain-syntax">), </span><span class="constant-syntax">HOME_EXTPAGE</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="7-ip.html#SP1" class="function-link"><span class="function-syntax">ExtensionIndex::write</span></a><span class="plain-syntax">(</span><a href="7-tm.html#SP4" class="function-link"><span class="function-syntax">ExtensionWebsite::index_URL</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"ExtIndex.html"</span><span class="plain-syntax">), </span><span class="constant-syntax">INDEX_EXTPAGE</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-tm.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_3"></a><b>§2.3. </b>Each extension gets its own page in the external documentation area, but
|
||||
this page can have two forms:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(i) a deluxe version, produced if a project <span class="extract"><span class="extract-syntax">proj</span></span> has successfully used
|
||||
the extension on this run and we therefore know a lot about the extension;
|
||||
</li><li>(ii) an ordinaire version, where we may never have used the extension and
|
||||
currently have no specific knowledge of it.
|
||||
</li></ul>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write individual pages on individual extensions</span><span class="named-paragraph-number">2.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax">, </span><span class="identifier-syntax">proj</span><span class="plain-syntax">-></span><span class="element-syntax">extensions_included</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="7-ip2.html#SP1" class="function-link"><span class="function-syntax">ExtensionPages::write_page</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">proj</span><span class="plain-syntax">); </span><span class="comment-syntax"> deluxe</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">, </span><span class="reserved-syntax">extension_census_datum</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="7-ip2.html#SP1" class="function-link"><span class="function-syntax">ExtensionPages::write_page</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ecd</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">force_update</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">); </span><span class="comment-syntax"> ordinaire</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-tm.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3"></a><b>§3. Organisation of the website. </b>There is a top level consisting of two home pages: a directory of all
|
||||
installed extensions, and an index to the terms defined in those extensions. A
|
||||
cross-link switches between them. Each of these links down to the bottom
|
||||
level, where there is a page for every installed extension (wherever it is
|
||||
installed). The picture is therefore something like this:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> Extensions -- ExtIndex</span>
|
||||
<span class="plain-syntax"> | \/ |</span>
|
||||
<span class="plain-syntax"> | /\ |</span>
|
||||
<span class="plain-syntax"> Nigel Toad/Eggs Barnabas Dundritch/Neopolitan Iced Cream ...</span>
|
||||
</pre>
|
||||
<p class="commentary">These pages would be stored in the transient area at the relative URLs:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> Documentation/Extensions.html</span>
|
||||
<span class="plain-syntax"> Documentation/ExtIndex.html</span>
|
||||
<span class="plain-syntax"> Documentation/Extensions/Nigel Toad/Eggs.html</span>
|
||||
<span class="plain-syntax"> Documentation/Extensions/Barnabas Dundritch/Neopolitan Iced Cream.html</span>
|
||||
</pre>
|
||||
<p class="commentary">And see also the function <a href="7-dct.html#SP1" class="internal">ExtensionDictionary::filename</a>, which uses a file
|
||||
in the same area but not as part of the site.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionWebsite::home_URL</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">ExtensionWebsite::home_URL</span></span>:<br/><a href="7-tm.html#SP4">§4</a>, <a href="7-tm.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="1-ic.html#SP15" class="function-link"><span class="function-syntax">Supervisor::transient</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Pathnames::create_in_file_system</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"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">Pathnames::create_in_file_system</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4"></a><b>§4. </b>The top-level files <span class="extract"><span class="extract-syntax">Extensions.html</span></span> and <span class="extract"><span class="extract-syntax">ExtIndex.html</span></span> go here:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionWebsite::index_URL</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">ExtensionWebsite::index_URL</span></span>:<br/><a href="7-tm.html#SP2_2">§2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">leaf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="7-tm.html#SP3" class="function-link"><span class="function-syntax">ExtensionWebsite::home_URL</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">leaf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5"></a><b>§5. </b>And individual extension pages here. A complication is that a single
|
||||
extension may also have sidekick pages for any examples in its supplied
|
||||
documentation: so for instance we might actually see —
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> Documentation/Extensions/Emily Short/Locksmith.html</span>
|
||||
<span class="plain-syntax"> Documentation/Extensions/Emily Short/Locksmith-eg1.html</span>
|
||||
<span class="plain-syntax"> Documentation/Extensions/Emily Short/Locksmith-eg2.html</span>
|
||||
<span class="plain-syntax"> Documentation/Extensions/Emily Short/Locksmith-eg3.html</span>
|
||||
<span class="plain-syntax"> Documentation/Extensions/Emily Short/Locksmith-eg4.html</span>
|
||||
</pre>
|
||||
<p class="commentary">The following supplies the necessary filenames.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionWebsite::page_URL</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">ExtensionWebsite::page_URL</span></span>:<br/>Individual Pages - <a href="7-ip2.html#SP2">§2</a>, <a href="7-ip2.html#SP2_2_1">§2.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">eg_number</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">leaf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">leaf</span><span class="plain-syntax">, </span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">title</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">eg_number</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">leaf</span><span class="plain-syntax">, </span><span class="string-syntax">"-eg%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">eg_number</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">leaf</span><span class="plain-syntax">, </span><span class="string-syntax">".html"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="7-tm.html#SP3" class="function-link"><span class="function-syntax">ExtensionWebsite::home_URL</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Extensions"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Pathnames::create_in_file_system</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</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::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">author_name</span><span class="plain-syntax">), </span><span class="identifier-syntax">leaf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">leaf</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">F</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="6-vmg.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresscurrentchapter">7</li><li class="progresscurrent">tm</li><li class="progresssection"><a href="7-dct.html">dct</a></li><li class="progresssection"><a href="7-cns.html">cns</a></li><li class="progresssection"><a href="7-ip.html">ip</a></li><li class="progresssection"><a href="7-ip2.html">ip2</a></li><li class="progressnext"><a href="7-dct.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -197,7 +197,7 @@ objects, each pointing to a new copy which matches the requirement given.
|
|||
</p>
|
||||
|
||||
<p class="commentary">Requirements can be quite flexible, and are converitble to and from text: see
|
||||
<a href="2-rqr.html#SP3" class="internal">Requirements::from_text</a> and <a href="2-rqr.html#SP6" class="internal">Requirements::write</a>.<sup id="fnref:4"><a href="#fn:4" rel="footnote">4</a></sup> The crucial routine
|
||||
<a href="2-rqr.html#SP3" class="internal">Requirements::from_text</a> and <a href="2-rqr.html#SP6" class="internal">Requirements::write</a>.<sup id="fnref:4"><a href="#fn:4" rel="footnote">4</a></sup> The crucial function
|
||||
here is <a href="2-rqr.html#SP7" class="internal">Requirements::meets</a>, which tests whether an edition meets the
|
||||
requirement.
|
||||
</p>
|
||||
|
@ -524,18 +524,16 @@ according to the <a href="3-bm.html#SP1" class="internal">build_methodology</a>
|
|||
to configure how it should go about its business.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP18"></a><b>§18. Extension census. </b>That's basically everything except for a few special features to provide
|
||||
the Inform GUI apps with nice-looking documentation pages on installed
|
||||
extensions. These are constructed by a "census", when the parent calls
|
||||
<a href="7-cns.html#SP1" class="internal">ExtensionCensus::new</a>. Copies for extensions are annotated with
|
||||
metadata on, for example, when they were last used, and such metadata is stored
|
||||
between runs in the <a href="7-dct.html" class="internal">Dictionary</a>, and used as part of the
|
||||
<a href="7-dcm.html" class="internal">Documentation</a> generated for the benefit of the Inform user
|
||||
interface apps.
|
||||
<p class="commentary firstcommentary"><a id="SP18"></a><b>§18. Extension census. </b>That's basically everything except for the lengthy but unimportant code in
|
||||
<a href="7-tm.html" class="internal">Chapter 7: Extension Indexing</a>, which constructs a mini-website of extension documentation for
|
||||
use inside the GUI app. None of this affects how builds are made. See
|
||||
<a href="7-tm.html" class="internal">The Mini-Website</a> for the site's makeup. A little metadata is cached
|
||||
between runs of <a href="../inform7/index.html" class="internal">inform7</a> in a file called the <a href="7-dct.html" class="internal">Dictionary</a>, and the
|
||||
search for all installed extensions is called the <a href="7-cns.html" class="internal">Census</a>.
|
||||
</p>
|
||||
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprevoff">❮</li><li class="progresscurrentchapter">P</li><li class="progresscurrent">wtmd</li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-dct.html">7</a></li><li class="progressnext"><a href="1-sm.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprevoff">❮</li><li class="progresscurrentchapter">P</li><li class="progresscurrent">wtmd</li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="1-sm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -297,6 +297,11 @@
|
|||
<p class="chapterentry"><a name="7"></a>
|
||||
<span class="chaptertitle">Chapter 7: Extension Indexing</span></p>
|
||||
<ul class="sectionlist">
|
||||
<li>
|
||||
<p class="sectionentry"><a href="7-tm.html">
|
||||
<spon class="sectiontitle">The Mini-Website</span></a> -
|
||||
<span class="sectionpurpose">To refresh the mini-website of available extensions presented in the Inform GUI applications.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="7-dct.html">
|
||||
<spon class="sectiontitle">Dictionary</span></a> -
|
||||
|
@ -305,12 +310,17 @@
|
|||
<li>
|
||||
<p class="sectionentry"><a href="7-cns.html">
|
||||
<spon class="sectiontitle">Census</span></a> -
|
||||
<span class="sectionpurpose">To conduct a census of all the extensions installed (whether used on this run or not), and keep the documentation index for them up to date.</span></p>
|
||||
<span class="sectionpurpose">To conduct a census of all installed extensions installed.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="7-dcm.html">
|
||||
<spon class="sectiontitle">Documentation</span></a> -
|
||||
<span class="sectionpurpose">To generate HTML documentation for extensions.</span></p>
|
||||
<p class="sectionentry"><a href="7-ip.html">
|
||||
<spon class="sectiontitle">Index Pages</span></a> -
|
||||
<span class="sectionpurpose">To generate the two top-level pages in the extension mini-website.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="7-ip2.html">
|
||||
<spon class="sectiontitle">Individual Pages</span></a> -
|
||||
<span class="sectionpurpose">To generate the individual pages on extensions in the extension mini-website.</span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
|
|
|
@ -343,7 +343,7 @@ void Supervisor::go_operational(void) {
|
|||
inbuild_copy *C;
|
||||
LOOP_OVER(C, inbuild_copy) Copies::construct_graph(C);
|
||||
inbuild_phase = OPERATIONAL_INBUILD_PHASE;
|
||||
if (census_mode) ExtensionCensus::handle_census_mode();
|
||||
if (census_mode) ExtensionWebsite::handle_census_mode();
|
||||
}
|
||||
|
||||
@h The nest list.
|
||||
|
|
|
@ -380,7 +380,7 @@ The rubric text for an extension, which is double-quoted matter just below
|
|||
its "begins here" line, is parsed as a sentence and will be read as an
|
||||
assertion in the usual way when the material from this extension is being
|
||||
worked through (quite a long time after the EF structure was created). When
|
||||
that happens, the following routine will be called to set the rubric.
|
||||
that happens, the following function will be called to set the rubric.
|
||||
|
||||
=
|
||||
void Extensions::set_rubric(inform_extension *E, text_stream *text) {
|
||||
|
|
|
@ -436,7 +436,7 @@ runs in linear time.)
|
|||
Headings::move_below(subseq, h); /* all lesser headings in the run become h's children */
|
||||
}
|
||||
|
||||
@ The above routine, then, calls |Headings::move_below| to attach a heading
|
||||
@ The above function, then, calls |Headings::move_below| to attach a heading
|
||||
to the tree as a child of a given parent:
|
||||
|
||||
=
|
||||
|
@ -512,7 +512,7 @@ the scope of local variables in a conventional programming language. It also
|
|||
affects problem messages.
|
||||
|
||||
Because every file has an Implied (0) heading registered at line 1, the loop
|
||||
in the following routine is guaranteed to return a valid heading provided
|
||||
in the following function is guaranteed to return a valid heading provided
|
||||
the original source location is well formed (i.e., has a non-null source
|
||||
file and a line number of at least 1).
|
||||
|
||||
|
@ -545,7 +545,7 @@ inform_extension *Headings::get_extension_containing(heading *h) {
|
|||
}
|
||||
|
||||
@ Although Implied (0) headings do have text, contrary to the implication of
|
||||
the routine here, this text is only what happens to be first in the file,
|
||||
the function here, this text is only what happens to be first in the file,
|
||||
or else is something supplied by //supervisor// purely to make the debugging
|
||||
log comprehensible: it isn't a heading typed as such by the user, which is all
|
||||
that we are interested in for this purpose. So we send back a null word range.
|
||||
|
|
|
@ -9,7 +9,7 @@ project has been read in.
|
|||
|
||||
But this isn't fast enough, because the sentence also specifies the language
|
||||
of syntax, and we need to know of any non-English choice immediately. So a
|
||||
special hook in the //syntax// module calls the following routine as soon as
|
||||
special hook in the //syntax// module calls the following function as soon as
|
||||
such a sentence is found; thus, it happens during sentence-breaking, not
|
||||
after it, and may therefore affect how subsequent sentences are broken.
|
||||
|
||||
|
|
|
@ -1,9 +1,9 @@
|
|||
[ExtensionCensus::] Census.
|
||||
|
||||
To conduct a census of all the extensions installed (whether used
|
||||
on this run or not), and keep the documentation index for them up to date.
|
||||
To conduct a census of all installed extensions installed.
|
||||
|
||||
@
|
||||
@h Beginning.
|
||||
Each census begins by creating an object:
|
||||
|
||||
=
|
||||
typedef struct extension_census {
|
||||
|
@ -14,6 +14,10 @@ typedef struct extension_census {
|
|||
MEMORY_MANAGEMENT
|
||||
} extension_census;
|
||||
|
||||
@ Here |proj| will be null in case (a), and will be the project just
|
||||
compiled in case (b).
|
||||
|
||||
=
|
||||
extension_census *ExtensionCensus::new(inform_project *proj) {
|
||||
extension_census *C = CREATE(extension_census);
|
||||
C->search_list = Projects::nest_list(proj);
|
||||
|
@ -23,6 +27,10 @@ extension_census *ExtensionCensus::new(inform_project *proj) {
|
|||
return C;
|
||||
}
|
||||
|
||||
@ Each census object has its own search path for nests -- for case (a) the
|
||||
shared search path, for (b) the project's search path.
|
||||
|
||||
=
|
||||
pathname *ExtensionCensus::internal_path(extension_census *C) {
|
||||
inbuild_nest *N = NULL;
|
||||
LOOP_OVER_LINKED_LIST(N, inbuild_nest, C->search_list)
|
||||
|
@ -39,43 +47,96 @@ pathname *ExtensionCensus::external_path(extension_census *C) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
@ In addition to the extensions read in, there are the roads not taken: the
|
||||
ones which I7 has at its disposal, but which the source text never asks to
|
||||
include. Inform performs a "census" of installed extensions on every run,
|
||||
essentially by scanning the directories which hold them to see what the
|
||||
user has installed there.
|
||||
|
||||
Each extension discovered will produce a single "extension census datum",
|
||||
or ECD.
|
||||
@h Census data.
|
||||
For each inhabitant found, so to speak, an instance of //extension_census_datum//
|
||||
is created. (These are called ECDs below.)
|
||||
|
||||
=
|
||||
typedef struct extension_census_datum {
|
||||
struct inbuild_search_result *found_as;
|
||||
int built_in; /* found in the Inform 7 application's private stock */
|
||||
int project_specific; /* found in the Materials folder for the current project */
|
||||
int overriding_a_built_in_extension; /* not built in, but overriding one which is */
|
||||
struct extension_census_datum *next; /* next one in lexicographic order */
|
||||
MEMORY_MANAGEMENT
|
||||
} extension_census_datum;
|
||||
|
||||
@ An ECD is actually a wrapper for an //inform_extension// object in disguise,
|
||||
since the //inbuild_search_result// found that.
|
||||
|
||||
=
|
||||
text_stream *ExtensionCensus::ecd_rubric(extension_census_datum *ecd) {
|
||||
return Extensions::get_rubric(ExtensionManager::from_copy(ecd->found_as->copy));
|
||||
}
|
||||
|
||||
@ This is a narrative section and describes the story of the census. Just as
|
||||
Caesar Augustus decreed that all the world should be taxed, and that each
|
||||
should return to his place of birth, so we will open and inspect every
|
||||
extension we can find, checking that each is in the right place.
|
||||
int ExtensionCensus::installation_region(extension_census_datum *ecd) {
|
||||
if (Nests::get_tag(ecd->found_as->nest) == MATERIALS_NEST_TAG) return 0;
|
||||
if (Nests::get_tag(ecd->found_as->nest) == INTERNAL_NEST_TAG) return 1;
|
||||
if (ecd->overriding_a_built_in_extension) return 2;
|
||||
return 3;
|
||||
}
|
||||
|
||||
Note that if the same extension is found in more than one domain, the first
|
||||
to be found is considered the definitive version: this is why the external
|
||||
area is searched first, so that the user can override built-in extensions
|
||||
by placing his own versions in the external area. (Should this convention
|
||||
ever be reversed, a matching change would need to be made in the code which
|
||||
opens extension files in Read Source Text.)
|
||||
int ExtensionCensus::ecd_used(extension_census_datum *ecd) {
|
||||
inbuild_work *work = ecd->found_as->copy->edition->work;
|
||||
if ((Works::no_times_used_in_context(work, LOADED_WDBC) > 0) ||
|
||||
(Works::no_times_used_in_context(work, DICTIONARY_REFERRED_WDBC) > 0))
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ The following give some sorting criteria, and are functions fit to be
|
||||
handed to |qsort|.
|
||||
|
||||
=
|
||||
void ExtensionCensus::perform(extension_census *C) {
|
||||
int ExtensionCensus::compare_ecd_by_title(const void *ecd1, const void *ecd2) {
|
||||
extension_census_datum *e1 = *((extension_census_datum **) ecd1);
|
||||
extension_census_datum *e2 = *((extension_census_datum **) ecd2);
|
||||
inbuild_work *work1 = e1->found_as->copy->edition->work;
|
||||
inbuild_work *work2 = e2->found_as->copy->edition->work;
|
||||
return Works::compare_by_title(work1, work2);
|
||||
}
|
||||
|
||||
int ExtensionCensus::compare_ecd_by_author(const void *ecd1, const void *ecd2) {
|
||||
extension_census_datum *e1 = *((extension_census_datum **) ecd1);
|
||||
extension_census_datum *e2 = *((extension_census_datum **) ecd2);
|
||||
inbuild_work *work1 = e1->found_as->copy->edition->work;
|
||||
inbuild_work *work2 = e2->found_as->copy->edition->work;
|
||||
return Works::compare(work1, work2);
|
||||
}
|
||||
|
||||
int ExtensionCensus::compare_ecd_by_installation(const void *ecd1, const void *ecd2) {
|
||||
extension_census_datum *e1 = *((extension_census_datum **) ecd1);
|
||||
extension_census_datum *e2 = *((extension_census_datum **) ecd2);
|
||||
inbuild_work *work1 = e1->found_as->copy->edition->work;
|
||||
inbuild_work *work2 = e2->found_as->copy->edition->work;
|
||||
int d = ExtensionCensus::installation_region(e1) -
|
||||
ExtensionCensus::installation_region(e2);
|
||||
if (d != 0) return d;
|
||||
return Works::compare_by_title(work1, work2);
|
||||
}
|
||||
|
||||
int ExtensionCensus::compare_ecd_by_date(const void *ecd1, const void *ecd2) {
|
||||
extension_census_datum *e1 = *((extension_census_datum **) ecd1);
|
||||
extension_census_datum *e2 = *((extension_census_datum **) ecd2);
|
||||
inbuild_work *work1 = e1->found_as->copy->edition->work;
|
||||
inbuild_work *work2 = e2->found_as->copy->edition->work;
|
||||
return Works::compare_by_date(work1, work2);
|
||||
}
|
||||
|
||||
int ExtensionCensus::compare_ecd_by_length(const void *ecd1, const void *ecd2) {
|
||||
extension_census_datum *e1 = *((extension_census_datum **) ecd1);
|
||||
extension_census_datum *e2 = *((extension_census_datum **) ecd2);
|
||||
inbuild_work *work1 = e1->found_as->copy->edition->work;
|
||||
inbuild_work *work2 = e2->found_as->copy->edition->work;
|
||||
return Works::compare_by_length(work1, work2);
|
||||
}
|
||||
|
||||
@h Performing the census.
|
||||
For some reason a census often makes a good story (cf. Luke 2:1-5), but here
|
||||
there's disappointingly little to tell, because the work is all done by a
|
||||
single call to //Nests::search_for//.
|
||||
|
||||
=
|
||||
extension_census *ExtensionCensus::perform(inform_project *proj) {
|
||||
extension_census *C = ExtensionCensus::new(proj);
|
||||
inbuild_requirement *req = Requirements::anything_of_genre(extension_genre);
|
||||
Nests::search_for(req, C->search_list, C->raw_data);
|
||||
|
||||
|
@ -87,20 +148,20 @@ void ExtensionCensus::perform(extension_census *C) {
|
|||
if (overridden_by_an_extension_already_found == FALSE)
|
||||
@<Add to the census data@>;
|
||||
}
|
||||
return C;
|
||||
}
|
||||
|
||||
@h Adding the extension to the census, or not.
|
||||
Recall that the higher-priority external domain is scanned first; the
|
||||
built-in domain is scanned second. So if we find that our new extension has
|
||||
the same title and author as one already known, it must be the case that we
|
||||
are now scanning the built-in area and that the previous one was an extension
|
||||
which the user had installed to override this built-in extension.
|
||||
@ Recall that the higher-priority materials and external nests are scanned
|
||||
first, so if we find that our new extension has the same title and author as
|
||||
one already known, it must be one that is overridden.
|
||||
|
||||
@<See if already known from existing data@> =
|
||||
extension_census_datum *other;
|
||||
LOOP_OVER_LINKED_LIST(other, extension_census_datum, C->census_data)
|
||||
if ((Works::match(R->copy->edition->work, other->found_as->copy->edition->work)) &&
|
||||
((other->built_in) || (Nests::get_tag(R->nest) == INTERNAL_NEST_TAG))) {
|
||||
if ((Works::match(R->copy->edition->work,
|
||||
other->found_as->copy->edition->work)) &&
|
||||
((Nests::get_tag(other->found_as->nest) == INTERNAL_NEST_TAG) ||
|
||||
(Nests::get_tag(R->nest) == INTERNAL_NEST_TAG))) {
|
||||
other->overriding_a_built_in_extension = TRUE;
|
||||
overridden_by_an_extension_already_found = TRUE;
|
||||
}
|
||||
|
@ -114,758 +175,5 @@ truncate it.
|
|||
extension_census_datum *ecd = CREATE(extension_census_datum);
|
||||
ecd->found_as = R;
|
||||
Works::add_to_database(R->copy->edition->work, INSTALLED_WDBC);
|
||||
ecd->built_in = FALSE;
|
||||
if (Nests::get_tag(R->nest) == INTERNAL_NEST_TAG) ecd->built_in = TRUE;
|
||||
ecd->project_specific = FALSE;
|
||||
if (Nests::get_tag(R->nest) == MATERIALS_NEST_TAG) ecd->project_specific = TRUE;
|
||||
ecd->overriding_a_built_in_extension = FALSE;
|
||||
ecd->next = NULL;
|
||||
|
||||
@ And this is where the inclusion of that material into the catalogue is
|
||||
taken care of. First, we sometimes position a warning prominently at the
|
||||
top of the listing, because otherwise its position at the bottom will be
|
||||
invisible unless the user scrolls a long way:
|
||||
|
||||
=
|
||||
void ExtensionCensus::warn_about_census_errors(OUTPUT_STREAM, extension_census *C) {
|
||||
if (C->no_census_errors == 0) return; /* no need for a warning */
|
||||
if (NUMBER_CREATED(extension_census_datum) < 20) return; /* it's a short page anyway */
|
||||
HTML_OPEN("p");
|
||||
HTML_TAG_WITH("img", "border=0 src=inform:/doc_images/misinstalled.png");
|
||||
WRITE(" "
|
||||
"<b>Warning</b>. One or more extensions are installed incorrectly: "
|
||||
"see details below.");
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
|
||||
@ =
|
||||
void ExtensionCensus::transcribe_census_errors(OUTPUT_STREAM, extension_census *C) {
|
||||
if (C->no_census_errors == 0) return; /* nothing to include, then */
|
||||
@<Include the headnote explaining what census errors are@>;
|
||||
inbuild_search_result *R;
|
||||
LOOP_OVER_LINKED_LIST(R, inbuild_search_result, C->raw_data)
|
||||
if (LinkedLists::len(R->copy->errors_reading_source_text) > 0) {
|
||||
copy_error *CE;
|
||||
LOOP_OVER_LINKED_LIST(CE, copy_error, R->copy->errors_reading_source_text) {
|
||||
#ifdef INDEX_MODULE
|
||||
HTMLFiles::open_para(OUT, 2, "hanging");
|
||||
#endif
|
||||
#ifndef INDEX_MODULE
|
||||
HTML_OPEN("p");
|
||||
#endif
|
||||
WRITE("<b>%X</b> - ", R->copy->edition->work);
|
||||
CopyErrors::write(OUT, CE);
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ We only want to warn people here: not to stop them from using Inform
|
||||
until they put matters right. (Suppose, for instance, they are using an
|
||||
account not giving them sufficient privileges to modify files in the external
|
||||
extensions area: they'd then be locked out if anything was amiss there.)
|
||||
|
||||
@<Include the headnote explaining what census errors are@> =
|
||||
HTML_TAG("hr");
|
||||
HTML_OPEN("p");
|
||||
HTML_TAG_WITH("img", "border=0 align=\"left\" src=inform:/doc_images/census_problem.png");
|
||||
WRITE("<b>Warning</b>. Inform checks the folder of user-installed extensions "
|
||||
"each time it translates the source text, in order to keep this directory "
|
||||
"page up to date. Each file must be a properly labelled extension (with "
|
||||
"its titling line correctly identifying itself), and must be in the right "
|
||||
"place - e.g. 'Marbles by Daphne Quilt' must have the filename 'Marbles.i7x' "
|
||||
"(or just 'Marbles' with no file extension) and be stored in the folder "
|
||||
"'Daphne Quilt'. The title should be at most %d characters long; the "
|
||||
"author name, %d. At the last check, these rules were not being followed:",
|
||||
MAX_EXTENSION_TITLE_LENGTH, MAX_EXTENSION_AUTHOR_LENGTH);
|
||||
HTML_CLOSE("p");
|
||||
|
||||
@ Here we write the copy for the directory page of the extensions
|
||||
documentation: the one which the user currently sees by clicking on the
|
||||
"Installed Extensions" link from the contents page of the documentation.
|
||||
It contains an alphabetised catalogue of extensions by author and then
|
||||
title, along with some useful information about them, and then a list of
|
||||
any oddities found in the external extensions area.
|
||||
|
||||
@d SORT_CE_BY_TITLE 1
|
||||
@d SORT_CE_BY_AUTHOR 2
|
||||
@d SORT_CE_BY_INSTALL 3
|
||||
@d SORT_CE_BY_DATE 4
|
||||
@d SORT_CE_BY_LENGTH 5
|
||||
|
||||
=
|
||||
void ExtensionCensus::write_results(OUTPUT_STREAM, extension_census *C) {
|
||||
@<Display the location of installed extensions@>;
|
||||
ExtensionCensus::warn_about_census_errors(OUT, C);
|
||||
HTML::end_html_row(OUT);
|
||||
HTML::end_html_table(OUT);
|
||||
HTML_TAG("hr");
|
||||
@<Time stamp the extensions used on this run@>;
|
||||
|
||||
int key_vms = FALSE, key_override = FALSE, key_builtin = FALSE,
|
||||
key_pspec = FALSE, key_bullet = FALSE;
|
||||
|
||||
@<Display the census radio buttons@>;
|
||||
|
||||
int no_entries = NUMBER_CREATED(extension_census_datum);
|
||||
extension_census_datum **sorted_census_results = Memory::calloc(no_entries,
|
||||
sizeof(extension_census_datum *), EXTENSION_DICTIONARY_MREASON);
|
||||
|
||||
for (int d=1; d<=5; d++) {
|
||||
@<Start an HTML division for this sorted version of the census@>;
|
||||
@<Sort the census into the appropriate order@>;
|
||||
@<Display the sorted version of the census@>;
|
||||
HTML_CLOSE("div");
|
||||
}
|
||||
@<Print the key to any symbols used in the census lines@>;
|
||||
ExtensionCensus::transcribe_census_errors(OUT, C);
|
||||
Memory::I7_array_free(sorted_census_results, EXTENSION_DICTIONARY_MREASON,
|
||||
no_entries, sizeof(extension_census_datum *));
|
||||
}
|
||||
|
||||
@<Display the location of installed extensions@> =
|
||||
int nps = 0, nbi = 0, ni = 0;
|
||||
extension_census_datum *ecd;
|
||||
LOOP_OVER(ecd, extension_census_datum) {
|
||||
if (ecd->project_specific) nps++;
|
||||
else if (ecd->built_in) nbi++;
|
||||
else ni++;
|
||||
}
|
||||
|
||||
HTML_OPEN("p");
|
||||
HTML_TAG_WITH("img", "src='inform:/doc_images/builtin_ext.png' border=0");
|
||||
WRITE(" You have "
|
||||
"%d extensions built-in to this copy of Inform, marked with a grey folder "
|
||||
"icon in the catalogue below.",
|
||||
nbi);
|
||||
HTML_CLOSE("p");
|
||||
HTML_OPEN("p");
|
||||
if (ni == 0) {
|
||||
HTML_TAG_WITH("img", "src='inform:/doc_images/folder4.png' border=0");
|
||||
WRITE(" You have no other extensions installed at present.");
|
||||
} else {
|
||||
#ifdef INDEX_MODULE
|
||||
HTML::Javascript::open_file(OUT, ExtensionCensus::external_path(C), NULL,
|
||||
"src='inform:/doc_images/folder4.png' border=0");
|
||||
#endif
|
||||
WRITE(" You have %d further extension%s installed. These are marked "
|
||||
"with a blue folder icon in the catalogue below. (Click it to see "
|
||||
"where the file is stored on your computer.) "
|
||||
"For more extensions, visit <b>www.inform7.com</b>.",
|
||||
ni, (ni==1)?"":"s");
|
||||
}
|
||||
HTML_CLOSE("p");
|
||||
if (nps > 0) {
|
||||
HTML_OPEN("p");
|
||||
#ifdef INDEX_MODULE
|
||||
HTML::Javascript::open_file(OUT, ExtensionCensus::internal_path(C), NULL, PROJECT_SPECIFIC_SYMBOL);
|
||||
#endif
|
||||
WRITE(" You have %d extension%s in the .materials folder for the "
|
||||
"current project. (Click the purple folder icon to show the "
|
||||
"location.) %s not available to other projects.",
|
||||
nps, (nps==1)?"":"s", (nps==1)?"This is":"These are");
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
|
||||
@ This simply ensures that dates used are updated to today's date for
|
||||
extensions used in the current run; otherwise they wouldn't show in the
|
||||
documentation as used today until the next run, for obscure timing reasons.
|
||||
|
||||
@<Time stamp the extensions used on this run@> =
|
||||
#ifdef CORE_MODULE
|
||||
inform_extension *E;
|
||||
LOOP_OVER(E, inform_extension)
|
||||
ExtensionDictionary::time_stamp(E);
|
||||
#endif
|
||||
|
||||
@ I am the first to admit that this implementation is not inspired. There
|
||||
are five radio buttons, and number 2 is selected by default.
|
||||
|
||||
@<Display the census radio buttons@> =
|
||||
HTML_OPEN("p");
|
||||
WRITE("Sort catalogue: ");
|
||||
HTML_OPEN_WITH("a",
|
||||
"href=\"#\" style=\"text-decoration: none\" "
|
||||
"onclick=\"openExtra('disp1', 'plus1'); closeExtra('disp2', 'plus2'); "
|
||||
"closeExtra('disp3', 'plus3'); closeExtra('disp4', 'plus4'); "
|
||||
"closeExtra('disp5', 'plus5'); return false;\"");
|
||||
HTML_TAG_WITH("img", "border=0 id=\"plus1\" src=inform:/doc_images/extrarboff.png");
|
||||
WRITE(" By title");
|
||||
HTML_CLOSE("a");
|
||||
WRITE(" | ");
|
||||
HTML_OPEN_WITH("a",
|
||||
"href=\"#\" style=\"text-decoration: none\" "
|
||||
"onclick=\"closeExtra('disp1', 'plus1'); openExtra('disp2', 'plus2'); "
|
||||
"closeExtra('disp3', 'plus3'); closeExtra('disp4', 'plus4'); "
|
||||
"closeExtra('disp5', 'plus5'); return false;\"");
|
||||
HTML_TAG_WITH("img", "border=0 id=\"plus2\" src=inform:/doc_images/extrarbon.png");
|
||||
WRITE(" By author");
|
||||
HTML_CLOSE("a");
|
||||
WRITE(" | ");
|
||||
HTML_OPEN_WITH("a",
|
||||
"href=\"#\" style=\"text-decoration: none\" "
|
||||
"onclick=\"closeExtra('disp1', 'plus1'); closeExtra('disp2', 'plus2'); "
|
||||
"openExtra('disp3', 'plus3'); closeExtra('disp4', 'plus4'); "
|
||||
"closeExtra('disp5', 'plus5'); return false;\"");
|
||||
HTML_TAG_WITH("img", "border=0 id=\"plus3\" src=inform:/doc_images/extrarboff.png");
|
||||
WRITE(" By installation");
|
||||
HTML_CLOSE("a");
|
||||
WRITE(" | ");
|
||||
HTML_OPEN_WITH("a",
|
||||
"href=\"#\" style=\"text-decoration: none\" "
|
||||
"onclick=\"closeExtra('disp1', 'plus1'); closeExtra('disp2', 'plus2'); "
|
||||
"closeExtra('disp3', 'plus3'); openExtra('disp4', 'plus4'); "
|
||||
"closeExtra('disp5', 'plus5'); return false;\"");
|
||||
HTML_TAG_WITH("img", "border=0 id=\"plus4\" src=inform:/doc_images/extrarboff.png");
|
||||
WRITE(" By date used");
|
||||
HTML_CLOSE("a");
|
||||
WRITE(" | ");
|
||||
HTML_OPEN_WITH("a",
|
||||
"href=\"#\" style=\"text-decoration: none\" "
|
||||
"onclick=\"closeExtra('disp1', 'plus1'); closeExtra('disp2', 'plus2'); "
|
||||
"closeExtra('disp3', 'plus3'); closeExtra('disp4', 'plus4'); "
|
||||
"openExtra('disp5', 'plus5'); return false;\"");
|
||||
HTML_TAG_WITH("img", "border=0 id=\"plus5\" src=inform:/doc_images/extrarboff.png");
|
||||
WRITE(" By word count");
|
||||
HTML_CLOSE("a");
|
||||
HTML_CLOSE("p");
|
||||
|
||||
@ Consequently, of the five divisions, number 2 is shown and the others
|
||||
hidden, by default.
|
||||
|
||||
@<Start an HTML division for this sorted version of the census@> =
|
||||
char *display = "none";
|
||||
if (d == SORT_CE_BY_AUTHOR) display = "block";
|
||||
HTML_OPEN_WITH("div", "id=\"disp%d\" style=\"display: %s;\"", d, display);
|
||||
|
||||
@ The key at the foot only explicates those symbols actually used, and
|
||||
doesn't explicate the "unindexed" symbol at all, since that's actually
|
||||
just a blank image used for horizontal spacing to keep margins straight.
|
||||
|
||||
@<Print the key to any symbols used in the census lines@> =
|
||||
if ((key_builtin) || (key_override) || (key_bullet) || (key_vms) || (key_pspec)) {
|
||||
HTML_OPEN("p");
|
||||
WRITE("Key: ");
|
||||
if (key_bullet) {
|
||||
HTML_TAG_WITH("img", "%s", INDEXED_SYMBOL);
|
||||
WRITE(" Used ");
|
||||
}
|
||||
if (key_builtin) {
|
||||
HTML_TAG_WITH("img", "%s", BUILT_IN_SYMBOL);
|
||||
WRITE(" Built in ");
|
||||
}
|
||||
if (key_pspec) {
|
||||
HTML_TAG_WITH("img", "%s", PROJECT_SPECIFIC_SYMBOL);
|
||||
WRITE(" Project specific ");
|
||||
}
|
||||
if (key_override) {
|
||||
HTML_TAG_WITH("img", "%s", OVERRIDING_SYMBOL);
|
||||
WRITE(" Your version overrides the one built in ");
|
||||
}
|
||||
if (key_vms) {
|
||||
#ifdef CORE_MODULE
|
||||
HTML_TAG("br");
|
||||
ExtensionCensus::write_key(OUT);
|
||||
#endif
|
||||
}
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
|
||||
@<Sort the census into the appropriate order@> =
|
||||
int i = 0;
|
||||
extension_census_datum *ecd;
|
||||
LOOP_OVER(ecd, extension_census_datum)
|
||||
sorted_census_results[i++] = ecd;
|
||||
int (*criterion)(const void *, const void *) = NULL;
|
||||
switch (d) {
|
||||
case SORT_CE_BY_TITLE: criterion = ExtensionCensus::compare_ecd_by_title; break;
|
||||
case SORT_CE_BY_AUTHOR: criterion = ExtensionCensus::compare_ecd_by_author; break;
|
||||
case SORT_CE_BY_INSTALL: criterion = ExtensionCensus::compare_ecd_by_installation; break;
|
||||
case SORT_CE_BY_DATE: criterion = ExtensionCensus::compare_ecd_by_date; break;
|
||||
case SORT_CE_BY_LENGTH: criterion = ExtensionCensus::compare_ecd_by_length; break;
|
||||
default: internal_error("no such sorting criterion");
|
||||
}
|
||||
qsort(sorted_census_results, (size_t) no_entries, sizeof(extension_census_datum *),
|
||||
criterion);
|
||||
|
||||
@ Standard rows have black text on striped background colours, these being
|
||||
the usual ones seen in Mac OS X applications such as iTunes.
|
||||
|
||||
@d FIRST_STRIPE_COLOUR "#ffffff"
|
||||
@d SECOND_STRIPE_COLOUR "#f3f6fa"
|
||||
|
||||
@<Display the sorted version of the census@> =
|
||||
HTML::begin_html_table(OUT, FIRST_STRIPE_COLOUR, TRUE, 0, 0, 2, 0, 0);
|
||||
@<Show a titling row explaining the census sorting, if necessary@>;
|
||||
int stripe = 0;
|
||||
TEMPORARY_TEXT(current_author_name);
|
||||
int i, current_installation = -1;
|
||||
for (i=0; i<no_entries; i++) {
|
||||
extension_census_datum *ecd = sorted_census_results[i];
|
||||
@<Insert a subtitling row in the census sorting, if necessary@>;
|
||||
stripe = 1 - stripe;
|
||||
if (stripe == 0)
|
||||
HTML::first_html_column_coloured(OUT, 0, SECOND_STRIPE_COLOUR, 0);
|
||||
else
|
||||
HTML::first_html_column_coloured(OUT, 0, FIRST_STRIPE_COLOUR, 0);
|
||||
@<Print the census line for this extension@>;
|
||||
HTML::end_html_row(OUT);
|
||||
}
|
||||
DISCARD_TEXT(current_author_name);
|
||||
@<Show a final titling row closing the census sorting@>;
|
||||
HTML::end_html_table(OUT);
|
||||
|
||||
@<Show a titling row explaining the census sorting, if necessary@> =
|
||||
switch (d) {
|
||||
case SORT_CE_BY_TITLE:
|
||||
@<Begin a tinted census line@>;
|
||||
WRITE("Extensions in alphabetical order");
|
||||
@<End a tinted census line@>;
|
||||
break;
|
||||
case SORT_CE_BY_DATE:
|
||||
@<Begin a tinted census line@>;
|
||||
WRITE("Extensions in order of date used (most recent first)");
|
||||
@<End a tinted census line@>;
|
||||
break;
|
||||
case SORT_CE_BY_LENGTH:
|
||||
@<Begin a tinted census line@>;
|
||||
WRITE("Extensions in order of word count (longest first)");
|
||||
@<End a tinted census line@>;
|
||||
break;
|
||||
}
|
||||
|
||||
@<Insert a subtitling row in the census sorting, if necessary@> =
|
||||
if ((d == SORT_CE_BY_AUTHOR) &&
|
||||
(Str::ne(current_author_name, ecd->found_as->copy->edition->work->author_name))) {
|
||||
Str::copy(current_author_name, ecd->found_as->copy->edition->work->author_name);
|
||||
@<Begin a tinted census line@>;
|
||||
@<Print the author's line in the extension census table@>;
|
||||
@<End a tinted census line@>;
|
||||
stripe = 0;
|
||||
}
|
||||
if ((d == SORT_CE_BY_INSTALL) && (ExtensionCensus::installation_region(ecd) != current_installation)) {
|
||||
current_installation = ExtensionCensus::installation_region(ecd);
|
||||
@<Begin a tinted census line@>;
|
||||
@<Print the installation region in the extension census table@>;
|
||||
@<End a tinted census line@>;
|
||||
stripe = 0;
|
||||
}
|
||||
|
||||
@<Show a final titling row closing the census sorting@> =
|
||||
@<Begin a tinted census line@>;
|
||||
HTML_OPEN_WITH("span", "class=\"smaller\"");
|
||||
WRITE("%d extensions installed", no_entries);
|
||||
HTML_CLOSE("span");
|
||||
@<End a tinted census line@>;
|
||||
|
||||
@ Black text on a grey background.
|
||||
|
||||
@d CENSUS_TITLING_BG "#808080"
|
||||
|
||||
@<Begin a tinted census line@> =
|
||||
int span = 4;
|
||||
if (d == SORT_CE_BY_TITLE) span = 3;
|
||||
HTML::first_html_column_coloured(OUT, 0, CENSUS_TITLING_BG, span);
|
||||
HTML::begin_colour(OUT, I"ffffff");
|
||||
WRITE(" ");
|
||||
|
||||
@<End a tinted census line@> =
|
||||
HTML::end_colour(OUT);
|
||||
HTML::end_html_row(OUT);
|
||||
|
||||
@ Used only in "by author".
|
||||
|
||||
@<Print the author's line in the extension census table@> =
|
||||
WRITE("%S", ecd->found_as->copy->edition->work->raw_author_name);
|
||||
|
||||
extension_census_datum *ecd2;
|
||||
int cu = 0, cn = 0, j;
|
||||
for (j = i; j < no_entries; j++) {
|
||||
ecd2 = sorted_census_results[j];
|
||||
if (Str::ne(current_author_name, ecd2->found_as->copy->edition->work->author_name)) break;
|
||||
if (ExtensionCensus::ecd_used(ecd2)) cu++;
|
||||
else cn++;
|
||||
}
|
||||
WRITE(" ");
|
||||
HTML_OPEN_WITH("span", "class=\"smaller\"");
|
||||
WRITE("%d extension%s", cu+cn, (cu+cn==1)?"":"s");
|
||||
if ((cu == 0) && (cn == 1)) WRITE(", unused");
|
||||
else if ((cu == 0) && (cn == 2)) WRITE(", both unused");
|
||||
else if ((cu == 0) && (cn > 2)) WRITE(", all unused");
|
||||
else if ((cn == 0) && (cu == 1)) WRITE(", used");
|
||||
else if ((cn == 0) && (cu == 2)) WRITE(", both used");
|
||||
else if ((cn == 0) && (cu > 2)) WRITE(", all used");
|
||||
else if (cn+cu > 0) WRITE(", %d used, %d unused", cu, cn);
|
||||
WRITE(")");
|
||||
HTML_CLOSE("span");
|
||||
|
||||
@ Used only in "by installation".
|
||||
|
||||
@<Print the installation region in the extension census table@> =
|
||||
switch (current_installation) {
|
||||
case 0:
|
||||
WRITE("Supplied in the .materials folder ");
|
||||
HTML_OPEN_WITH("span", "class=\"smaller\"");
|
||||
WRITE("%p", ExtensionCensus::internal_path(C));
|
||||
HTML_CLOSE("span"); break;
|
||||
case 1: WRITE("Built in to Inform"); break;
|
||||
case 2: WRITE("User installed but overriding a built-in extension"); break;
|
||||
case 3:
|
||||
WRITE("User installed ");
|
||||
HTML_OPEN_WITH("span", "class=\"smaller\"");
|
||||
WRITE("%p", ExtensionCensus::external_path(C));
|
||||
HTML_CLOSE("span"); break;
|
||||
}
|
||||
|
||||
@
|
||||
|
||||
@d UNINDEXED_SYMBOL "border=\"0\" src=\"inform:/doc_images/unindexed_bullet.png\""
|
||||
@d INDEXED_SYMBOL "border=\"0\" src=\"inform:/doc_images/indexed_bullet.png\""
|
||||
|
||||
@<Print the census line for this extension@> =
|
||||
@<Print column 1 of the census line@>;
|
||||
HTML::next_html_column_nw(OUT, 0);
|
||||
if (d != SORT_CE_BY_TITLE) {
|
||||
@<Print column 2 of the census line@>;
|
||||
HTML::next_html_column_nw(OUT, 0);
|
||||
}
|
||||
@<Print column 3 of the census line@>;
|
||||
HTML::next_html_column_w(OUT, 0);
|
||||
@<Print column 4 of the census line@>;
|
||||
|
||||
@ The appearance of the line is
|
||||
|
||||
>> (bullet) The Title (by The Author) (VM requirement icons)
|
||||
|
||||
where all is optional except the title part.
|
||||
|
||||
@<Print column 1 of the census line@> =
|
||||
char *bulletornot = UNINDEXED_SYMBOL;
|
||||
if (ExtensionCensus::ecd_used(ecd)) { bulletornot = INDEXED_SYMBOL; key_bullet = TRUE; }
|
||||
WRITE(" ");
|
||||
HTML_TAG_WITH("img", "%s", bulletornot);
|
||||
|
||||
Works::begin_extension_link(OUT, ecd->found_as->copy->edition->work, ExtensionCensus::ecd_rubric(ecd));
|
||||
if (d != SORT_CE_BY_AUTHOR) {
|
||||
HTML::begin_colour(OUT, I"404040");
|
||||
WRITE("%S", ecd->found_as->copy->edition->work->raw_title);
|
||||
if (Str::len(ecd->found_as->copy->edition->work->raw_title) + Str::len(ecd->found_as->copy->edition->work->raw_author_name) > 45) {
|
||||
HTML_TAG("br");
|
||||
WRITE(" ");
|
||||
} else
|
||||
WRITE(" ");
|
||||
WRITE("by %S", ecd->found_as->copy->edition->work->raw_author_name);
|
||||
HTML::end_colour(OUT);
|
||||
} else {
|
||||
HTML::begin_colour(OUT, I"404040");
|
||||
WRITE("%S", ecd->found_as->copy->edition->work->raw_title);
|
||||
HTML::end_colour(OUT);
|
||||
}
|
||||
Works::end_extension_link(OUT, ecd->found_as->copy->edition->work);
|
||||
|
||||
compatibility_specification *C = ecd->found_as->copy->edition->compatibility;
|
||||
if (Str::len(C->parsed_from) > 0) {
|
||||
@<Append icons which signify the VM requirements of the extension@>;
|
||||
key_vms = TRUE;
|
||||
}
|
||||
|
||||
@ VM requirements are parsed by feeding them into the lexer and calling the
|
||||
same routines as would be used when parsing headings about VM requirements
|
||||
in a normal run of Inform. Note that because the requirements are in round
|
||||
brackets, which the lexer will split off as distinct words, we can ignore
|
||||
the first and last word and just look at what is in between:
|
||||
|
||||
@<Append icons which signify the VM requirements of the extension@> =
|
||||
WRITE(" %S", C->parsed_from);
|
||||
#ifdef CORE_MODULE
|
||||
ExtensionCensus::write_icons(OUT, C);
|
||||
#endif
|
||||
|
||||
@<Print column 2 of the census line@> =
|
||||
HTML_OPEN_WITH("span", "class=\"smaller\"");
|
||||
if (VersionNumbers::is_null(ecd->found_as->copy->edition->version) == FALSE)
|
||||
WRITE("v %v", &(ecd->found_as->copy->edition->version));
|
||||
else
|
||||
WRITE("--");
|
||||
HTML_CLOSE("span");
|
||||
|
||||
@
|
||||
|
||||
@d BUILT_IN_SYMBOL "border=\"0\" src=\"inform:/doc_images/builtin_ext.png\""
|
||||
@d OVERRIDING_SYMBOL "border=\"0\" src=\"inform:/doc_images/override_ext.png\""
|
||||
@d PROJECT_SPECIFIC_SYMBOL "border=\"0\" src=\"inform:/doc_images/pspec_ext.png\""
|
||||
|
||||
@<Print column 3 of the census line@> =
|
||||
char *opener = "src='inform:/doc_images/folder4.png' border=0";
|
||||
if (ecd->built_in) { opener = BUILT_IN_SYMBOL; key_builtin = TRUE; }
|
||||
if (ecd->overriding_a_built_in_extension) {
|
||||
opener = OVERRIDING_SYMBOL; key_override = TRUE;
|
||||
}
|
||||
if (ecd->project_specific) {
|
||||
opener = PROJECT_SPECIFIC_SYMBOL; key_pspec = TRUE;
|
||||
}
|
||||
if (ecd->built_in) HTML_TAG_WITH("img", "%s", opener)
|
||||
else {
|
||||
#ifdef INDEX_MODULE
|
||||
pathname *area = ExtensionManager::path_within_nest(ecd->found_as->nest);
|
||||
HTML::Javascript::open_file(OUT, area, ecd->found_as->copy->edition->work->raw_author_name, opener);
|
||||
#endif
|
||||
}
|
||||
|
||||
@<Print column 4 of the census line@> =
|
||||
HTML_OPEN_WITH("span", "class=\"smaller\"");
|
||||
if ((d == SORT_CE_BY_DATE) || (d == SORT_CE_BY_INSTALL)) {
|
||||
WRITE("%S", Works::get_usage_date(ecd->found_as->copy->edition->work));
|
||||
} else if (d == SORT_CE_BY_LENGTH) {
|
||||
if (Works::forgot(ecd->found_as->copy->edition->work))
|
||||
WRITE("I did read this, but forgot");
|
||||
else if (Works::never(ecd->found_as->copy->edition->work))
|
||||
WRITE("I've never read this");
|
||||
else
|
||||
WRITE("%d words", Works::get_word_count(ecd->found_as->copy->edition->work));
|
||||
} else {
|
||||
if (Str::len(ExtensionCensus::ecd_rubric(ecd)) > 0)
|
||||
WRITE("%S", ExtensionCensus::ecd_rubric(ecd));
|
||||
else
|
||||
WRITE("--");
|
||||
}
|
||||
HTML_CLOSE("span");
|
||||
|
||||
@ Two useful measurements:
|
||||
|
||||
=
|
||||
int ExtensionCensus::installation_region(extension_census_datum *ecd) {
|
||||
if (ecd->project_specific) return 0;
|
||||
if (ecd->built_in) return 1;
|
||||
if (ecd->overriding_a_built_in_extension) return 2;
|
||||
return 3;
|
||||
}
|
||||
|
||||
int ExtensionCensus::ecd_used(extension_census_datum *ecd) {
|
||||
if ((Works::no_times_used_in_context(ecd->found_as->copy->edition->work, LOADED_WDBC) > 0) ||
|
||||
(Works::no_times_used_in_context(ecd->found_as->copy->edition->work, DICTIONARY_REFERRED_WDBC) > 0))
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ The following give the sorting criteria:
|
||||
|
||||
=
|
||||
int ExtensionCensus::compare_ecd_by_title(const void *ecd1, const void *ecd2) {
|
||||
extension_census_datum *e1 = *((extension_census_datum **) ecd1);
|
||||
extension_census_datum *e2 = *((extension_census_datum **) ecd2);
|
||||
return Works::compare_by_title(e1->found_as->copy->edition->work, e2->found_as->copy->edition->work);
|
||||
}
|
||||
|
||||
int ExtensionCensus::compare_ecd_by_author(const void *ecd1, const void *ecd2) {
|
||||
extension_census_datum *e1 = *((extension_census_datum **) ecd1);
|
||||
extension_census_datum *e2 = *((extension_census_datum **) ecd2);
|
||||
return Works::compare(e1->found_as->copy->edition->work, e2->found_as->copy->edition->work);
|
||||
}
|
||||
|
||||
int ExtensionCensus::compare_ecd_by_installation(const void *ecd1, const void *ecd2) {
|
||||
extension_census_datum *e1 = *((extension_census_datum **) ecd1);
|
||||
extension_census_datum *e2 = *((extension_census_datum **) ecd2);
|
||||
int d = ExtensionCensus::installation_region(e1) - ExtensionCensus::installation_region(e2);
|
||||
if (d != 0) return d;
|
||||
return Works::compare_by_title(e1->found_as->copy->edition->work, e2->found_as->copy->edition->work);
|
||||
}
|
||||
|
||||
int ExtensionCensus::compare_ecd_by_date(const void *ecd1, const void *ecd2) {
|
||||
extension_census_datum *e1 = *((extension_census_datum **) ecd1);
|
||||
extension_census_datum *e2 = *((extension_census_datum **) ecd2);
|
||||
return Works::compare_by_date(e1->found_as->copy->edition->work, e2->found_as->copy->edition->work);
|
||||
}
|
||||
|
||||
int ExtensionCensus::compare_ecd_by_length(const void *ecd1, const void *ecd2) {
|
||||
extension_census_datum *e1 = *((extension_census_datum **) ecd1);
|
||||
extension_census_datum *e2 = *((extension_census_datum **) ecd2);
|
||||
return Works::compare_by_length(e1->found_as->copy->edition->work, e2->found_as->copy->edition->work);
|
||||
}
|
||||
|
||||
@h Icons for virtual machines.
|
||||
And everything else is cosmetic: printing, or showing icons to signify,
|
||||
the current VM or some set of permitted VMs. The following plots the
|
||||
icon associated with a given minor VM, and explicates what the icons mean:
|
||||
|
||||
=
|
||||
void ExtensionCensus::plot_icon(OUTPUT_STREAM, target_vm *VM) {
|
||||
if (Str::len(VM->VM_image) > 0) {
|
||||
HTML_TAG_WITH("img", "border=0 src=inform:/doc_images/%S", VM->VM_image);
|
||||
WRITE(" ");
|
||||
}
|
||||
}
|
||||
|
||||
void ExtensionCensus::write_key(OUTPUT_STREAM) {
|
||||
WRITE("Extensions compatible with specific story file formats only: ");
|
||||
int i = 0;
|
||||
target_vm *VM;
|
||||
LOOP_OVER(VM, target_vm) {
|
||||
if (VM->with_debugging_enabled) continue; /* avoids listing twice */
|
||||
if (i++ > 0) WRITE(", ");
|
||||
ExtensionCensus::plot_icon(OUT, VM);
|
||||
TargetVMs::write(OUT, VM);
|
||||
}
|
||||
}
|
||||
|
||||
@h Displaying VM restrictions.
|
||||
Given a word range, we describe the result as concisely as we can with a
|
||||
row of icons (but do not bother for the common case where some extension
|
||||
has no restriction on its use).
|
||||
|
||||
=
|
||||
void ExtensionCensus::write_icons(OUTPUT_STREAM, compatibility_specification *C) {
|
||||
int something = FALSE, everything = TRUE;
|
||||
target_vm *VM;
|
||||
LOOP_OVER(VM, target_vm)
|
||||
if (Compatibility::with(C, VM))
|
||||
something = TRUE;
|
||||
else
|
||||
everything = FALSE;
|
||||
if (something == FALSE) WRITE("none");
|
||||
if (everything == FALSE)
|
||||
LOOP_OVER(VM, target_vm)
|
||||
if (Compatibility::with(C, VM))
|
||||
ExtensionCensus::plot_icon(OUT, VM);
|
||||
}
|
||||
|
||||
@h Updating the documentation.
|
||||
This is done in the course of taking an extension census, which is called
|
||||
for in one of two circumstances: when Inform is being run in "census mode" to
|
||||
notify it that extensions have been installed or uninstalled; or when Inform
|
||||
has completed the successful compilation of a source text. In the latter
|
||||
case, it knows quite a lot about the extensions actually used in that
|
||||
compilation, and so can write detailed versions of their documentation:
|
||||
since it is updating extension documentation anyway, it conducts a census
|
||||
as well. (In both cases the extension dictionary is also worked upon.) The
|
||||
two alternatives are expressed here:
|
||||
|
||||
=
|
||||
void ExtensionCensus::handle_census_mode(void) {
|
||||
extension_census *C = ExtensionCensus::new(NULL);
|
||||
HTMLFiles::set_link_abbreviation_path(NULL);
|
||||
ExtensionDictionary::read_from_file();
|
||||
ExtensionCensus::perform(C);
|
||||
ExtensionCensus::write_top_level_of_extensions_documentation(C);
|
||||
ExtensionCensus::write_sketchy_documentation_for_extensions_found(TRUE);
|
||||
}
|
||||
|
||||
void ExtensionCensus::update_census(inform_project *proj) {
|
||||
ExtensionDictionary::read_from_file();
|
||||
extension_census *C = ExtensionCensus::new(proj);
|
||||
HTMLFiles::set_link_abbreviation_path(Projects::path(proj));
|
||||
ExtensionCensus::perform(C);
|
||||
ExtensionCensus::write_top_level_of_extensions_documentation(C);
|
||||
#ifdef CORE_MODULE
|
||||
inform_extension *E;
|
||||
LOOP_OVER(E, inform_extension) ExtensionDocumentation::write_detailed(E, proj);
|
||||
#endif
|
||||
ExtensionCensus::write_sketchy_documentation_for_extensions_found(FALSE);
|
||||
ExtensionDictionary::write_back();
|
||||
if (Log::aspect_switched_on(EXTENSIONS_CENSUS_DA)) Works::log_work_hash_table();
|
||||
}
|
||||
|
||||
@ Documenting extensions seen but not used: we run through the census
|
||||
results in no particular order and create a sketchy page of documentation,
|
||||
if there's no better one already.
|
||||
|
||||
=
|
||||
void ExtensionCensus::write_sketchy_documentation_for_extensions_found(int census_mode) {
|
||||
extension_census_datum *ecd;
|
||||
LOOP_OVER(ecd, extension_census_datum)
|
||||
ExtensionDocumentation::write_sketchy(ecd, census_mode);
|
||||
}
|
||||
|
||||
@h Writing the extensions home pages.
|
||||
Extensions documentation forms a mini-website within the Inform
|
||||
documentation. There is a top level consisting of two home pages: a
|
||||
directory of all installed extensions, and an index to the terms defined in
|
||||
those extensions. A cross-link switches between them. Each of these links
|
||||
down to the bottom level, where there is a page for every installed
|
||||
extension (wherever it is installed). The picture is therefore something
|
||||
like this:
|
||||
|
||||
= (text)
|
||||
(Main documentation contents page)
|
||||
|
|
||||
Extensions.html--ExtIndex.html
|
||||
| \/ |
|
||||
| /\ |
|
||||
Nigel Toad/Eggs Barnabas Dundritch/Neopolitan Iced Cream ...
|
||||
|
||||
@ These pages are stored at the relative pathnames
|
||||
= (text)
|
||||
Extensions/Documentation/Extensions.html
|
||||
Extensions/Documentation/ExtIndex.html
|
||||
=
|
||||
They are made by inserting content in place of the material between the
|
||||
HTML anchors |on| and |off| in a template version of the page built in
|
||||
to the application, with a leafname which varies from platform to
|
||||
platform, for reasons as always to do with the vagaries of Internet
|
||||
Explorer 7 for Windows.
|
||||
|
||||
=
|
||||
void ExtensionCensus::write_top_level_of_extensions_documentation(extension_census *C) {
|
||||
ExtensionCensus::write_top_level_extensions_page(I"Extensions.html", 1, C);
|
||||
ExtensionCensus::write_top_level_extensions_page(I"ExtIndex.html", 2, NULL);
|
||||
}
|
||||
|
||||
@ =
|
||||
pathname *ExtensionCensus::doc_pathname(void) {
|
||||
pathname *P = Supervisor::transient();
|
||||
if (P == NULL) return NULL;
|
||||
if (Pathnames::create_in_file_system(P) == 0) return NULL;
|
||||
P = Pathnames::down(P, I"Documentation");
|
||||
if (Pathnames::create_in_file_system(P) == 0) return NULL;
|
||||
return P;
|
||||
}
|
||||
|
||||
void ExtensionCensus::write_top_level_extensions_page(text_stream *leaf, int content, extension_census *C) {
|
||||
pathname *P = ExtensionCensus::doc_pathname();
|
||||
if (P == NULL) return;
|
||||
filename *F = Filenames::in(P, leaf);
|
||||
|
||||
text_stream HOMEPAGE_struct;
|
||||
text_stream *OUT = &HOMEPAGE_struct;
|
||||
if (STREAM_OPEN_TO_FILE(OUT, F, UTF8_ENC) == FALSE) {
|
||||
#ifdef CORE_MODULE
|
||||
Problems::Fatal::filename_related(
|
||||
"Unable to open extensions documentation index for writing", F);
|
||||
#endif
|
||||
#ifndef CORE_MODULE
|
||||
Errors::fatal_with_file("extensions documentation index for writing: %f", F);
|
||||
#endif
|
||||
}
|
||||
|
||||
HTML::declare_as_HTML(OUT, FALSE);
|
||||
|
||||
HTML::begin_head(OUT, NULL);
|
||||
HTML::title(OUT, I"Extensions");
|
||||
HTML::incorporate_javascript(OUT, TRUE,
|
||||
Supervisor::file_from_installation(JAVASCRIPT_FOR_EXTENSIONS_IRES));
|
||||
HTML::incorporate_CSS(OUT,
|
||||
Supervisor::file_from_installation(CSS_FOR_STANDARD_PAGES_IRES));
|
||||
HTML::end_head(OUT);
|
||||
|
||||
HTML::begin_body(OUT, NULL);
|
||||
HTML::begin_html_table(OUT, NULL, TRUE, 0, 4, 0, 0, 0);
|
||||
HTML::first_html_column(OUT, 0);
|
||||
HTML_TAG_WITH("img", "src='inform:/doc_images/extensions@2x.png' border=0 width=150 height=150");
|
||||
HTML::next_html_column(OUT, 0);
|
||||
|
||||
HTML_OPEN_WITH("div", "class=\"headingboxDark\"");
|
||||
HTML_OPEN_WITH("div", "class=\"headingtextWhite\"");
|
||||
WRITE("Installed Extensions");
|
||||
HTML_CLOSE("div");
|
||||
HTML_OPEN_WITH("div", "class=\"headingrubricWhite\"");
|
||||
WRITE("Bundles of extra rules or phrases to extend what Inform can do");
|
||||
HTML_CLOSE("div");
|
||||
HTML_CLOSE("div");
|
||||
|
||||
switch (content) {
|
||||
case 1: ExtensionCensus::write_results(OUT, C); break;
|
||||
case 2: ExtensionDictionary::write_to_HTML(OUT); break;
|
||||
}
|
||||
|
||||
HTML::end_body(OUT);
|
||||
}
|
||||
|
|
|
@ -162,7 +162,7 @@ void ExtensionDictionary::log_entry(extension_dictionary_entry *ede) {
|
|||
}
|
||||
|
||||
@h Reading in.
|
||||
Not a surprising routine: open, convert one line at a time to an
|
||||
Not a surprising function: open, convert one line at a time to an
|
||||
//extension_dictionary_entry// object, close.
|
||||
|
||||
=
|
||||
|
@ -401,13 +401,6 @@ fact, the HTML rendering of the dictionary constructed above.
|
|||
|
||||
=
|
||||
void ExtensionDictionary::write_to_HTML(OUTPUT_STREAM) {
|
||||
HTML_OPEN("p");
|
||||
WRITE("Whenever an extension is used, its definitions are entered into the "
|
||||
"following index. (Thus, a newly installed but never-used extension "
|
||||
"is not indexed yet.).");
|
||||
HTML_CLOSE("p");
|
||||
HTML::end_html_row(OUT);
|
||||
HTML::end_html_table(OUT);
|
||||
int n;
|
||||
int first_letter = 'a';
|
||||
extension_dictionary_entry *ede, *previous_ede, *next_ede;
|
||||
|
@ -504,11 +497,9 @@ not exemplify a clash.
|
|||
|
||||
(c) For each extension L, there is at most one KEC whose left EDE derives
|
||||
from L and which has the "first known" flag set.
|
||||
|
||||
(-c.1) If such a KEC does not exist, then L does not clash with any other
|
||||
If such a KEC does not exist, then L does not clash with any other
|
||||
extension.
|
||||
|
||||
(-c.2) If such a KEC does exist, then it is the head of a linked list of
|
||||
If such a KEC does exist, then it is the head of a linked list of
|
||||
KECs all of which have lefthand EDE deriving from L, and in which no two
|
||||
entries have righthand EDEs deriving from the same extension as each other.
|
||||
|
||||
|
|
622
inbuild/supervisor-module/Chapter 7/Index Pages.w
Normal file
622
inbuild/supervisor-module/Chapter 7/Index Pages.w
Normal file
|
@ -0,0 +1,622 @@
|
|||
[ExtensionIndex::] Index Pages.
|
||||
|
||||
To generate the two top-level pages in the extension mini-website.
|
||||
|
||||
@h Writing the extensions home pages.
|
||||
There are two of these, both with the same surround:
|
||||
|
||||
@e HOME_EXTPAGE from 1
|
||||
@e INDEX_EXTPAGE
|
||||
|
||||
=
|
||||
void ExtensionIndex::write(filename *F, int content, extension_census *C) {
|
||||
if (F == NULL) return;
|
||||
text_stream HOMEPAGE_struct;
|
||||
text_stream *OUT = &HOMEPAGE_struct;
|
||||
if (STREAM_OPEN_TO_FILE(OUT, F, UTF8_ENC) == FALSE) return;
|
||||
|
||||
HTML::declare_as_HTML(OUT, FALSE);
|
||||
@<Write the head of the HTML@>;
|
||||
@<Write the body of the HTML@>;
|
||||
STREAM_CLOSE(OUT);
|
||||
}
|
||||
|
||||
@<Write the head of the HTML@> =
|
||||
HTML::begin_head(OUT, NULL);
|
||||
HTML::title(OUT, I"Extensions");
|
||||
HTML::incorporate_javascript(OUT, TRUE,
|
||||
Supervisor::file_from_installation(JAVASCRIPT_FOR_EXTENSIONS_IRES));
|
||||
HTML::incorporate_CSS(OUT,
|
||||
Supervisor::file_from_installation(CSS_FOR_STANDARD_PAGES_IRES));
|
||||
HTML::end_head(OUT);
|
||||
|
||||
@<Write the body of the HTML@> =
|
||||
HTML::begin_body(OUT, NULL);
|
||||
HTML::begin_html_table(OUT, NULL, TRUE, 0, 4, 0, 0, 0);
|
||||
HTML::first_html_column(OUT, 0);
|
||||
HTML_TAG_WITH("img",
|
||||
"src='inform:/doc_images/extensions@2x.png' border=0 width=150 height=150");
|
||||
HTML::next_html_column(OUT, 0);
|
||||
|
||||
HTML_OPEN_WITH("div", "class=\"headingboxDark\"");
|
||||
HTML_OPEN_WITH("div", "class=\"headingtextWhite\"");
|
||||
WRITE("Installed Extensions");
|
||||
HTML_CLOSE("div");
|
||||
HTML_OPEN_WITH("div", "class=\"headingrubricWhite\"");
|
||||
WRITE("Bundles of extra rules or phrases to extend what Inform can do");
|
||||
HTML_CLOSE("div");
|
||||
HTML_CLOSE("div");
|
||||
@<Write the heading details text for the page@>;
|
||||
HTML::end_html_row(OUT);
|
||||
HTML::end_html_table(OUT);
|
||||
HTML_TAG("hr");
|
||||
@<Write the main content for the page@>;
|
||||
HTML::end_body(OUT);
|
||||
|
||||
@<Write the heading details text for the page@> =
|
||||
switch (content) {
|
||||
case HOME_EXTPAGE:
|
||||
@<Display the location of installed extensions@>;
|
||||
@<Display a warning about any census errors which turned up@>;
|
||||
break;
|
||||
case INDEX_EXTPAGE:
|
||||
HTML_OPEN("p");
|
||||
WRITE("Whenever an extension is used, its definitions are entered into the "
|
||||
"following index. (Thus, a newly installed but never-used extension "
|
||||
"is not indexed yet.).");
|
||||
HTML_CLOSE("p");
|
||||
break;
|
||||
}
|
||||
|
||||
@<Write the main content for the page@> =
|
||||
switch (content) {
|
||||
case HOME_EXTPAGE: @<Display an alphabetised directory@>; break;
|
||||
case INDEX_EXTPAGE: ExtensionDictionary::write_to_HTML(OUT); break;
|
||||
}
|
||||
|
||||
@ From here on, then, all the code in this section generates the main directory
|
||||
page, not the index of terms, which is all handled by
|
||||
//ExtensionDictionary::write_to_HTML//.
|
||||
|
||||
@<Display the location of installed extensions@> =
|
||||
int nps = 0, nbi = 0, ni = 0;
|
||||
extension_census_datum *ecd;
|
||||
LOOP_OVER(ecd, extension_census_datum) {
|
||||
if (Nests::get_tag(ecd->found_as->nest) == MATERIALS_NEST_TAG) nps++;
|
||||
else if (Nests::get_tag(ecd->found_as->nest) == INTERNAL_NEST_TAG) nbi++;
|
||||
else ni++;
|
||||
}
|
||||
|
||||
HTML_OPEN("p");
|
||||
HTML_TAG_WITH("img", "src='inform:/doc_images/builtin_ext.png' border=0");
|
||||
WRITE(" You have "
|
||||
"%d extensions built-in to this copy of Inform, marked with a grey folder "
|
||||
"icon in the catalogue below.",
|
||||
nbi);
|
||||
HTML_CLOSE("p");
|
||||
HTML_OPEN("p");
|
||||
if (ni == 0) {
|
||||
HTML_TAG_WITH("img", "src='inform:/doc_images/folder4.png' border=0");
|
||||
WRITE(" You have no other extensions installed at present.");
|
||||
} else {
|
||||
#ifdef INDEX_MODULE
|
||||
HTML::Javascript::open_file(OUT, ExtensionCensus::external_path(C), NULL,
|
||||
"src='inform:/doc_images/folder4.png' border=0");
|
||||
#endif
|
||||
WRITE(" You have %d further extension%s installed. These are marked "
|
||||
"with a blue folder icon in the catalogue below. (Click it to see "
|
||||
"where the file is stored on your computer.) "
|
||||
"For more extensions, visit <b>www.inform7.com</b>.",
|
||||
ni, (ni==1)?"":"s");
|
||||
}
|
||||
HTML_CLOSE("p");
|
||||
if (nps > 0) {
|
||||
HTML_OPEN("p");
|
||||
#ifdef INDEX_MODULE
|
||||
HTML::Javascript::open_file(OUT, ExtensionCensus::internal_path(C),
|
||||
NULL, PROJECT_SPECIFIC_SYMBOL);
|
||||
#endif
|
||||
WRITE(" You have %d extension%s in the .materials folder for the "
|
||||
"current project. (Click the purple folder icon to show the "
|
||||
"location.) %s not available to other projects.",
|
||||
nps, (nps==1)?"":"s", (nps==1)?"This is":"These are");
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
|
||||
@ We sometimes position a warning prominently at the top of the listing,
|
||||
because otherwise its position at the bottom will be invisible unless the user
|
||||
scrolls a long way:
|
||||
|
||||
@<Display a warning about any census errors which turned up@> =
|
||||
if ((C->no_census_errors > 0) &&
|
||||
(NUMBER_CREATED(extension_census_datum) >= 20)) { /* it's a short page anyway */
|
||||
HTML_OPEN("p");
|
||||
HTML_TAG_WITH("img", "border=0 src=inform:/doc_images/misinstalled.png");
|
||||
WRITE(" "
|
||||
"<b>Warning</b>. One or more extensions are installed incorrectly: "
|
||||
"see details below.");
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
|
||||
@ The following is an alphabetised directory of extensions by author and then
|
||||
title, along with some useful information about them, and then a list of
|
||||
any oddities found in the external extensions area.
|
||||
|
||||
@<Display an alphabetised directory@> =
|
||||
int key_vms = FALSE, key_override = FALSE, key_builtin = FALSE,
|
||||
key_pspec = FALSE, key_bullet = FALSE;
|
||||
@<Display the census radio buttons@>;
|
||||
int no_entries = NUMBER_CREATED(extension_census_datum);
|
||||
extension_census_datum **sorted_census_results = Memory::calloc(no_entries,
|
||||
sizeof(extension_census_datum *), EXTENSION_DICTIONARY_MREASON);
|
||||
for (int d=1; d<=5; d++) {
|
||||
@<Start an HTML division for this sorted version of the census@>;
|
||||
@<Sort the census into the appropriate order@>;
|
||||
@<Display the sorted version of the census@>;
|
||||
HTML_CLOSE("div");
|
||||
}
|
||||
@<Print the key to any symbols used in the census lines@>;
|
||||
@<Transcribe any census errors@>;
|
||||
Memory::I7_array_free(sorted_census_results, EXTENSION_DICTIONARY_MREASON,
|
||||
no_entries, sizeof(extension_census_datum *));
|
||||
|
||||
@ I am the first to admit that this implementation is not inspired. There
|
||||
are five radio buttons, and number 2 is selected by default.
|
||||
|
||||
@<Display the census radio buttons@> =
|
||||
HTML_OPEN("p");
|
||||
WRITE("Sort catalogue: ");
|
||||
HTML_OPEN_WITH("a",
|
||||
"href=\"#\" style=\"text-decoration: none\" "
|
||||
"onclick=\"openExtra('disp1', 'plus1'); closeExtra('disp2', 'plus2'); "
|
||||
"closeExtra('disp3', 'plus3'); closeExtra('disp4', 'plus4'); "
|
||||
"closeExtra('disp5', 'plus5'); return false;\"");
|
||||
HTML_TAG_WITH("img", "border=0 id=\"plus1\" src=inform:/doc_images/extrarboff.png");
|
||||
WRITE(" By title");
|
||||
HTML_CLOSE("a");
|
||||
WRITE(" | ");
|
||||
HTML_OPEN_WITH("a",
|
||||
"href=\"#\" style=\"text-decoration: none\" "
|
||||
"onclick=\"closeExtra('disp1', 'plus1'); openExtra('disp2', 'plus2'); "
|
||||
"closeExtra('disp3', 'plus3'); closeExtra('disp4', 'plus4'); "
|
||||
"closeExtra('disp5', 'plus5'); return false;\"");
|
||||
HTML_TAG_WITH("img", "border=0 id=\"plus2\" src=inform:/doc_images/extrarbon.png");
|
||||
WRITE(" By author");
|
||||
HTML_CLOSE("a");
|
||||
WRITE(" | ");
|
||||
HTML_OPEN_WITH("a",
|
||||
"href=\"#\" style=\"text-decoration: none\" "
|
||||
"onclick=\"closeExtra('disp1', 'plus1'); closeExtra('disp2', 'plus2'); "
|
||||
"openExtra('disp3', 'plus3'); closeExtra('disp4', 'plus4'); "
|
||||
"closeExtra('disp5', 'plus5'); return false;\"");
|
||||
HTML_TAG_WITH("img", "border=0 id=\"plus3\" src=inform:/doc_images/extrarboff.png");
|
||||
WRITE(" By installation");
|
||||
HTML_CLOSE("a");
|
||||
WRITE(" | ");
|
||||
HTML_OPEN_WITH("a",
|
||||
"href=\"#\" style=\"text-decoration: none\" "
|
||||
"onclick=\"closeExtra('disp1', 'plus1'); closeExtra('disp2', 'plus2'); "
|
||||
"closeExtra('disp3', 'plus3'); openExtra('disp4', 'plus4'); "
|
||||
"closeExtra('disp5', 'plus5'); return false;\"");
|
||||
HTML_TAG_WITH("img", "border=0 id=\"plus4\" src=inform:/doc_images/extrarboff.png");
|
||||
WRITE(" By date used");
|
||||
HTML_CLOSE("a");
|
||||
WRITE(" | ");
|
||||
HTML_OPEN_WITH("a",
|
||||
"href=\"#\" style=\"text-decoration: none\" "
|
||||
"onclick=\"closeExtra('disp1', 'plus1'); closeExtra('disp2', 'plus2'); "
|
||||
"closeExtra('disp3', 'plus3'); closeExtra('disp4', 'plus4'); "
|
||||
"openExtra('disp5', 'plus5'); return false;\"");
|
||||
HTML_TAG_WITH("img", "border=0 id=\"plus5\" src=inform:/doc_images/extrarboff.png");
|
||||
WRITE(" By word count");
|
||||
HTML_CLOSE("a");
|
||||
HTML_CLOSE("p");
|
||||
|
||||
@ Consequently, of the five divisions, number 2 is shown and the others
|
||||
hidden, by default.
|
||||
|
||||
@<Start an HTML division for this sorted version of the census@> =
|
||||
char *display = "none";
|
||||
if (d == SORT_CE_BY_AUTHOR) display = "block";
|
||||
HTML_OPEN_WITH("div", "id=\"disp%d\" style=\"display: %s;\"", d, display);
|
||||
|
||||
@ The key at the foot only explicates those symbols actually used, and
|
||||
doesn't explicate the "unindexed" symbol at all, since that's actually
|
||||
just a blank image used for horizontal spacing to keep margins straight.
|
||||
|
||||
@<Print the key to any symbols used in the census lines@> =
|
||||
if ((key_builtin) || (key_override) || (key_bullet) || (key_vms) || (key_pspec)) {
|
||||
HTML_OPEN("p");
|
||||
WRITE("Key: ");
|
||||
if (key_bullet) {
|
||||
HTML_TAG_WITH("img", "%s", INDEXED_SYMBOL);
|
||||
WRITE(" Used ");
|
||||
}
|
||||
if (key_builtin) {
|
||||
HTML_TAG_WITH("img", "%s", BUILT_IN_SYMBOL);
|
||||
WRITE(" Built in ");
|
||||
}
|
||||
if (key_pspec) {
|
||||
HTML_TAG_WITH("img", "%s", PROJECT_SPECIFIC_SYMBOL);
|
||||
WRITE(" Project specific ");
|
||||
}
|
||||
if (key_override) {
|
||||
HTML_TAG_WITH("img", "%s", OVERRIDING_SYMBOL);
|
||||
WRITE(" Your version overrides the one built in ");
|
||||
}
|
||||
if (key_vms) {
|
||||
#ifdef CORE_MODULE
|
||||
HTML_TAG("br");
|
||||
ExtensionIndex::write_key(OUT);
|
||||
#endif
|
||||
}
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
|
||||
@ Census errors are nothing more than copy errors arising on the copies
|
||||
of extensions found by the census:
|
||||
|
||||
@<Transcribe any census errors@> =
|
||||
if (C->no_census_errors > 0) {
|
||||
@<Include the headnote explaining what census errors are@>;
|
||||
inbuild_search_result *R;
|
||||
LOOP_OVER_LINKED_LIST(R, inbuild_search_result, C->raw_data)
|
||||
if (LinkedLists::len(R->copy->errors_reading_source_text) > 0) {
|
||||
copy_error *CE;
|
||||
LOOP_OVER_LINKED_LIST(CE, copy_error,
|
||||
R->copy->errors_reading_source_text) {
|
||||
#ifdef INDEX_MODULE
|
||||
HTMLFiles::open_para(OUT, 2, "hanging");
|
||||
#endif
|
||||
#ifndef INDEX_MODULE
|
||||
HTML_OPEN("p");
|
||||
#endif
|
||||
WRITE("<b>%X</b> - ", R->copy->edition->work);
|
||||
CopyErrors::write(OUT, CE);
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ We only want to warn people here: not to stop them from using Inform
|
||||
until they put matters right.
|
||||
|
||||
@<Include the headnote explaining what census errors are@> =
|
||||
HTML_TAG("hr");
|
||||
HTML_OPEN("p");
|
||||
HTML_TAG_WITH("img", "border=0 align=\"left\" src=inform:/doc_images/census_problem.png");
|
||||
WRITE("<b>Warning</b>. Inform checks the folder of user-installed extensions "
|
||||
"each time it translates the source text, in order to keep this directory "
|
||||
"page up to date. Each file must be a properly labelled extension (with "
|
||||
"its titling line correctly identifying itself), and must be in the right "
|
||||
"place - e.g. 'Marbles by Daphne Quilt' must have the filename 'Marbles.i7x' "
|
||||
"(or just 'Marbles' with no file extension) and be stored in the folder "
|
||||
"'Daphne Quilt'. The title should be at most %d characters long; the "
|
||||
"author name, %d. At the last check, these rules were not being followed:",
|
||||
MAX_EXTENSION_TITLE_LENGTH, MAX_EXTENSION_AUTHOR_LENGTH);
|
||||
HTML_CLOSE("p");
|
||||
|
||||
@
|
||||
|
||||
@d SORT_CE_BY_TITLE 1
|
||||
@d SORT_CE_BY_AUTHOR 2
|
||||
@d SORT_CE_BY_INSTALL 3
|
||||
@d SORT_CE_BY_DATE 4
|
||||
@d SORT_CE_BY_LENGTH 5
|
||||
|
||||
@<Sort the census into the appropriate order@> =
|
||||
int i = 0;
|
||||
extension_census_datum *ecd;
|
||||
LOOP_OVER(ecd, extension_census_datum)
|
||||
sorted_census_results[i++] = ecd;
|
||||
int (*criterion)(const void *, const void *) = NULL;
|
||||
switch (d) {
|
||||
case SORT_CE_BY_TITLE: criterion = ExtensionCensus::compare_ecd_by_title; break;
|
||||
case SORT_CE_BY_AUTHOR: criterion = ExtensionCensus::compare_ecd_by_author; break;
|
||||
case SORT_CE_BY_INSTALL: criterion = ExtensionCensus::compare_ecd_by_installation; break;
|
||||
case SORT_CE_BY_DATE: criterion = ExtensionCensus::compare_ecd_by_date; break;
|
||||
case SORT_CE_BY_LENGTH: criterion = ExtensionCensus::compare_ecd_by_length; break;
|
||||
default: internal_error("no such sorting criterion");
|
||||
}
|
||||
qsort(sorted_census_results, (size_t) no_entries, sizeof(extension_census_datum *),
|
||||
criterion);
|
||||
|
||||
@ Standard rows have black text on striped background colours, these being
|
||||
the usual ones seen in Mac OS X applications such as iTunes.
|
||||
|
||||
@d FIRST_STRIPE_COLOUR "#ffffff"
|
||||
@d SECOND_STRIPE_COLOUR "#f3f6fa"
|
||||
|
||||
@<Display the sorted version of the census@> =
|
||||
HTML::begin_html_table(OUT, FIRST_STRIPE_COLOUR, TRUE, 0, 0, 2, 0, 0);
|
||||
@<Show a titling row explaining the census sorting, if necessary@>;
|
||||
int stripe = 0;
|
||||
TEMPORARY_TEXT(current_author_name);
|
||||
int i, current_installation = -1;
|
||||
for (i=0; i<no_entries; i++) {
|
||||
extension_census_datum *ecd = sorted_census_results[i];
|
||||
@<Insert a subtitling row in the census sorting, if necessary@>;
|
||||
stripe = 1 - stripe;
|
||||
if (stripe == 0)
|
||||
HTML::first_html_column_coloured(OUT, 0, SECOND_STRIPE_COLOUR, 0);
|
||||
else
|
||||
HTML::first_html_column_coloured(OUT, 0, FIRST_STRIPE_COLOUR, 0);
|
||||
@<Print the census line for this extension@>;
|
||||
HTML::end_html_row(OUT);
|
||||
}
|
||||
DISCARD_TEXT(current_author_name);
|
||||
@<Show a final titling row closing the census sorting@>;
|
||||
HTML::end_html_table(OUT);
|
||||
|
||||
@<Show a titling row explaining the census sorting, if necessary@> =
|
||||
switch (d) {
|
||||
case SORT_CE_BY_TITLE:
|
||||
@<Begin a tinted census line@>;
|
||||
WRITE("Extensions in alphabetical order");
|
||||
@<End a tinted census line@>;
|
||||
break;
|
||||
case SORT_CE_BY_DATE:
|
||||
@<Begin a tinted census line@>;
|
||||
WRITE("Extensions in order of date used (most recent first)");
|
||||
@<End a tinted census line@>;
|
||||
break;
|
||||
case SORT_CE_BY_LENGTH:
|
||||
@<Begin a tinted census line@>;
|
||||
WRITE("Extensions in order of word count (longest first)");
|
||||
@<End a tinted census line@>;
|
||||
break;
|
||||
}
|
||||
|
||||
@<Insert a subtitling row in the census sorting, if necessary@> =
|
||||
if ((d == SORT_CE_BY_AUTHOR) &&
|
||||
(Str::ne(current_author_name, ecd->found_as->copy->edition->work->author_name))) {
|
||||
Str::copy(current_author_name, ecd->found_as->copy->edition->work->author_name);
|
||||
@<Begin a tinted census line@>;
|
||||
@<Print the author's line in the extension census table@>;
|
||||
@<End a tinted census line@>;
|
||||
stripe = 0;
|
||||
}
|
||||
if ((d == SORT_CE_BY_INSTALL) &&
|
||||
(ExtensionCensus::installation_region(ecd) != current_installation)) {
|
||||
current_installation = ExtensionCensus::installation_region(ecd);
|
||||
@<Begin a tinted census line@>;
|
||||
@<Print the installation region in the extension census table@>;
|
||||
@<End a tinted census line@>;
|
||||
stripe = 0;
|
||||
}
|
||||
|
||||
@<Show a final titling row closing the census sorting@> =
|
||||
@<Begin a tinted census line@>;
|
||||
HTML_OPEN_WITH("span", "class=\"smaller\"");
|
||||
WRITE("%d extensions installed", no_entries);
|
||||
HTML_CLOSE("span");
|
||||
@<End a tinted census line@>;
|
||||
|
||||
@ Black text on a grey background.
|
||||
|
||||
@d CENSUS_TITLING_BG "#808080"
|
||||
|
||||
@<Begin a tinted census line@> =
|
||||
int span = 4;
|
||||
if (d == SORT_CE_BY_TITLE) span = 3;
|
||||
HTML::first_html_column_coloured(OUT, 0, CENSUS_TITLING_BG, span);
|
||||
HTML::begin_colour(OUT, I"ffffff");
|
||||
WRITE(" ");
|
||||
|
||||
@<End a tinted census line@> =
|
||||
HTML::end_colour(OUT);
|
||||
HTML::end_html_row(OUT);
|
||||
|
||||
@ Used only in "by author".
|
||||
|
||||
@<Print the author's line in the extension census table@> =
|
||||
WRITE("%S", ecd->found_as->copy->edition->work->raw_author_name);
|
||||
|
||||
extension_census_datum *ecd2;
|
||||
int cu = 0, cn = 0, j;
|
||||
for (j = i; j < no_entries; j++) {
|
||||
ecd2 = sorted_census_results[j];
|
||||
if (Str::ne(current_author_name,
|
||||
ecd2->found_as->copy->edition->work->author_name)) break;
|
||||
if (ExtensionCensus::ecd_used(ecd2)) cu++;
|
||||
else cn++;
|
||||
}
|
||||
WRITE(" ");
|
||||
HTML_OPEN_WITH("span", "class=\"smaller\"");
|
||||
WRITE("%d extension%s", cu+cn, (cu+cn==1)?"":"s");
|
||||
if ((cu == 0) && (cn == 1)) WRITE(", unused");
|
||||
else if ((cu == 0) && (cn == 2)) WRITE(", both unused");
|
||||
else if ((cu == 0) && (cn > 2)) WRITE(", all unused");
|
||||
else if ((cn == 0) && (cu == 1)) WRITE(", used");
|
||||
else if ((cn == 0) && (cu == 2)) WRITE(", both used");
|
||||
else if ((cn == 0) && (cu > 2)) WRITE(", all used");
|
||||
else if (cn+cu > 0) WRITE(", %d used, %d unused", cu, cn);
|
||||
WRITE(")");
|
||||
HTML_CLOSE("span");
|
||||
|
||||
@ Used only in "by installation".
|
||||
|
||||
@<Print the installation region in the extension census table@> =
|
||||
switch (current_installation) {
|
||||
case 0:
|
||||
WRITE("Supplied in the .materials folder ");
|
||||
HTML_OPEN_WITH("span", "class=\"smaller\"");
|
||||
WRITE("%p", ExtensionCensus::internal_path(C));
|
||||
HTML_CLOSE("span"); break;
|
||||
case 1: WRITE("Built in to Inform"); break;
|
||||
case 2: WRITE("User installed but overriding a built-in extension"); break;
|
||||
case 3:
|
||||
WRITE("User installed ");
|
||||
HTML_OPEN_WITH("span", "class=\"smaller\"");
|
||||
WRITE("%p", ExtensionCensus::external_path(C));
|
||||
HTML_CLOSE("span"); break;
|
||||
}
|
||||
|
||||
@
|
||||
|
||||
@d UNINDEXED_SYMBOL "border=\"0\" src=\"inform:/doc_images/unindexed_bullet.png\""
|
||||
@d INDEXED_SYMBOL "border=\"0\" src=\"inform:/doc_images/indexed_bullet.png\""
|
||||
|
||||
@<Print the census line for this extension@> =
|
||||
@<Print column 1 of the census line@>;
|
||||
HTML::next_html_column_nw(OUT, 0);
|
||||
if (d != SORT_CE_BY_TITLE) {
|
||||
@<Print column 2 of the census line@>;
|
||||
HTML::next_html_column_nw(OUT, 0);
|
||||
}
|
||||
@<Print column 3 of the census line@>;
|
||||
HTML::next_html_column_w(OUT, 0);
|
||||
@<Print column 4 of the census line@>;
|
||||
|
||||
@ The appearance of the line is
|
||||
|
||||
>> (bullet) The Title (by The Author) (VM requirement icons)
|
||||
|
||||
where all is optional except the title part.
|
||||
|
||||
@<Print column 1 of the census line@> =
|
||||
char *bulletornot = UNINDEXED_SYMBOL;
|
||||
if (ExtensionCensus::ecd_used(ecd)) {
|
||||
bulletornot = INDEXED_SYMBOL; key_bullet = TRUE;
|
||||
}
|
||||
WRITE(" ");
|
||||
HTML_TAG_WITH("img", "%s", bulletornot);
|
||||
|
||||
Works::begin_extension_link(OUT,
|
||||
ecd->found_as->copy->edition->work, ExtensionCensus::ecd_rubric(ecd));
|
||||
if (d != SORT_CE_BY_AUTHOR) {
|
||||
HTML::begin_colour(OUT, I"404040");
|
||||
WRITE("%S", ecd->found_as->copy->edition->work->raw_title);
|
||||
if (Str::len(ecd->found_as->copy->edition->work->raw_title) +
|
||||
Str::len(ecd->found_as->copy->edition->work->raw_author_name) > 45) {
|
||||
HTML_TAG("br");
|
||||
WRITE(" ");
|
||||
} else
|
||||
WRITE(" ");
|
||||
WRITE("by %S", ecd->found_as->copy->edition->work->raw_author_name);
|
||||
HTML::end_colour(OUT);
|
||||
} else {
|
||||
HTML::begin_colour(OUT, I"404040");
|
||||
WRITE("%S", ecd->found_as->copy->edition->work->raw_title);
|
||||
HTML::end_colour(OUT);
|
||||
}
|
||||
Works::end_extension_link(OUT, ecd->found_as->copy->edition->work);
|
||||
|
||||
compatibility_specification *C = ecd->found_as->copy->edition->compatibility;
|
||||
if (Str::len(C->parsed_from) > 0) {
|
||||
@<Append icons which signify the VM requirements of the extension@>;
|
||||
key_vms = TRUE;
|
||||
}
|
||||
|
||||
@ VM requirements are parsed by feeding them into the lexer and calling the
|
||||
same routines as would be used when parsing headings about VM requirements
|
||||
in a normal run of Inform. Note that because the requirements are in round
|
||||
brackets, which the lexer will split off as distinct words, we can ignore
|
||||
the first and last word and just look at what is in between:
|
||||
|
||||
@<Append icons which signify the VM requirements of the extension@> =
|
||||
WRITE(" %S", C->parsed_from);
|
||||
#ifdef CORE_MODULE
|
||||
ExtensionIndex::write_icons(OUT, C);
|
||||
#endif
|
||||
|
||||
@<Print column 2 of the census line@> =
|
||||
HTML_OPEN_WITH("span", "class=\"smaller\"");
|
||||
if (VersionNumbers::is_null(ecd->found_as->copy->edition->version) == FALSE)
|
||||
WRITE("v %v", &(ecd->found_as->copy->edition->version));
|
||||
else
|
||||
WRITE("--");
|
||||
HTML_CLOSE("span");
|
||||
|
||||
@
|
||||
|
||||
@d BUILT_IN_SYMBOL "border=\"0\" src=\"inform:/doc_images/builtin_ext.png\""
|
||||
@d OVERRIDING_SYMBOL "border=\"0\" src=\"inform:/doc_images/override_ext.png\""
|
||||
@d PROJECT_SPECIFIC_SYMBOL "border=\"0\" src=\"inform:/doc_images/pspec_ext.png\""
|
||||
|
||||
@<Print column 3 of the census line@> =
|
||||
char *opener = "src='inform:/doc_images/folder4.png' border=0";
|
||||
if (Nests::get_tag(ecd->found_as->nest) == INTERNAL_NEST_TAG) {
|
||||
opener = BUILT_IN_SYMBOL; key_builtin = TRUE;
|
||||
}
|
||||
if (ecd->overriding_a_built_in_extension) {
|
||||
opener = OVERRIDING_SYMBOL; key_override = TRUE;
|
||||
}
|
||||
if (Nests::get_tag(ecd->found_as->nest) == MATERIALS_NEST_TAG) {
|
||||
opener = PROJECT_SPECIFIC_SYMBOL; key_pspec = TRUE;
|
||||
}
|
||||
if (Nests::get_tag(ecd->found_as->nest) == INTERNAL_NEST_TAG)
|
||||
HTML_TAG_WITH("img", "%s", opener)
|
||||
else {
|
||||
#ifdef INDEX_MODULE
|
||||
pathname *area = ExtensionManager::path_within_nest(ecd->found_as->nest);
|
||||
HTML::Javascript::open_file(OUT, area,
|
||||
ecd->found_as->copy->edition->work->raw_author_name, opener);
|
||||
#endif
|
||||
}
|
||||
|
||||
@<Print column 4 of the census line@> =
|
||||
HTML_OPEN_WITH("span", "class=\"smaller\"");
|
||||
if ((d == SORT_CE_BY_DATE) || (d == SORT_CE_BY_INSTALL)) {
|
||||
WRITE("%S", Works::get_usage_date(ecd->found_as->copy->edition->work));
|
||||
} else if (d == SORT_CE_BY_LENGTH) {
|
||||
if (Works::forgot(ecd->found_as->copy->edition->work))
|
||||
WRITE("I did read this, but forgot");
|
||||
else if (Works::never(ecd->found_as->copy->edition->work))
|
||||
WRITE("I've never read this");
|
||||
else
|
||||
WRITE("%d words", Works::get_word_count(ecd->found_as->copy->edition->work));
|
||||
} else {
|
||||
if (Str::len(ExtensionCensus::ecd_rubric(ecd)) > 0)
|
||||
WRITE("%S", ExtensionCensus::ecd_rubric(ecd));
|
||||
else
|
||||
WRITE("--");
|
||||
}
|
||||
HTML_CLOSE("span");
|
||||
|
||||
@h Icons for virtual machines.
|
||||
And everything else is cosmetic: printing, or showing icons to signify,
|
||||
the current VM or some set of permitted VMs. The following plots the
|
||||
icon associated with a given minor VM, and explicates what the icons mean:
|
||||
|
||||
=
|
||||
void ExtensionIndex::plot_icon(OUTPUT_STREAM, target_vm *VM) {
|
||||
if (Str::len(VM->VM_image) > 0) {
|
||||
HTML_TAG_WITH("img", "border=0 src=inform:/doc_images/%S", VM->VM_image);
|
||||
WRITE(" ");
|
||||
}
|
||||
}
|
||||
|
||||
void ExtensionIndex::write_key(OUTPUT_STREAM) {
|
||||
WRITE("Extensions compatible with specific story file formats only: ");
|
||||
int i = 0;
|
||||
target_vm *VM;
|
||||
LOOP_OVER(VM, target_vm) {
|
||||
if (VM->with_debugging_enabled) continue; /* avoids listing twice */
|
||||
if (i++ > 0) WRITE(", ");
|
||||
ExtensionIndex::plot_icon(OUT, VM);
|
||||
TargetVMs::write(OUT, VM);
|
||||
}
|
||||
}
|
||||
|
||||
@h Displaying VM restrictions.
|
||||
Given a word range, we describe the result as concisely as we can with a
|
||||
row of icons (but do not bother for the common case where some extension
|
||||
has no restriction on its use).
|
||||
|
||||
=
|
||||
void ExtensionIndex::write_icons(OUTPUT_STREAM, compatibility_specification *C) {
|
||||
int something = FALSE, everything = TRUE;
|
||||
target_vm *VM;
|
||||
LOOP_OVER(VM, target_vm)
|
||||
if (Compatibility::with(C, VM))
|
||||
something = TRUE;
|
||||
else
|
||||
everything = FALSE;
|
||||
if (something == FALSE) WRITE("none");
|
||||
if (everything == FALSE)
|
||||
LOOP_OVER(VM, target_vm)
|
||||
if ((Compatibility::with(C, VM)) && (TargetVMs::debug_enabled(VM)))
|
||||
ExtensionIndex::plot_icon(OUT, VM);
|
||||
}
|
||||
|
|
@ -1,53 +1,23 @@
|
|||
[ExtensionDocumentation::] Documentation.
|
||||
[ExtensionPages::] Individual Pages.
|
||||
|
||||
To generate HTML documentation for extensions.
|
||||
To generate the individual pages on extensions in the extension mini-website.
|
||||
|
||||
@ Each extension gets its own page in the external documentation area, but
|
||||
this page can have two forms:
|
||||
@ //ExtensionWebsite::go// calls the following function to make either a
|
||||
detailed or a sketchy documentation page on an extension, supplying either
|
||||
a non-null |E| for details, or a non-null |ecd| for a sketch.
|
||||
|
||||
First, the deluxe version, produced if a project |proj| has successfully used
|
||||
the extension on this run and we therefore know a lot about the extension --
|
||||
|
||||
=
|
||||
void ExtensionDocumentation::write_detailed(inform_extension *E, inform_project *proj) {
|
||||
ExtensionDocumentation::write(NULL, E, FALSE, proj);
|
||||
}
|
||||
|
||||
@ Second, the ordinaire version, where a census has detected the extension
|
||||
but Inform has apparently never used it. |force_update| here is |TRUE| if a
|
||||
full |-census| run is under way, |FALSE| if this is instead merely an update,
|
||||
in which case we do not overwrite an existing documentation file. See below.
|
||||
|
||||
=
|
||||
void ExtensionDocumentation::write_sketchy(extension_census_datum *ecd, int force_update) {
|
||||
ExtensionDocumentation::write(ecd, NULL, force_update, NULL);
|
||||
}
|
||||
|
||||
@ Thus we pass two arguments, |ecd| and |E|, to |ExtensionDocumentation::write|:
|
||||
one is a valid pointer, the other null. If |E| is valid, we can write a full
|
||||
page: if |ecd| is valid, only a sketchy one.
|
||||
|
||||
The outer shell routine calls the inner one first to generate the main
|
||||
The outer shell function calls the inner one first to generate the main
|
||||
page of the documentation (where |eg_number| is |-1|), then uses its return
|
||||
value (the number of examples provided, which may be 0) to generate
|
||||
associated files for each example. For instance, we might end up making,
|
||||
in sequence,
|
||||
= (text)
|
||||
Documentation/Extensions/Emily Short/Locksmith.html
|
||||
Documentation/Extensions/Emily Short/Locksmith-eg1.html
|
||||
Documentation/Extensions/Emily Short/Locksmith-eg2.html
|
||||
Documentation/Extensions/Emily Short/Locksmith-eg3.html
|
||||
Documentation/Extensions/Emily Short/Locksmith-eg4.html
|
||||
=
|
||||
where these are pathnames relative to the external resources area.
|
||||
associated files for each example.w
|
||||
|
||||
=
|
||||
void ExtensionDocumentation::write(extension_census_datum *ecd,
|
||||
void ExtensionPages::write_page(extension_census_datum *ecd,
|
||||
inform_extension *E, int force_update, inform_project *proj) {
|
||||
int c, eg_count;
|
||||
eg_count = ExtensionDocumentation::write_page(ecd, E, -1, force_update, proj);
|
||||
eg_count = ExtensionPages::write_page_inner(ecd, E, -1, force_update, proj);
|
||||
for (c=1; c<=eg_count; c++)
|
||||
ExtensionDocumentation::write_page(ecd, E, c, force_update, proj);
|
||||
ExtensionPages::write_page_inner(ecd, E, c, force_update, proj);
|
||||
}
|
||||
|
||||
@ Here then is the nub of it. An ECD is not really enough information to go on.
|
||||
|
@ -64,27 +34,21 @@ will at least provide the extension author's supplied documentation, if there
|
|||
is any, as well as the correct identifying headings and requirements.
|
||||
|
||||
=
|
||||
int ExtensionDocumentation::write_page(extension_census_datum *ecd,
|
||||
int ExtensionPages::write_page_inner(extension_census_datum *ecd,
|
||||
inform_extension *E, int eg_number, int force_update, inform_project *proj) {
|
||||
inbuild_work *work = NULL;
|
||||
if (ecd) work = ecd->found_as->copy->edition->work;
|
||||
else if (E) work = E->as_copy->edition->work;
|
||||
else internal_error("write_page incorrectly called");
|
||||
|
||||
TEMPORARY_TEXT(leaf);
|
||||
Str::copy(leaf, work->title);
|
||||
if (eg_number > 0) WRITE_TO(leaf, "-eg%d", eg_number);
|
||||
filename *F = ExtensionDocumentation::location(leaf, work->author_name);
|
||||
filename *F = ExtensionWebsite::page_URL(work, eg_number);
|
||||
if (F == NULL) return 0;
|
||||
int page_exists_already = TextFiles::exists(F);
|
||||
LOGIF(EXTENSIONS_CENSUS, "Write %s (%X)/%d %s: %f\n",
|
||||
(ecd)?"ecd":" ef", work, eg_number,
|
||||
(page_exists_already)?"exists":"does not exist", F);
|
||||
|
||||
if (ecd) {
|
||||
if ((page_exists_already == FALSE) || (force_update))
|
||||
@<Convert ECD to a text-only E@>;
|
||||
return 0; /* ensure no requests sent for further pages about the ECD: see below */
|
||||
}
|
||||
if (ecd) @<Convert ECD to a text-only E@>;
|
||||
|
||||
if (Pathnames::create_in_file_system(Filenames::up(F)) == 0) return 0;
|
||||
text_stream DOCF_struct;
|
||||
|
@ -95,25 +59,27 @@ int ExtensionDocumentation::write_page(extension_census_datum *ecd,
|
|||
int no_egs = 0;
|
||||
@<Write the actual extension documentation page@>;
|
||||
STREAM_CLOSE(OUT);
|
||||
DISCARD_TEXT(leaf);
|
||||
return no_egs;
|
||||
}
|
||||
|
||||
@ The reader may wonder why we perform the conversion in this slightly recursive
|
||||
way, by calling our parent routine again. Wouldn't it be simpler just to set
|
||||
way, by calling our parent function again. Wouldn't it be simpler just to set
|
||||
|ecd| to null and let events take their course? The answer is that this would
|
||||
fail if there were examples, because we would return (say) 3 for the number
|
||||
of examples, and then the routine would be called 3 more times -- but with
|
||||
of examples, and then the function would be called 3 more times -- but with
|
||||
the original ECD as argument each time: that would mean reading the file
|
||||
thrice more, reconverting to E each time. So we restart the process from
|
||||
our E, and return 0 in response to the ECD call to prevent further ECD calls.
|
||||
|
||||
@<Convert ECD to a text-only E@> =
|
||||
Feeds::feed_text(L"This sentence provides a firebreak, no more. ");
|
||||
E = ExtensionDocumentation::obtain_extension(work, proj);
|
||||
if (E == NULL) return 0; /* shouldn't happen: it was there only moments ago */
|
||||
Copies::get_source_text(E->as_copy);
|
||||
ExtensionDocumentation::write(NULL, E, force_update, proj);
|
||||
if ((page_exists_already == FALSE) || (force_update)) {
|
||||
Feeds::feed_text(L"This sentence provides a firebreak, no more. ");
|
||||
E = ExtensionManager::from_copy(ecd->found_as->copy);
|
||||
if (E == NULL) return 0; /* but shouldn't happen: it was there only moments ago */
|
||||
Copies::get_source_text(E->as_copy);
|
||||
ExtensionPages::write_page(NULL, E, force_update, proj);
|
||||
}
|
||||
return 0;
|
||||
|
||||
@<Write the actual extension documentation page@> =
|
||||
HTML::declare_as_HTML(OUT, FALSE);
|
||||
|
@ -127,6 +93,7 @@ our E, and return 0 in response to the ECD call to prevent further ECD calls.
|
|||
HTML::end_head(OUT);
|
||||
|
||||
HTML::begin_body(OUT, NULL);
|
||||
|
||||
HTML::incorporate_HTML(OUT,
|
||||
Supervisor::file_from_installation(EXTENSION_DOCUMENTATION_MODEL_IRES));
|
||||
@<Write documentation for a specific extension into the page@>;
|
||||
|
@ -146,13 +113,20 @@ our E, and return 0 in response to the ECD call to prevent further ECD calls.
|
|||
if (E) @<Write up the version number, if any, and location@>;
|
||||
HTML_CLOSE("span");
|
||||
HTML_CLOSE("p");
|
||||
if (E) @<Write up the rubric, if any@>;
|
||||
if (E) @<Write up the table of contents for the supplied documentation, if any@>;
|
||||
#ifdef CORE_MODULE
|
||||
if (E) Extensions::Files::document_in_detail(OUT, E);
|
||||
#endif
|
||||
HTML_TAG("hr");
|
||||
if (E) @<Write up the supplied documentation, if any@>;
|
||||
if (E) {
|
||||
filename *B = ExtensionWebsite::page_URL(work, -1);
|
||||
TEMPORARY_TEXT(leaf);
|
||||
Filenames::write_unextended_leafname(leaf, B);
|
||||
@<Write up the rubric, if any@>;
|
||||
@<Write up the table of contents for the supplied documentation, if any@>;
|
||||
#ifdef CORE_MODULE
|
||||
Extensions::Files::document_in_detail(OUT, E);
|
||||
#endif
|
||||
@<Write up the supplied documentation, if any@>;
|
||||
DISCARD_TEXT(leaf);
|
||||
} else {
|
||||
HTML_TAG("hr");
|
||||
}
|
||||
|
||||
@<Write Javascript paste icon for source text to include this extension@> =
|
||||
TEMPORARY_TEXT(inclusion_text);
|
||||
|
@ -165,7 +139,7 @@ our E, and return 0 in response to the ECD call to prevent further ECD calls.
|
|||
compatibility_specification *C = E->as_copy->edition->compatibility;
|
||||
if (Str::len(C->parsed_from) > 0) {
|
||||
WRITE("%S ", C->parsed_from);
|
||||
ExtensionCensus::write_icons(OUT, C);
|
||||
ExtensionIndex::write_icons(OUT, C);
|
||||
}
|
||||
|
||||
@<Write up the version number, if any, and location@> =
|
||||
|
@ -205,55 +179,3 @@ easily be scrolled down off screen when the user first visits the page.
|
|||
WRITE("The extension provides no documentation.");
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
|
||||
@ This is where we load an extension purely to look at its supplied
|
||||
documentation.
|
||||
|
||||
=
|
||||
inform_extension *ExtensionDocumentation::obtain_extension(inbuild_work *work,
|
||||
inform_project *proj) {
|
||||
inbuild_requirement *req = Requirements::any_version_of(work);
|
||||
inform_extension *E;
|
||||
LOOP_OVER(E, inform_extension)
|
||||
if (Requirements::meets(E->as_copy->edition, req))
|
||||
return E;
|
||||
|
||||
inbuild_search_result *R = Nests::search_for_best(req, Projects::nest_list(proj));
|
||||
if (R) {
|
||||
inform_extension *E = ExtensionManager::from_copy(R->copy);
|
||||
if (Nests::get_tag(R->nest) == INTERNAL_NEST_TAG)
|
||||
E->loaded_from_built_in_area = TRUE;
|
||||
return E;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@ The documentation goes into |Documentation/Extensions/AUTHOR/TITLE.html|,
|
||||
inside the transient area.
|
||||
|
||||
Everything fails safely (and without errors) if this can't be made. Some
|
||||
Inform users working clandestinely on thumb drives at their places of work say
|
||||
that they can't write extension documentation because they lack the necessary
|
||||
file-system privileges. It would be a pity to deprive them of Inform over this.
|
||||
|
||||
=
|
||||
pathname *ExtensionDocumentation::path(void) {
|
||||
pathname *P = Supervisor::transient();
|
||||
if ((P == NULL) || (Pathnames::create_in_file_system(P) == 0)) return NULL;
|
||||
P = Pathnames::down(P, I"Documentation");
|
||||
if (Pathnames::create_in_file_system(P) == 0) return NULL;
|
||||
P = Pathnames::down(P, I"Extensions");
|
||||
if (Pathnames::create_in_file_system(P) == 0) return NULL;
|
||||
return P;
|
||||
}
|
||||
|
||||
filename *ExtensionDocumentation::location(text_stream *title, text_stream *author) {
|
||||
pathname *P = ExtensionDocumentation::path();
|
||||
if (P == NULL) return NULL;
|
||||
|
||||
TEMPORARY_TEXT(leaf);
|
||||
WRITE_TO(leaf, "%S.html", title);
|
||||
filename *F = Filenames::in(Pathnames::down(P, author), leaf);
|
||||
DISCARD_TEXT(leaf);
|
||||
return F;
|
||||
}
|
159
inbuild/supervisor-module/Chapter 7/The Mini-Website.w
Normal file
159
inbuild/supervisor-module/Chapter 7/The Mini-Website.w
Normal file
|
@ -0,0 +1,159 @@
|
|||
[ExtensionWebsite::] The Mini-Website.
|
||||
|
||||
To refresh the mini-website of available extensions presented in the
|
||||
Inform GUI applications.
|
||||
|
||||
@h The mini-website.
|
||||
The Inform GUI apps present HTML in-app documentation on extensions: in
|
||||
effect, a mini-website showing all the extensions available to the current
|
||||
user, and giving detailed documentation on each one. The code in this
|
||||
chapter of //supervisor// runs only if and when we want to generate or
|
||||
update that website, and plays no part in Inform compilation or building
|
||||
as such: it lives in //supervisor// because it's essentially concerned
|
||||
with managing resources (i.e., extensions in nests).
|
||||
|
||||
A principle used throughout is that we fail safe and silent: if we can't
|
||||
write the documentation website for any reason (permissions failures, for
|
||||
example) then we make no complaint. It's a convenience for the user, but not
|
||||
an essential. This point of view was encouraged by many Inform users working
|
||||
clandestinely on thumb drives at their places of work, and whose employers
|
||||
had locked their computers down fairly heavily.
|
||||
|
||||
@ The process always involves a "census" of all installed extensions, but
|
||||
can happen for two different reasons:
|
||||
|
||||
(a) when we run in "census mode", because of |-census| at the command line;
|
||||
(b) when //inform7// is indexing after a successful compilation.
|
||||
|
||||
Reason (a) typically happens because the user installs a new extension from
|
||||
the app, and it calls the //inform7// tool in |-census| mode to force an
|
||||
update of the documentation. But (a) can also happen from the command line
|
||||
using either //inbuild// or //inform7//.
|
||||
|
||||
The second sort of census is lighter in effect because only incremental
|
||||
changes to documentation are made, but the process of census-taking is the
|
||||
same either way. Here are the functions for (a) and (b) respectively:
|
||||
|
||||
=
|
||||
void ExtensionWebsite::handle_census_mode(void) {
|
||||
HTMLFiles::set_link_abbreviation_path(NULL);
|
||||
ExtensionWebsite::go(NULL, TRUE);
|
||||
}
|
||||
|
||||
void ExtensionWebsite::index_after_compilation(inform_project *proj) {
|
||||
HTMLFiles::set_link_abbreviation_path(Projects::path(proj));
|
||||
ExtensionWebsite::go(proj, FALSE);
|
||||
}
|
||||
|
||||
void ExtensionWebsite::go(inform_project *proj, int force_update) {
|
||||
ExtensionDictionary::read_from_file();
|
||||
|
||||
extension_census *C = ExtensionCensus::perform(proj);
|
||||
@<Time-stamp extensions used in the project as being last used today@>;
|
||||
@<Write index pages@>;
|
||||
@<Write individual pages on individual extensions@>;
|
||||
|
||||
ExtensionDictionary::write_back();
|
||||
|
||||
if (Log::aspect_switched_on(EXTENSIONS_CENSUS_DA)) Works::log_work_hash_table();
|
||||
}
|
||||
|
||||
@ This simply ensures that dates used are updated to today's date for
|
||||
extensions used in the current run; otherwise they wouldn't show in the
|
||||
documentation as used today until the next run, for obscure timing reasons.
|
||||
|
||||
@<Time-stamp extensions used in the project as being last used today@> =
|
||||
if (proj) {
|
||||
inform_extension *E;
|
||||
LOOP_OVER_LINKED_LIST(E, inform_extension, proj->extensions_included)
|
||||
ExtensionDictionary::time_stamp(E);
|
||||
}
|
||||
|
||||
@<Write index pages@> =
|
||||
ExtensionIndex::write(ExtensionWebsite::index_URL(I"Extensions.html"), HOME_EXTPAGE, C);
|
||||
ExtensionIndex::write(ExtensionWebsite::index_URL(I"ExtIndex.html"), INDEX_EXTPAGE, C);
|
||||
|
||||
@ Each extension gets its own page in the external documentation area, but
|
||||
this page can have two forms:
|
||||
(i) a deluxe version, produced if a project |proj| has successfully used
|
||||
the extension on this run and we therefore know a lot about the extension;
|
||||
(ii) an ordinaire version, where we may never have used the extension and
|
||||
currently have no specific knowledge of it.
|
||||
|
||||
@<Write individual pages on individual extensions@> =
|
||||
if (proj) {
|
||||
inform_extension *E;
|
||||
LOOP_OVER_LINKED_LIST(E, inform_extension, proj->extensions_included)
|
||||
ExtensionPages::write_page(NULL, E, FALSE, proj); /* deluxe */
|
||||
}
|
||||
extension_census_datum *ecd;
|
||||
LOOP_OVER(ecd, extension_census_datum)
|
||||
ExtensionPages::write_page(ecd, NULL, force_update, NULL); /* ordinaire */
|
||||
|
||||
@h Organisation of the website.
|
||||
There is a top level consisting of two home pages: a directory of all
|
||||
installed extensions, and an index to the terms defined in those extensions. A
|
||||
cross-link switches between them. Each of these links down to the bottom
|
||||
level, where there is a page for every installed extension (wherever it is
|
||||
installed). The picture is therefore something like this:
|
||||
= (text)
|
||||
Extensions -- ExtIndex
|
||||
| \/ |
|
||||
| /\ |
|
||||
Nigel Toad/Eggs Barnabas Dundritch/Neopolitan Iced Cream ...
|
||||
=
|
||||
These pages would be stored in the transient area at the relative URLs:
|
||||
= (text)
|
||||
Documentation/Extensions.html
|
||||
Documentation/ExtIndex.html
|
||||
Documentation/Extensions/Nigel Toad/Eggs.html
|
||||
Documentation/Extensions/Barnabas Dundritch/Neopolitan Iced Cream.html
|
||||
=
|
||||
And see also the function //ExtensionDictionary::filename//, which uses a file
|
||||
in the same area but not as part of the site.
|
||||
|
||||
=
|
||||
pathname *ExtensionWebsite::home_URL(void) {
|
||||
pathname *P = Supervisor::transient();
|
||||
if (P == NULL) return NULL;
|
||||
if (Pathnames::create_in_file_system(P) == 0) return NULL;
|
||||
P = Pathnames::down(P, I"Documentation");
|
||||
if (Pathnames::create_in_file_system(P) == 0) return NULL;
|
||||
return P;
|
||||
}
|
||||
|
||||
@ The top-level files |Extensions.html| and |ExtIndex.html| go here:
|
||||
|
||||
=
|
||||
filename *ExtensionWebsite::index_URL(text_stream *leaf) {
|
||||
pathname *P = ExtensionWebsite::home_URL();
|
||||
if (P == NULL) return NULL;
|
||||
return Filenames::in(P, leaf);
|
||||
}
|
||||
|
||||
@ And individual extension pages here. A complication is that a single
|
||||
extension may also have sidekick pages for any examples in its supplied
|
||||
documentation: so for instance we might actually see --
|
||||
= (text)
|
||||
Documentation/Extensions/Emily Short/Locksmith.html
|
||||
Documentation/Extensions/Emily Short/Locksmith-eg1.html
|
||||
Documentation/Extensions/Emily Short/Locksmith-eg2.html
|
||||
Documentation/Extensions/Emily Short/Locksmith-eg3.html
|
||||
Documentation/Extensions/Emily Short/Locksmith-eg4.html
|
||||
=
|
||||
The following supplies the necessary filenames.
|
||||
|
||||
=
|
||||
filename *ExtensionWebsite::page_URL(inbuild_work *work, int eg_number) {
|
||||
TEMPORARY_TEXT(leaf);
|
||||
Str::copy(leaf, work->title);
|
||||
if (eg_number > 0) WRITE_TO(leaf, "-eg%d", eg_number);
|
||||
WRITE_TO(leaf, ".html");
|
||||
pathname *P = ExtensionWebsite::home_URL();
|
||||
if (P == NULL) return NULL;
|
||||
P = Pathnames::down(P, I"Extensions");
|
||||
if (Pathnames::create_in_file_system(P) == 0) return NULL;
|
||||
filename *F = Filenames::in(Pathnames::down(P, work->author_name), leaf);
|
||||
DISCARD_TEXT(leaf);
|
||||
return F;
|
||||
}
|
|
@ -58,6 +58,8 @@ Chapter 6: Inform Source Text
|
|||
Virtual Machine Grammar
|
||||
|
||||
Chapter 7: Extension Indexing
|
||||
The Mini-Website
|
||||
Dictionary
|
||||
Census
|
||||
Documentation
|
||||
Index Pages
|
||||
Individual Pages
|
||||
|
|
|
@ -122,7 +122,7 @@ search engine //Nests::search_for//. This builds a list of //inbuild_search_resu
|
|||
objects, each pointing to a new copy which matches the requirement given.
|
||||
|
||||
Requirements can be quite flexible, and are converitble to and from text: see
|
||||
//Requirements::from_text// and //Requirements::write//.[2] The crucial routine
|
||||
//Requirements::from_text// and //Requirements::write//.[2] The crucial function
|
||||
here is //Requirements::meets//, which tests whether an edition meets the
|
||||
requirement.
|
||||
|
||||
|
@ -399,11 +399,9 @@ according to the //build_methodology// object passed to //IncrementalBuild::buil
|
|||
to configure how it should go about its business.
|
||||
|
||||
@h Extension census.
|
||||
That's basically everything except for a few special features to provide
|
||||
the Inform GUI apps with nice-looking documentation pages on installed
|
||||
extensions. These are constructed by a "census", when the parent calls
|
||||
//ExtensionCensus::new//. Copies for extensions are annotated with
|
||||
metadata on, for example, when they were last used, and such metadata is stored
|
||||
between runs in the //Dictionary//, and used as part of the
|
||||
//Documentation// generated for the benefit of the Inform user
|
||||
interface apps.
|
||||
That's basically everything except for the lengthy but unimportant code in
|
||||
//Chapter 7//, which constructs a mini-website of extension documentation for
|
||||
use inside the GUI app. None of this affects how builds are made. See
|
||||
//The Mini-Website// for the site's makeup. A little metadata is cached
|
||||
between runs of //inform7// in a file called the //Dictionary//, and the
|
||||
search for all installed extensions is called the //Census//.
|
||||
|
|
|
@ -321,7 +321,7 @@ void Plugins::Manage::index_VM(OUTPUT_STREAM, target_vm *VM) {
|
|||
if (VM == NULL) internal_error("target VM not set yet");
|
||||
Index::anchor(OUT, I"STORYFILE");
|
||||
HTML_OPEN("p"); WRITE("Story file format: ");
|
||||
ExtensionCensus::plot_icon(OUT, VM);
|
||||
ExtensionIndex::plot_icon(OUT, VM);
|
||||
TargetVMs::write(OUT, VM);
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
|
|
|
@ -569,7 +569,7 @@ void Index::index_actual_element(OUTPUT_STREAM, text_stream *elt) {
|
|||
if (Str::eq_wide_string(elt, L"C")) {
|
||||
Sentences::Headings::index(OUT);
|
||||
Extensions::Files::index(OUT);
|
||||
ExtensionCensus::update_census(Task::project());
|
||||
ExtensionWebsite::index_after_compilation(Task::project());
|
||||
return;
|
||||
}
|
||||
if (Str::eq_wide_string(elt, L"Vl")) {
|
||||
|
|
Loading…
Reference in a new issue