mirror of
https://github.com/ganelson/inform.git
synced 2024-06-29 05:24:57 +03:00
Implemented -deprecated-external and basic support for warnings in Inform
This commit is contained in:
parent
b2c6b5f5ac
commit
042c9f7c2e
|
@ -1,6 +1,6 @@
|
|||
# Inform 7
|
||||
|
||||
[Version](notes/versioning.md): 10.2.0-beta+6W56 'Krypton' (5 June 2023)
|
||||
[Version](notes/versioning.md): 10.2.0-beta+6W57 'Krypton' (7 June 2023)
|
||||
|
||||
## About Inform
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: beta
|
||||
Build Date: 5 June 2023
|
||||
Build Number: 6W56
|
||||
Build Date: 7 June 2023
|
||||
Build Number: 6W57
|
||||
|
|
|
@ -187,8 +187,9 @@ will divide according to these units.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Hierarchy::establish</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">GenericModule::compile</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">NameResolution::make_the_tree</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP14" class="function-link"><span class="function-syntax">Task::write_XML_headings_file</span></a><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP15" class="function-link"><span class="function-syntax">Task::write_XML_headings_file</span></a><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">CompilationUnits::determine</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP7" class="function-link"><span class="function-syntax">Task::warn_about_deprecated_nests</span></a><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-htc.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_3" class="paragraph-anchor"></a><b>§2.3. </b>Most of the conceptual infrastructure in Inform is created by Inform source
|
||||
|
@ -204,7 +205,7 @@ so on. Those absolute basics are made here.
|
|||
<span class="plain-syntax"> </span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::advance_stage_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">BUILT_IN_STUFF_CSEQ</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Making built in infrastructure"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> -1, </span><span class="identifier-syntax">debugging</span><span class="plain-syntax">, </span><span class="identifier-syntax">sequence_timer</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">InferenceSubjects::make_built_in</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP9" class="function-link"><span class="function-syntax">Task::make_built_in_kind_constructors</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP10" class="function-link"><span class="function-syntax">Task::make_built_in_kind_constructors</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">BinaryPredicateFamilies::first_stock</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">BootVerbs::make_built_in</span><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
|
@ -386,7 +387,7 @@ here, which only happens when special runs are made for compiler testing.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tests_run</span><span class="plain-syntax"> = </span><a href="1-itc.html#SP7" class="function-link"><span class="function-syntax">InternalTests::run</span></a><span class="plain-syntax">(2);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tests_run</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">exit</span><span class="plain-syntax">(0);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP20" class="function-link"><span class="function-syntax">Task::specify_index_requirements</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP21" class="function-link"><span class="function-syntax">Task::specify_index_requirements</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">INTER_DA</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSkill::set_debugging</span><span 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">INFORM_INTER_DA</span><span class="plain-syntax">))</span>
|
||||
|
|
|
@ -59,7 +59,7 @@ function togglePopup(material_id) {
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../inform7n.html">Inform7</a></li><li><a href="index.html">core</a></li><li><a href="index.html#1">Chapter 1: Control</a></li><li><b>What To Compile</b></li></ul></div>
|
||||
<p class="purpose">To receive an instruction to compile something from Inbuild, and then to sort out the many locations then used in the host filing system.</p>
|
||||
|
||||
<ul class="toc"><li><a href="1-wtc.html#SP1">§1. Timers</a></li><li><a href="1-wtc.html#SP2">§2. The task</a></li><li><a href="1-wtc.html#SP10">§10. Project-related files and file paths</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="1-wtc.html#SP1">§1. Timers</a></li><li><a href="1-wtc.html#SP2">§2. The task</a></li><li><a href="1-wtc.html#SP11">§11. Project-related files and file paths</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Timers. </b>We keep track of about how long the compiler spends on each task, for the
|
||||
sake of better diagnostics.
|
||||
|
@ -219,12 +219,12 @@ rough stages. Twenty is plenty.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="function-syntax">Task::project</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">Task::project</span></span>:<br/>Internal Test Cases - <a href="1-itc.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="function-syntax">Task::project</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">Task::project</span></span>:<br/><a href="1-wtc.html#SP7">§7</a><br/>Internal Test Cases - <a href="1-itc.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">inform7_task</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">"there is no current task"</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">inform7_task</span><span class="plain-syntax">-></span><span class="element-syntax">project</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="function-syntax">Task::vm</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">Task::vm</span></span>:<br/><a href="1-wtc.html#SP15">§15</a><br/>Compilation Settings - <a href="1-cs.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">target_vm</span><span class="plain-syntax"> *</span><span class="function-syntax">Task::vm</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">Task::vm</span></span>:<br/><a href="1-wtc.html#SP16">§16</a><br/>Compilation Settings - <a href="1-cs.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">inform7_task</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">"there is no current task"</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">inform7_task</span><span class="plain-syntax">-></span><span class="element-syntax">task</span><span class="plain-syntax">-></span><span class="identifier-syntax">for_vm</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -246,7 +246,7 @@ rough stages. Twenty is plenty.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">inform7_task</span><span class="plain-syntax">-></span><span class="element-syntax">project</span><span class="plain-syntax">-></span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-></span><span class="identifier-syntax">edition</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="function-syntax">Task::syntax_tree</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">Task::syntax_tree</span></span>:<br/><a href="1-wtc.html#SP14">§14</a><br/>Core Preform - <a href="1-cp2.html#SP2">§2</a>, <a href="1-cp2.html#SP3">§3</a><br/>Using Problems - <a href="2-up.html#SP3">§3</a>, <a href="2-up.html#SP3_3">§3.3</a><br/>Supplementary Issues - <a href="2-si.html#SP1">§1</a>, <a href="2-si.html#SP2">§2</a>, <a href="2-si.html#SP3">§3</a>, <a href="2-si.html#SP4">§4</a>, <a href="2-si.html#SP5">§5</a>, <a href="2-si.html#SP6">§6</a>, <a href="2-si.html#SP7">§7</a>, <a href="2-si.html#SP8">§8</a>, <a href="2-si.html#SP9">§9</a>, <a href="2-si.html#SP10">§10</a>, <a href="2-si.html#SP11">§11</a>, <a href="2-si.html#SP12">§12</a>, <a href="2-si.html#SP13">§13</a><br/>Problems With Source Text - <a href="2-pwst.html#SP1">§1</a>, <a href="2-pwst.html#SP2">§2</a>, <a href="2-pwst.html#SP3">§3</a><br/>Calculus Problems - <a href="2-cp.html#SP1">§1</a><br/>Kinds Problems - <a href="2-kp.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="function-syntax">Task::syntax_tree</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">Task::syntax_tree</span></span>:<br/><a href="1-wtc.html#SP7">§7</a>, <a href="1-wtc.html#SP15">§15</a><br/>Core Preform - <a href="1-cp2.html#SP2">§2</a>, <a href="1-cp2.html#SP3">§3</a><br/>Using Problems - <a href="2-up.html#SP3">§3</a>, <a href="2-up.html#SP3_3">§3.3</a><br/>Supplementary Issues - <a href="2-si.html#SP1">§1</a>, <a href="2-si.html#SP2">§2</a>, <a href="2-si.html#SP3">§3</a>, <a href="2-si.html#SP4">§4</a>, <a href="2-si.html#SP5">§5</a>, <a href="2-si.html#SP6">§6</a>, <a href="2-si.html#SP7">§7</a>, <a href="2-si.html#SP8">§8</a>, <a href="2-si.html#SP9">§9</a>, <a href="2-si.html#SP10">§10</a>, <a href="2-si.html#SP11">§11</a>, <a href="2-si.html#SP12">§12</a>, <a href="2-si.html#SP13">§13</a><br/>Problems With Source Text - <a href="2-pwst.html#SP1">§1</a>, <a href="2-pwst.html#SP2">§2</a>, <a href="2-pwst.html#SP3">§3</a><br/>Calculus Problems - <a href="2-cp.html#SP1">§1</a><br/>Kinds Problems - <a href="2-kp.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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">latest_syntax_tree</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -263,7 +263,34 @@ rough stages. Twenty is plenty.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">VerifyTree::verify_structure</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>Resources in a Blorb file have unique ID numbers which are positive integers,
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>This is part of a scheme to wean authors off of use of an external extensions
|
||||
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">Task::warn_about_deprecated_nests</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">Task::warn_about_deprecated_nests</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_2">§2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">project</span><span class="plain-syntax"> = </span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::project</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ext</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">ext</span><span class="plain-syntax">, </span><span class="identifier-syntax">inform_extension</span><span class="plain-syntax">, </span><span class="identifier-syntax">project</span><span class="plain-syntax">-></span><span class="identifier-syntax">extensions_included</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Copies::origin</span><span class="plain-syntax">(</span><span class="identifier-syntax">ext</span><span class="plain-syntax">-></span><span class="identifier-syntax">as_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">Nests::is_deprecated</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">ename</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Copies::write_copy</span><span class="plain-syntax">(</span><span class="identifier-syntax">ename</span><span class="plain-syntax">, </span><span class="identifier-syntax">ext</span><span class="plain-syntax">-></span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_stream</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">ename</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_warning</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">Untestable</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_warning_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The extension '%1' was included from an external location, that is, "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"from outside of this project's materials folder. That's allowed, and "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"is how most authors managed things until 2023, but we now recommend "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"moving all extensions needed for a project (other than those built "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"into Inform itself) into the project's materials folder. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"If you do, this warning will go away."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_warning_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>Resources in a Blorb file have unique ID numbers which are positive integers,
|
||||
but these are not required to start from 1, nor to be contiguous. For Inform,
|
||||
ID number 1 is reserved for the cover image (whether or not any cover image
|
||||
is provided: it is legal for there to be figures but no cover, and vice versa).
|
||||
|
@ -281,7 +308,7 @@ number but a long or short beep. If a genuine sound effect had resource ID
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">inform7_task</span><span class="plain-syntax">-></span><span class="element-syntax">next_resource_number</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>This seed is ordinarily 0, causing no fix to occur, but can be set to
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>This seed is ordinarily 0, causing no fix to occur, but can be set to
|
||||
a non-zero value to make testing Inform easier.
|
||||
</p>
|
||||
|
||||
|
@ -291,12 +318,12 @@ a non-zero value to make testing Inform easier.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">inform7_task</span><span class="plain-syntax">-></span><span class="element-syntax">project</span><span class="plain-syntax">-></span><span class="identifier-syntax">fix_rng</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>These functions are for steps on the production line which involve
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>These functions are for steps on the production line which involve
|
||||
referring something back up to Inbuild.
|
||||
</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">Task::make_built_in_kind_constructors</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">Task::make_built_in_kind_constructors</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_3">§2.3</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">Task::make_built_in_kind_constructors</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">Task::make_built_in_kind_constructors</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_3">§2.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">inform7_task</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">"there is no current task"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Projects::load_built_in_kind_constructors</span><span class="plain-syntax">(</span><span class="identifier-syntax">inform7_task</span><span class="plain-syntax">-></span><span class="element-syntax">project</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -307,7 +334,7 @@ referring something back up to Inbuild.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. Project-related files and file paths. </b>An Inform compilation can touch dozens of different files, and the rest
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. Project-related files and file paths. </b>An Inform compilation can touch dozens of different files, and the rest
|
||||
of this section is a tour through the ones which are associated with the
|
||||
project itself. (Common resources, used for all compilations, or optional
|
||||
add-ins such as extensions are the business of Inbuild.)
|
||||
|
@ -363,7 +390,7 @@ the command line), but they take no time to generate so we make them anyway.
|
|||
<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">inform7_task</span><span class="plain-syntax">-></span><span class="element-syntax">path</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Release.blurb"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>The build folder for a project contains all of the working files created
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b>The build folder for a project contains all of the working files created
|
||||
during the compilation process. The debugging log and Inform problems report
|
||||
(its HTML file of error messages) are both written there: see the Main Routine
|
||||
section for details. In addition we have:
|
||||
|
@ -379,7 +406,7 @@ section for details. In addition we have:
|
|||
<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">inform7_task</span><span class="plain-syntax">-></span><span class="element-syntax">build</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Parse tree.txt"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b>The name of the unblorbed story file is chosen for us by Inbuild, so
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b>The name of the unblorbed story file is chosen for us by Inbuild, so
|
||||
we have to extract it from the build graph.
|
||||
</p>
|
||||
|
||||
|
@ -395,7 +422,7 @@ produce, say, a C program rather than a Glulx or Z-machine story file.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax">-></span><span class="identifier-syntax">as_file</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b>Deeper inside the<span class="extract"><span class="extract-syntax">Build</span></span> subfolder is an (also ephemeral) <span class="extract"><span class="extract-syntax">Index</span></span> subfolder,
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b>Deeper inside the<span class="extract"><span class="extract-syntax">Build</span></span> subfolder is an (also ephemeral) <span class="extract"><span class="extract-syntax">Index</span></span> subfolder,
|
||||
which holds the mini-website of the Index for a project.
|
||||
</p>
|
||||
|
||||
|
@ -403,7 +430,7 @@ which holds the mini-website of the Index for a project.
|
|||
details on actions live in the subfolder <span class="extract"><span class="extract-syntax">Details</span></span>: see below.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">PATH_INDEX_CALLBACK</span><span class="plain-syntax"> </span><a href="1-wtc.html#SP13" class="function-link"><span class="function-syntax">Task::index_path</span></a>
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">PATH_INDEX_CALLBACK</span><span class="plain-syntax"> </span><a href="1-wtc.html#SP14" class="function-link"><span class="function-syntax">Task::index_path</span></a>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Task::index_path</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
|
@ -413,18 +440,18 @@ details on actions live in the subfolder <span class="extract"><span class="extr
|
|||
<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="SP14" class="paragraph-anchor"></a><b>§14. </b>The XML file of headings is written by the supervisor, but only if we ask
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b>The XML file of headings is written by the supervisor, but only if we ask
|
||||
it to, and this is where:
|
||||
</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">Task::write_XML_headings_file</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">Task::write_XML_headings_file</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_2">§2.2</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">Task::write_XML_headings_file</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">Task::write_XML_headings_file</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_2">§2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">inform7_task</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">"there is no current task"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">inform7_task</span><span class="plain-syntax">-></span><span class="element-syntax">project</span><span class="plain-syntax">-></span><span class="identifier-syntax">stand_alone</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">Headings::write_as_XML</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">IndexLocations::xml_headings_filename</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b>That's it for the project folder, but other project-related stuff is in
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. </b>That's it for the project folder, but other project-related stuff is in
|
||||
the materials folder, which we turn to next.
|
||||
</p>
|
||||
|
||||
|
@ -462,7 +489,7 @@ level of materials.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">inform7_task</span><span class="plain-syntax">-></span><span class="element-syntax">existing_storyfile</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. </b>Materials is also where cover art lives: it could have either the file
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b>Materials is also where cover art lives: it could have either the file
|
||||
extension <span class="extract"><span class="extract-syntax">.jpg</span></span> or <span class="extract"><span class="extract-syntax">.png</span></span>, and we generate both sets of filenames, even
|
||||
though at most one will actually work. This is also where we generate the EPS
|
||||
file of the map, if so requested; a bit anomalously, it's the only file in
|
||||
|
@ -480,7 +507,7 @@ Materials but outside Release which we write to.
|
|||
<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">inform7_task</span><span class="plain-syntax">-></span><span class="element-syntax">materials</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform Map.eps"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b>This is also where the originals (not the released copies) of the Figures
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b>This is also where the originals (not the released copies) of the Figures
|
||||
and Sounds, if any, live: in their own subfolders, or "departments".
|
||||
</p>
|
||||
|
||||
|
@ -500,7 +527,7 @@ and Sounds, if any, live: in their own subfolders, or "departments".
|
|||
<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">"Data"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b>On a release run, Inblorb will populate the Release subfolder of Materials;
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. </b>On a release run, Inblorb will populate the Release subfolder of Materials;
|
||||
figures and sounds will be copied into the relevant subfolders. The principle
|
||||
is that everything in Release can always be thrown away without loss, because
|
||||
it can all be generated again.
|
||||
|
@ -512,16 +539,16 @@ it can all be generated again.
|
|||
<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">inform7_task</span><span class="plain-syntax">-></span><span class="element-syntax">materials</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Release"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Task::released_figures_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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP18" class="function-link"><span class="function-syntax">Task::release_path</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"Figures"</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><a href="1-wtc.html#SP19" class="function-link"><span class="function-syntax">Task::release_path</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"Figures"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Task::released_sounds_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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP18" class="function-link"><span class="function-syntax">Task::release_path</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"Sounds"</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><a href="1-wtc.html#SP19" class="function-link"><span class="function-syntax">Task::release_path</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"Sounds"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Task::released_interpreter_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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP18" class="function-link"><span class="function-syntax">Task::release_path</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"interpreter"</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><a href="1-wtc.html#SP19" class="function-link"><span class="function-syntax">Task::release_path</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"interpreter"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. </b>EPS-format files are vector art, rather than raster art, and are produced
|
||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. </b>EPS-format files are vector art, rather than raster art, and are produced
|
||||
with the intention that authors can tidy them up afterwards using programs
|
||||
like Adobe Illustrator. By default they aren't produced, so that the following
|
||||
flag stays <span class="extract"><span class="extract-syntax">FALSE</span></span>:
|
||||
|
@ -547,12 +574,12 @@ flag stays <span class="extract"><span class="extract-syntax">FALSE</span></span
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">do_not_generate_problems</span><span class="plain-syntax">?</span><span class="identifier-syntax">FALSE:TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. </b>And so, finally, the following triggers the indexing process.
|
||||
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§21. </b>And so, finally, the following triggers the indexing process.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">inform7_index_requirements</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Task::specify_index_requirements</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">Task::specify_index_requirements</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_15">§2.15</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">Task::specify_index_requirements</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">Task::specify_index_requirements</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_15">§2.15</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">inform7_index_requirements</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">do_not_generate_index</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inform7_index_requirements</span><span class="plain-syntax"> |= </span><span class="identifier-syntax">INDEX_REQUIRED_BIT</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -112,7 +112,7 @@ non-problem messages when everything was fine. That all happens here:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">problems_file_active</span><span class="plain-syntax">) </span><span class="identifier-syntax">ProblemBuffer::redirect_problem_stream</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">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">rooms</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">things</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">problems_file_active</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">problems_file_active</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Problems::warnings_occurred</span><span class="plain-syntax">() == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><a href="2-up.html#SP5" class="function-link"><span class="function-syntax">UsingProblems::html_outcome_image</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">, </span><span class="string-syntax">"ni_succeeded"</span><span class="plain-syntax">, </span><span class="string-syntax">"Succeeded"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Spatial::get_world_size</span><span class="plain-syntax">(&</span><span class="identifier-syntax">rooms</span><span class="plain-syntax">, &</span><span class="identifier-syntax">things</span><span class="plain-syntax">);</span>
|
||||
|
@ -201,6 +201,15 @@ command line — deserves the truth.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">ProblemBuffer::redirect_problem_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax"> = </span><span class="identifier-syntax">problems_file</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">Problems::warnings_occurred</span><span class="plain-syntax">()) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="string-syntax">"**"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"Although one or more warnings were issued, there were no problems "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"serious enough to stop translation from going ahead."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_begin</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="string-syntax">"**"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The %5-word source text has successfully been translated "</span>
|
||||
|
@ -208,6 +217,7 @@ command line — deserves the truth.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"brought up to date."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-up.html#SP5" class="function-link"><span class="function-syntax">UsingProblems::outcome_image_tail</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</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">telemetry_recording</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Telemetry::ensure_telemetry_file</span><span class="plain-syntax">();</span>
|
||||
|
@ -261,7 +271,7 @@ to issue its first problem of the run:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">StandardProblems::internal_errors_have_occurred</span><span class="plain-syntax">())</span>
|
||||
<span class="plain-syntax"> </span><a href="2-up.html#SP5" class="function-link"><span class="function-syntax">UsingProblems::html_outcome_image</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">, </span><span class="string-syntax">"ni_failed_badly"</span><span class="plain-syntax">, </span><span class="string-syntax">"Failed"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><a href="2-up.html#SP5" class="function-link"><span class="function-syntax">UsingProblems::html_outcome_image</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">, </span><span class="string-syntax">"ni_failed"</span><span class="plain-syntax">, </span><span class="string-syntax">"Failed"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-up.html#SP5" class="function-link"><span class="function-syntax">UsingProblems::html_outcome_image</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">, </span><span class="string-syntax">"ni_failed"</span><span class="plain-syntax">, </span><span class="string-syntax">"Problems or Warnings"</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">UsingProblems::html_outcome_image</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">UsingProblems::html_outcome_image</span></span>:<br/><a href="2-up.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="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">image</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">verdict</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -88,7 +88,7 @@ finishes.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">telmy</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">attempts_to_open_telemetry</span><span class="plain-syntax">++ > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">STREAM_OPEN_TO_FILE_APPEND</span><span class="plain-syntax">(</span><span class="identifier-syntax">telemetry_file</span><span class="plain-syntax">, </span><span class="identifier-syntax">spool_telemetry_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">ISO_ENC</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP14" class="function-link"><span class="function-syntax">Problems::fatal_on_file</span></a><span class="plain-syntax">(</span><span class="string-syntax">"Can't open telemetry file"</span><span class="plain-syntax">, </span><span class="identifier-syntax">spool_telemetry_to</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP15" class="function-link"><span class="function-syntax">Problems::fatal_on_file</span></a><span class="plain-syntax">(</span><span class="string-syntax">"Can't open telemetry file"</span><span class="plain-syntax">, </span><span class="identifier-syntax">spool_telemetry_to</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">telmy</span><span class="plain-syntax"> = </span><span class="identifier-syntax">telemetry_file</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">telmy</span><span class="plain-syntax">, </span><span class="string-syntax">"\n-- -- -- -- -- -- -- --\n%B (build %B): telemetry.\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -78,7 +78,7 @@ filing-system-related failure.
|
|||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">echo_problem_message_sigils</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">crash_on_all_problems</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ProblemSigils::exit</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">ProblemSigils::exit</span></span>:<br/><a href="2-pl0.html#SP2">§2</a><br/>Problems, Level 2 - <a href="2-pl2.html#SP14">§14</a><br/>Problems, Level 3 - <a href="2-pl3.html#SP3">§3</a>, <a href="2-pl3.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ProblemSigils::exit</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">ProblemSigils::exit</span></span>:<br/><a href="2-pl0.html#SP2">§2</a><br/>Problems, Level 2 - <a href="2-pl2.html#SP15">§15</a><br/>Problems, Level 3 - <a href="2-pl3.html#SP3">§3</a>, <a href="2-pl3.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">code</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">sigil_of_required_problem</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">sigil_of_required_problem_found</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">exit</span><span class="plain-syntax">(0); </span><span class="comment-syntax"> so that the problem test case will fail in </span><span class="extract"><span class="extract-syntax">intest</span></span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">exit</span><span class="plain-syntax">(</span><span class="identifier-syntax">code</span><span class="plain-syntax">);</span>
|
||||
|
@ -93,7 +93,7 @@ use of the result.
|
|||
</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">ProblemSigils::force_crash</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">ProblemSigils::force_crash</span></span>:<br/>Problems, Level 2 - <a href="2-pl2.html#SP9">§9</a>, <a href="2-pl2.html#SP14">§14</a><br/>Problems, Level 3 - <a href="2-pl3.html#SP3">§3</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">ProblemSigils::force_crash</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">ProblemSigils::force_crash</span></span>:<br/>Problems, Level 2 - <a href="2-pl2.html#SP10">§10</a>, <a href="2-pl2.html#SP15">§15</a><br/>Problems, Level 3 - <a href="2-pl3.html#SP3">§3</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">STREAM_FLUSH</span><span class="plain-syntax">(</span><span class="identifier-syntax">STDOUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_FLUSH</span><span class="plain-syntax">(</span><span class="identifier-syntax">DL</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">STDERR</span><span class="plain-syntax">,</span>
|
||||
|
|
|
@ -68,7 +68,7 @@ it in a single text stream:
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ProblemBuffer::clear</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">ProblemBuffer::clear</span></span>:<br/>Problems, Level 2 - <a href="2-pl2.html#SP3_1">§3.1</a>, <a href="2-pl2.html#SP9">§9</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">ProblemBuffer::clear</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">ProblemBuffer::clear</span></span>:<br/>Problems, Level 2 - <a href="2-pl2.html#SP3_1">§3.1</a>, <a href="2-pl2.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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</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">Str::clear</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -88,7 +88,7 @@ any sentence in one go:
|
|||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">QUOTATION_TOLERANCE_LIMIT</span><span class="plain-syntax"> </span><span class="constant-syntax">100</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">ProblemBuffer::copy_text</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">ProblemBuffer::copy_text</span></span>:<br/><a href="2-pl1.html#SP4">§4</a><br/>Problems, Level 2 - <a href="2-pl2.html#SP3_1">§3.1</a>, <a href="2-pl2.html#SP12_1_2">§12.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ProblemBuffer::copy_text</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">ProblemBuffer::copy_text</span></span>:<br/><a href="2-pl1.html#SP4">§4</a><br/>Problems, Level 2 - <a href="2-pl2.html#SP3_1">§3.1</a>, <a href="2-pl2.html#SP13_1_2">§13.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::truncate</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="constant-syntax">QUOTATION_TOLERANCE_LIMIT</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">PBUFF</span><span class="plain-syntax">, </span><span class="string-syntax">"%<W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -113,7 +113,7 @@ mask out angle brackets and quotation marks which we don't want to interpret as
|
|||
<span class="definition-keyword">define</span> <span class="constant-syntax">PROTECTED_QUOT_CHAR</span><span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="character-syntax">'\x03'</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">ProblemBuffer::copy_source_reference</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">ProblemBuffer::copy_source_reference</span></span>:<br/>Problems, Level 2 - <a href="2-pl2.html#SP11">§11</a>, <a href="2-pl2.html#SP12_1_2">§12.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ProblemBuffer::copy_source_reference</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">ProblemBuffer::copy_source_reference</span></span>:<br/>Problems, Level 2 - <a href="2-pl2.html#SP12">§12</a>, <a href="2-pl2.html#SP13_1_2">§13.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax">, </span><span class="string-syntax">"<no text>"</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">source_file</span><span class="plain-syntax"> *</span><span class="identifier-syntax">referred</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lexer::file_of_origin</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">file</span><span class="plain-syntax">)</span>
|
||||
|
@ -155,7 +155,7 @@ mask out angle brackets and quotation marks which we don't want to interpret as
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">file</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ProblemBuffer::copy_file_reference</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">ProblemBuffer::copy_file_reference</span></span>:<br/>Problems, Level 2 - <a href="2-pl2.html#SP12_1_1">§12.1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">file_ref</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">line</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ProblemBuffer::copy_file_reference</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">ProblemBuffer::copy_file_reference</span></span>:<br/>Problems, Level 2 - <a href="2-pl2.html#SP13_1_1">§13.1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">file_ref</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">line</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">file</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">file</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">file_ref</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">proj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">HTML::get_link_abbreviation_path</span><span class="plain-syntax">();</span>
|
||||
|
@ -196,6 +196,7 @@ HTML, they are dealt with elsewhere.
|
|||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> </span><span class="identifier-syntax">problems_file_struct</span><span class="plain-syntax">; </span><span class="comment-syntax"> The actual report of Problems file</span>
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax"> = &</span><span class="identifier-syntax">problems_file_struct</span><span class="plain-syntax">; </span><span class="comment-syntax"> As a </span><span class="extract"><span class="extract-syntax">text_stream *</span></span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">problems_file_active</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="comment-syntax"> Currently in use</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">currently_issuing_a_warning</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">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">PROBLEMS_HTML_EMITTER</span>
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">define</span><span class="plain-syntax"> </span><span class="identifier-syntax">PROBLEMS_HTML_EMITTER</span><span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span>
|
||||
|
@ -267,7 +268,8 @@ indentation. And similarly for <span class="extract"><span class="extract-syntax
|
|||
<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="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">, </span><span class="string-syntax">"class=\"hang\""</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>Problem.</b> "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">currently_issuing_a_warning</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<b>Warning.</b> "</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">"<b>Problem.</b> "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">+=3; </span><span class="reserved-syntax">continue</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::includes_wide_string_at</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">">++>"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">)) {</span>
|
||||
|
@ -439,7 +441,7 @@ our choice.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">telemetry_recording</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ProblemBuffer::output_problem_buffer</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">ProblemBuffer::output_problem_buffer</span></span>:<br/>Problems, Level 2 - <a href="2-pl2.html#SP3_1">§3.1</a>, <a href="2-pl2.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">indentation</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ProblemBuffer::output_problem_buffer</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">ProblemBuffer::output_problem_buffer</span></span>:<br/>Problems, Level 2 - <a href="2-pl2.html#SP3_1">§3.1</a>, <a href="2-pl2.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">indentation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">redirected_problem_text</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl1.html#SP5" class="function-link"><span class="function-syntax">ProblemBuffer::output_problem_buffer_to</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">, </span><span class="identifier-syntax">indentation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">, </span><span class="string-syntax">"\n"</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -59,7 +59,7 @@ function togglePopup(material_id) {
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../services.html">Services</a></li><li><a href="index.html">problems</a></li><li><a href="index.html#2">Chapter 2: Problems</a></li><li><b>Problems, Level 2</b></li></ul></div>
|
||||
<p class="purpose">To assemble and format problem messages within the problem buffer.</p>
|
||||
|
||||
<ul class="toc"><li><a href="2-pl2.html#SP4">§4. Problem quotations</a></li><li><a href="2-pl2.html#SP7">§7. Short and long forms</a></li><li><a href="2-pl2.html#SP9">§9. How problems begin and end</a></li><li><a href="2-pl2.html#SP11">§11. Appending source</a></li><li><a href="2-pl2.html#SP12">§12. Issuing a segment of a problem message</a></li><li><a href="2-pl2.html#SP14">§14. Fatalities</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="2-pl2.html#SP4">§4. Problem quotations</a></li><li><a href="2-pl2.html#SP7">§7. Short and long forms</a></li><li><a href="2-pl2.html#SP9">§9. A note on warnings</a></li><li><a href="2-pl2.html#SP10">§10. How problems begin and end</a></li><li><a href="2-pl2.html#SP12">§12. Appending source</a></li><li><a href="2-pl2.html#SP13">§13. Issuing a segment of a problem message</a></li><li><a href="2-pl2.html#SP15">§15. Fatalities</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>Problem messages begin with an indication of where in the source text the
|
||||
problem occurs, in terms of headings and subheadings written in the
|
||||
|
@ -142,7 +142,7 @@ the two possibilities.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">do_not_locate_problems</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::show_problem_location</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">Problems::show_problem_location</span></span>:<br/><a href="2-pl2.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::show_problem_location</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">Problems::show_problem_location</span></span>:<br/><a href="2-pl2.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">problem_headings</span><span class="plain-syntax">[</span><span class="constant-syntax">NO_HEADING_LEVELS</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">f</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">problem_count</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
|
@ -380,7 +380,7 @@ and we give no further explanation in any circumstances.
|
|||
<span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">explanations</span><span class="plain-syntax">[</span><span class="constant-syntax">PATIENCE_EXHAUSTION_POINT</span><span class="plain-syntax">];</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">no_explanations</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::explained_before</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">Problems::explained_before</span></span>:<br/><a href="2-pl2.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">explanation</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::explained_before</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">Problems::explained_before</span></span>:<br/><a href="2-pl2.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">explanation</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">no_explanations</span><span class="plain-syntax"> == </span><span class="constant-syntax">PATIENCE_EXHAUSTION_POINT</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">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="identifier-syntax">no_explanations</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">explanation</span><span class="plain-syntax"> == </span><span class="identifier-syntax">explanations</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</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>
|
||||
|
@ -388,7 +388,18 @@ and we give no further explanation in any circumstances.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. How problems begin and end. </b>During the construction of a problem message, we will be running through a
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. A note on warnings. </b>Warnings are almost identically handled. Inform traditionally avoided warnings,
|
||||
but we're finally giving way on that.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">warning_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::warnings_occurred</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> (</span><span class="identifier-syntax">warning_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">)?</span><span class="identifier-syntax">TRUE:FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. How problems begin and end. </b>During the construction of a problem message, we will be running through a
|
||||
standard text, and at any point might be considering matter which should
|
||||
appear only in the long form, or only in the short form.
|
||||
</p>
|
||||
|
@ -401,6 +412,13 @@ to remember whether to use the short or long form.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::issue_problem_begin</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">Problems::issue_problem_begin</span></span>:<br/>Problems, Level 3 - <a href="2-pl3.html#SP4">§4</a>, <a href="2-pl3.html#SP5">§5</a>, <a href="2-pl3.html#SP10">§10</a>, <a href="2-pl3.html#SP11">§11</a>, <a href="2-pl3.html#SP12">§12</a>, <a href="2-pl3.html#SP13">§13</a>, <a href="2-pl3.html#SP14">§14</a>, <a href="2-pl3.html#SP15">§15</a>, <a href="2-pl3.html#SP16">§16</a>, <a href="2-pl3.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_advisory_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">message</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">Problems::issue_warning_begin</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">Problems::issue_warning_begin</span></span>:<br/>Problems, Level 3 - <a href="2-pl3.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_advisory_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">message</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">Problems::issue_advisory_begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">problematic</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">currently_issuing_a_warning</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">problematic</span><span class="plain-syntax">)?</span><span class="identifier-syntax">FALSE:TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl1.html#SP1" class="function-link"><span class="function-syntax">ProblemBuffer::clear</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">strcmp</span><span class="plain-syntax">(</span><span class="identifier-syntax">message</span><span class="plain-syntax">, </span><span class="string-syntax">"*"</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax">, </span><span class="string-syntax">">++>"</span><span class="plain-syntax">);</span>
|
||||
|
@ -415,7 +433,7 @@ to remember whether to use the short or long form.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">this_is_a_subsequent_use_of_problem</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">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP3" class="function-link"><span class="function-syntax">Problems::show_problem_location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">problem_count</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">problematic</span><span class="plain-syntax">) </span><span class="identifier-syntax">problem_count</span><span class="plain-syntax">++; </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">warning_count</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">PBUFF</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">this_is_a_subsequent_use_of_problem</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP8" class="function-link"><span class="function-syntax">Problems::explained_before</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
|
@ -423,20 +441,24 @@ to remember whether to use the short or long form.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">scanning_problem_for</span><span class="plain-syntax"> = </span><span class="constant-syntax">ANY_USE_OF_PROBLEM</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">Problems::issue_problem_end</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">Problems::issue_problem_end</span></span>:<br/>Problems, Level 3 - <a href="2-pl3.html#SP3">§3</a>, <a href="2-pl3.html#SP11">§11</a>, <a href="2-pl3.html#SP12">§12</a>, <a href="2-pl3.html#SP13">§13</a>, <a href="2-pl3.html#SP14">§14</a>, <a href="2-pl3.html#SP15">§15</a>, <a href="2-pl3.html#SP16">§16</a>, <a href="2-pl3.html#SP18">§18</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">Problems::issue_problem_end</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Problems::issue_problem_end</span></span>:<br/>Problems, Level 3 - <a href="2-pl3.html#SP3">§3</a>, <a href="2-pl3.html#SP11">§11</a>, <a href="2-pl3.html#SP12">§12</a>, <a href="2-pl3.html#SP13">§13</a>, <a href="2-pl3.html#SP14">§14</a>, <a href="2-pl3.html#SP15">§15</a>, <a href="2-pl3.html#SP16">§16</a>, <a href="2-pl3.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">ENDING_MESSAGE_PROBLEMS_CALLBACK</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ENDING_MESSAGE_PROBLEMS_CALLBACK</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl1.html#SP6" class="function-link"><span class="function-syntax">ProblemBuffer::output_problem_buffer</span></a><span class="plain-syntax">(1);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::problem_documentation_links</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP11" class="function-link"><span class="function-syntax">Problems::problem_documentation_links</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">problems_file</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">crash_on_all_problems</span><span class="plain-syntax">) </span><a href="2-pl0.html#SP2" class="function-link"><span class="function-syntax">ProblemSigils::force_crash</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">currently_issuing_a_warning</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">Problems::issue_warning_end</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>Documentation links:
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>Documentation links:
|
||||
</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">Problems::problem_documentation_links</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Problems::problem_documentation_links</span></span>:<br/><a href="2-pl2.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::problem_documentation_links</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">Problems::problem_documentation_links</span></span>:<br/><a href="2-pl2.html#SP10">§10</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">sigil_of_latest_unlinked_problem</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">DOCUMENTATION_REFERENCE_PROBLEMS_CALLBACK</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DOCUMENTATION_REFERENCE_PROBLEMS_CALLBACK</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">sigil_of_latest_unlinked_problem</span><span class="plain-syntax">);</span>
|
||||
|
@ -448,26 +470,26 @@ to remember whether to use the short or long form.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">sigil_of_latest_problem</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. Appending source. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. Appending source. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">appended_source</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::append_source</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">Problems::append_source</span></span>:<br/><a href="2-pl2.html#SP12_1_3">§12.1.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::append_source</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Problems::append_source</span></span>:<br/><a href="2-pl2.html#SP13_1_3">§13.1.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">appended_source</span><span class="plain-syntax"> = </span><span class="identifier-syntax">W</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::transcribe_appended_source</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Problems::transcribe_appended_source</span></span>:<br/><a href="2-pl2.html#SP12_1_3">§12.1.3</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">Problems::transcribe_appended_source</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">Problems::transcribe_appended_source</span></span>:<br/><a href="2-pl2.html#SP13_1_3">§13.1.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">appended_source</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl1.html#SP4" class="function-link"><span class="function-syntax">ProblemBuffer::copy_source_reference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">appended_source</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. Issuing a segment of a problem message. </b>This function performs the substitution of quotations into problem messages and
|
||||
sends them on their way: which is called <a href="2-pl2.html#SP12" class="internal">Problems::issue_problem_segment</a>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. Issuing a segment of a problem message. </b>This function performs the substitution of quotations into problem messages and
|
||||
sends them on their way: which is called <a href="2-pl2.html#SP13" class="internal">Problems::issue_problem_segment</a>
|
||||
since it only appends a further piece of text, and may be used several times
|
||||
to build up complicated messages.
|
||||
</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">Problems::issue_problem_segment</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">Problems::issue_problem_segment</span></span>:<br/>Problems, Level 3 - <a href="2-pl3.html#SP4">§4</a>, <a href="2-pl3.html#SP5">§5</a>, <a href="2-pl3.html#SP11">§11</a>, <a href="2-pl3.html#SP12">§12</a>, <a href="2-pl3.html#SP13">§13</a>, <a href="2-pl3.html#SP14">§14</a>, <a href="2-pl3.html#SP15">§15</a>, <a href="2-pl3.html#SP16">§16</a>, <a href="2-pl3.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::issue_problem_segment</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">Problems::issue_problem_segment</span></span>:<br/>Problems, Level 3 - <a href="2-pl3.html#SP4">§4</a>, <a href="2-pl3.html#SP5">§5</a>, <a href="2-pl3.html#SP11">§11</a>, <a href="2-pl3.html#SP12">§12</a>, <a href="2-pl3.html#SP13">§13</a>, <a href="2-pl3.html#SP14">§14</a>, <a href="2-pl3.html#SP15">§15</a>, <a href="2-pl3.html#SP16">§16</a>, <a href="2-pl3.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</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">message</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">message</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] == </span><span class="character-syntax">'%'</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">message</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">+1]) {</span>
|
||||
|
@ -480,11 +502,14 @@ to build up complicated messages.
|
|||
<span class="plain-syntax"> (</span><span class="identifier-syntax">this_is_a_subsequent_use_of_problem</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">scanning_problem_for</span><span class="plain-syntax"> == </span><span class="constant-syntax">FIRST_USE_OF_PROBLEM</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">this_is_a_subsequent_use_of_problem</span><span class="plain-syntax"> == </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">)) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pl2.html#SP12_1" class="named-paragraph-link"><span class="named-paragraph">Act on the problem message text, since it is now contextually allowed</span><span class="named-paragraph-number">12.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pl2.html#SP13_1" class="named-paragraph-link"><span class="named-paragraph">Act on the problem message text, since it is now contextually allowed</span><span class="named-paragraph-number">13.1</span></a></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">Problems::issue_warning_segment</span><span class="plain-syntax">(</span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP13" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP12_1" class="paragraph-anchor"></a><b>§12.1. </b>Ordinarily we just append the new character, but we also act on the escapes
|
||||
<p class="commentary firstcommentary"><a id="SP13_1" class="paragraph-anchor"></a><b>§13.1. </b>Ordinarily we just append the new character, but we also act on the escapes
|
||||
<span class="extract"><span class="extract-syntax">%P</span></span> and <span class="extract"><span class="extract-syntax">%1</span></span> to <span class="extract"><span class="extract-syntax">%9</span></span>. <span class="extract"><span class="extract-syntax">%P</span></span> forces a paragraph break, or at any rate, it does
|
||||
in the eventual HTML version of the problem message. Note that these escapes
|
||||
are acted on only if they occur in a contextually allowed part of the problem
|
||||
|
@ -492,7 +517,7 @@ message (e.g., if they occur in the short form only, they will only be acted
|
|||
on when the shortened form is the one being issued).
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on the problem message text, since it is now contextually allowed</span><span class="named-paragraph-number">12.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Act on the problem message text, since it is now contextually allowed</span><span class="named-paragraph-number">13.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -505,33 +530,33 @@ on when the shortened form is the one being issued).
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax"> = ((</span><span class="reserved-syntax">int</span><span class="plain-syntax">) (</span><span class="identifier-syntax">message</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">+1]))-((</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="character-syntax">'0'</span><span class="plain-syntax">); </span><span class="identifier-syntax">i</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">t</span><span class="plain-syntax">>=1) && (</span><span class="identifier-syntax">t</span><span class="plain-syntax"><=9)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">problem_quotations</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">].</span><span class="element-syntax">quotation_type</span><span class="plain-syntax"> == </span><span class="character-syntax">'F'</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pl2.html#SP12_1_1" class="named-paragraph-link"><span class="named-paragraph">Expand file reference</span><span class="named-paragraph-number">12.1.1</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pl2.html#SP13_1_1" class="named-paragraph-link"><span class="named-paragraph">Expand file reference</span><span class="named-paragraph-number">13.1.1</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">problem_quotations</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">].</span><span class="element-syntax">wording_based</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pl2.html#SP12_1_2" class="named-paragraph-link"><span class="named-paragraph">Expand wording-based escape</span><span class="named-paragraph-number">12.1.2</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pl2.html#SP13_1_2" class="named-paragraph-link"><span class="named-paragraph">Expand wording-based escape</span><span class="named-paragraph-number">13.1.2</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pl2.html#SP12_1_3" class="named-paragraph-link"><span class="named-paragraph">Expand structure-based escape</span><span class="named-paragraph-number">12.1.3</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pl2.html#SP13_1_3" class="named-paragraph-link"><span class="named-paragraph">Expand structure-based escape</span><span class="named-paragraph-number">13.1.3</span></a></span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax">, </span><span class="identifier-syntax">message</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pl2.html#SP12">§12</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12_1_1" class="paragraph-anchor"></a><b>§12.1.1. </b>This is where there is an explicit reference to a filename and line number.
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pl2.html#SP13">§13</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13_1_1" class="paragraph-anchor"></a><b>§13.1.1. </b>This is where there is an explicit reference to a filename and line number.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Expand file reference</span><span class="named-paragraph-number">12.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Expand file reference</span><span class="named-paragraph-number">13.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="2-pl1.html#SP4" class="function-link"><span class="function-syntax">ProblemBuffer::copy_file_reference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">problem_quotations</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">].</span><span class="element-syntax">file</span><span class="plain-syntax">, </span><span class="identifier-syntax">problem_quotations</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">].</span><span class="element-syntax">line</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pl2.html#SP12_1">§12.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12_1_2" class="paragraph-anchor"></a><b>§12.1.2. </b>This is where a quotation escape, such as <span class="extract"><span class="extract-syntax">%2</span></span>, is expanded: by looking up
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pl2.html#SP13_1">§13.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13_1_2" class="paragraph-anchor"></a><b>§13.1.2. </b>This is where a quotation escape, such as <span class="extract"><span class="extract-syntax">%2</span></span>, is expanded: by looking up
|
||||
its type, stored internally as a single character.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Expand wording-based escape</span><span class="named-paragraph-number">12.1.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Expand wording-based escape</span><span class="named-paragraph-number">13.1.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -545,18 +570,18 @@ its type, stored internally as a single character.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax"> Tinted wording</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'r'</span><span class="plain-syntax">: </span><span class="named-paragraph-container code-font"><a href="2-pl2.html#SP12_1_2_1" class="named-paragraph-link"><span class="named-paragraph">Quote a red-tinted word range in a problem message</span><span class="named-paragraph-number">12.1.2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'r'</span><span class="plain-syntax">: </span><span class="named-paragraph-container code-font"><a href="2-pl2.html#SP13_1_2_1" class="named-paragraph-link"><span class="named-paragraph">Quote a red-tinted word range in a problem message</span><span class="named-paragraph-number">13.1.2.1</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="character-syntax">'g'</span><span class="plain-syntax">: </span><span class="named-paragraph-container code-font"><a href="2-pl2.html#SP12_1_2_2" class="named-paragraph-link"><span class="named-paragraph">Quote a green-tinted word range in a problem message</span><span class="named-paragraph-number">12.1.2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'g'</span><span class="plain-syntax">: </span><span class="named-paragraph-container code-font"><a href="2-pl2.html#SP13_1_2_2" class="named-paragraph-link"><span class="named-paragraph">Quote a green-tinted word range in a problem message</span><span class="named-paragraph-number">13.1.2.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="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">"unknown error token type"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pl2.html#SP12_1">§12.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12_1_2_1" class="paragraph-anchor"></a><b>§12.1.2.1. </b>Tinting text involves some HTML, of course:
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pl2.html#SP13_1">§13.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13_1_2_1" class="paragraph-anchor"></a><b>§13.1.2.1. </b>Tinting text involves some HTML, of course:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Quote a red-tinted word range in a problem message</span><span class="named-paragraph-number">12.1.2.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Quote a red-tinted word range in a problem message</span><span class="named-paragraph-number">13.1.2.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -564,14 +589,14 @@ its type, stored internally as a single character.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_span</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"problemred"</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">"%W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">problem_quotations</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">].</span><span class="element-syntax">text_quoted</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_span</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pl2.html#SP12_1_2_1_1" class="named-paragraph-link"><span class="named-paragraph">Spool temporary stream text to the problem buffer</span><span class="named-paragraph-number">12.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="2-pl2.html#SP13_1_2_1_1" class="named-paragraph-link"><span class="named-paragraph">Spool temporary stream text to the problem buffer</span><span class="named-paragraph-number">13.1.2.1.1</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">OUT</span><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pl2.html#SP12_1_2">§12.1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12_1_2_2" class="paragraph-anchor"></a><b>§12.1.2.2. </b>And:
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pl2.html#SP13_1_2">§13.1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13_1_2_2" class="paragraph-anchor"></a><b>§13.1.2.2. </b>And:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Quote a green-tinted word range in a problem message</span><span class="named-paragraph-number">12.1.2.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Quote a green-tinted word range in a problem message</span><span class="named-paragraph-number">13.1.2.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -579,31 +604,31 @@ its type, stored internally as a single character.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_span</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"problemgreen"</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">"%W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">problem_quotations</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">].</span><span class="element-syntax">text_quoted</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_span</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pl2.html#SP12_1_2_1_1" class="named-paragraph-link"><span class="named-paragraph">Spool temporary stream text to the problem buffer</span><span class="named-paragraph-number">12.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="2-pl2.html#SP13_1_2_1_1" class="named-paragraph-link"><span class="named-paragraph">Spool temporary stream text to the problem buffer</span><span class="named-paragraph-number">13.1.2.1.1</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">OUT</span><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pl2.html#SP12_1_2">§12.1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12_1_3" class="paragraph-anchor"></a><b>§12.1.3. </b>More generally, the reference is to some structure we can't write
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pl2.html#SP13_1_2">§13.1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13_1_3" class="paragraph-anchor"></a><b>§13.1.3. </b>More generally, the reference is to some structure we can't write
|
||||
ourselves, and must delegate to:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Expand structure-based escape</span><span class="named-paragraph-number">12.1.3</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Expand structure-based escape</span><span class="named-paragraph-number">13.1.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP11" class="function-link"><span class="function-syntax">Problems::append_source</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP12" class="function-link"><span class="function-syntax">Problems::append_source</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">problem_quotations</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">].</span><span class="element-syntax">quotation_type</span><span class="plain-syntax"> == </span><span class="character-syntax">'r'</span><span class="plain-syntax">) </span><span class="identifier-syntax">HTML::begin_span</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"problemred"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">problem_quotations</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">].</span><span class="element-syntax">quotation_type</span><span class="plain-syntax"> == </span><span class="character-syntax">'g'</span><span class="plain-syntax">) </span><span class="identifier-syntax">HTML::begin_span</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"problemgreen"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">problem_quotations</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">].</span><span class="element-syntax">expander</span><span class="plain-syntax">)(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">problem_quotations</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">].</span><span class="element-syntax">structure_quoted</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">problem_quotations</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">].</span><span class="element-syntax">quotation_type</span><span class="plain-syntax"> == </span><span class="character-syntax">'r'</span><span class="plain-syntax">) </span><span class="identifier-syntax">HTML::end_span</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">problem_quotations</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">].</span><span class="element-syntax">quotation_type</span><span class="plain-syntax"> == </span><span class="character-syntax">'g'</span><span class="plain-syntax">) </span><span class="identifier-syntax">HTML::end_span</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-pl2.html#SP12_1_2_1_1" class="named-paragraph-link"><span class="named-paragraph">Spool temporary stream text to the problem buffer</span><span class="named-paragraph-number">12.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="2-pl2.html#SP13_1_2_1_1" class="named-paragraph-link"><span class="named-paragraph">Spool temporary stream text to the problem buffer</span><span class="named-paragraph-number">13.1.2.1.1</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">OUT</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP11" class="function-link"><span class="function-syntax">Problems::transcribe_appended_source</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP12" class="function-link"><span class="function-syntax">Problems::transcribe_appended_source</span></a><span class="plain-syntax">();</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pl2.html#SP12_1">§12.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12_1_2_1_1" class="paragraph-anchor"></a><b>§12.1.2.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Spool temporary stream text to the problem buffer</span><span class="named-paragraph-number">12.1.2.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pl2.html#SP13_1">§13.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13_1_2_1_1" class="paragraph-anchor"></a><b>§13.1.2.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Spool temporary stream text to the problem buffer</span><span class="named-paragraph-number">13.1.2.1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -615,8 +640,8 @@ ourselves, and must delegate to:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</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="2-pl2.html#SP12_1_2_1">§12.1.2.1</a>, <a href="2-pl2.html#SP12_1_2_2">§12.1.2.2</a>, <a href="2-pl2.html#SP12_1_3">§12.1.3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b>This version is much shorter, since escapes aren't allowed:
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-pl2.html#SP13_1_2_1">§13.1.2.1</a>, <a href="2-pl2.html#SP13_1_2_2">§13.1.2.2</a>, <a href="2-pl2.html#SP13_1_3">§13.1.3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b>This version is much shorter, since escapes aren't allowed:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -624,7 +649,7 @@ ourselves, and must delegate to:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">PBUFF</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. Fatalities. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. Fatalities. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::fatal</span><span class="plain-syntax">(</span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">) {</span>
|
||||
|
@ -635,7 +660,7 @@ ourselves, and must delegate to:
|
|||
<span class="plain-syntax"> </span><a href="2-pl0.html#SP1" class="function-link"><span class="function-syntax">ProblemSigils::exit</span></a><span class="plain-syntax">(2);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::fatal_on_file</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">Problems::fatal_on_file</span></span>:<br/>Telemetry - <a href="1-tlm.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Problems::fatal_on_file</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Problems::fatal_on_file</span></span>:<br/>Telemetry - <a href="1-tlm.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</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="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">STDERR</span><span class="plain-syntax">, </span><span class="identifier-syntax">message</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">STDERR</span><span class="plain-syntax">, </span><span class="string-syntax">"\nOffending filename: <%f>\n"</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">STREAM_FLUSH</span><span class="plain-syntax">(</span><span class="identifier-syntax">STDERR</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -100,7 +100,7 @@ code 1:
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">StandardProblems::internal_error_end</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">StandardProblems::internal_error_end</span></span>:<br/><a href="2-pl3.html#SP4">§4</a>, <a href="2-pl3.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><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl1.html#SP7" class="function-link"><span class="function-syntax">ProblemBuffer::write_reports</span></a><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">debugger_mode</span><span class="plain-syntax">) </span><a href="2-pl0.html#SP2" class="function-link"><span class="function-syntax">ProblemSigils::force_crash</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl0.html#SP1" class="function-link"><span class="function-syntax">ProblemSigils::exit</span></a><span class="plain-syntax">(1);</span>
|
||||
|
@ -126,8 +126,8 @@ to be cautious.
|
|||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(2, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(3, </span><span class="identifier-syntax">filename</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_number</span></a><span class="plain-syntax">(4, &</span><span class="identifier-syntax">linenum</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP12" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP13" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"An internal error has occurred: %2. The current sentence is %1; the "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"error was detected at line %4 of \"%3\". This should never happen, "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"and I am now halting in abject failure."</span><span class="plain-syntax">);</span>
|
||||
|
@ -145,8 +145,8 @@ a <span class="extract"><span class="extract-syntax">char *</span></span>, one a
|
|||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(2, </span><span class="identifier-syntax">filename</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_number</span></a><span class="plain-syntax">(3, &</span><span class="identifier-syntax">linenum</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP12" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP13" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"An internal error has occurred: %1. The error was detected at "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"line %3 of \"%2\". This should never happen, and I am now halting "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"in abject failure."</span><span class="plain-syntax">);</span>
|
||||
|
@ -159,8 +159,8 @@ a <span class="extract"><span class="extract-syntax">char *</span></span>, one a
|
|||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_stream</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(2, </span><span class="identifier-syntax">filename</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_number</span></a><span class="plain-syntax">(3, &</span><span class="identifier-syntax">linenum</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP12" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP13" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"An internal error has occurred: %1. The error was detected at "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"line %3 of \"%2\". This should never happen, and I am now halting "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"in abject failure."</span><span class="plain-syntax">);</span>
|
||||
|
@ -254,7 +254,11 @@ tree which represents a proposition.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="constant-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">StandardProblems::handmade_warning</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="constant-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_warning_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. Limit problems. </b>Running out of memory, irretrievably: the politest kind of fatal error,
|
||||
|
@ -267,13 +271,13 @@ though let's face it, fatal is fatal.
|
|||
<span class="plain-syntax"> </span><span class="constant-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">what_has_run_out</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_number</span></a><span class="plain-syntax">(2, &</span><span class="identifier-syntax">how_many</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP12" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP13" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"I have run out of memory for %1 - there's room for %2, but no more. "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"This is a 'hard limit', hard in the sense of deadlines, or luck: "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"there is no getting around it. You will need to rewrite your source "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"text so that it needs fewer %1."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl1.html#SP7" class="function-link"><span class="function-syntax">ProblemBuffer::write_reports</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl0.html#SP1" class="function-link"><span class="function-syntax">ProblemSigils::exit</span></a><span class="plain-syntax">(1);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -282,14 +286,14 @@ though let's face it, fatal is fatal.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">what_has_run_out</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">what_has_run_out</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP12" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="string-syntax">""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP13" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"I am unable to persuade this computer to let me have memory in "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"which to store the %1. This rarely happens on a modern desktop or laptop, "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"but might occur on a small handheld device - if so, it may be a "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"symptom that the device isn't powerful enough to run me. (See how "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"I pass the blame?)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl1.html#SP7" class="function-link"><span class="function-syntax">ProblemBuffer::write_reports</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl0.html#SP1" class="function-link"><span class="function-syntax">ProblemSigils::exit</span></a><span class="plain-syntax">(1);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -312,9 +316,9 @@ We begin with lexical problems happening when the run is hardly begun:
|
|||
<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">current_sentence</span><span class="plain-syntax">) </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_source</span></a><span class="plain-syntax">(2, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(2, </span><span class="string-syntax">"<text generated internally>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(3, </span><span class="identifier-syntax">lexical_explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">lexical_explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP12" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span><span class="string-syntax">"%1: %2.%L %3"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">lexical_explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP13" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span><span class="string-syntax">"%1: %2.%L %3"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><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">StandardProblems::lexical_problem_S</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="constant-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">,</span>
|
||||
|
@ -330,9 +334,9 @@ We begin with lexical problems happening when the run is hardly begun:
|
|||
<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">current_sentence</span><span class="plain-syntax">) </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_source</span></a><span class="plain-syntax">(2, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(2, </span><span class="string-syntax">"<text generated internally>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(3, </span><span class="identifier-syntax">lexical_explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">lexical_explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP12" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span><span class="string-syntax">"%1: %2.%L %3"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">lexical_explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP13" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span><span class="string-syntax">"%1: %2.%L %3"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b>Clearly lexical problems cannot cite positions in the source text, and some
|
||||
|
@ -344,9 +348,9 @@ other problems can't either, so:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">message</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">ACT_ON_SIGIL</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">do_not_locate_problems</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP12" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP13" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">do_not_locate_problems</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -357,9 +361,9 @@ other problems can't either, so:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">fn</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">fn</span><span class="plain-syntax">, </span><span class="string-syntax">"%f"</span><span class="plain-syntax">, </span><span class="identifier-syntax">F</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_stream</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">fn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP12" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP13" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><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">fn</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">do_not_locate_problems</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -377,9 +381,9 @@ that isn't surprising, since it simply quotes the entire sentence at fault
|
|||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_source</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(2, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(3, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP12" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span><span class="string-syntax">"You wrote %1: %Sagain, %2.%Lbut %2, %3"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP13" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span><span class="string-syntax">"You wrote %1: %Sagain, %2.%Lbut %2, %3"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b>And a variant which adds a note in a subsequent paragraph.
|
||||
|
@ -393,9 +397,9 @@ that isn't surprising, since it simply quotes the entire sentence at fault
|
|||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(2, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(3, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(4, </span><span class="identifier-syntax">note</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP12" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span><span class="string-syntax">"You wrote %1: %Sagain, %2.%Lbut %2, %3 %P%4"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP13" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span><span class="string-syntax">"You wrote %1: %Sagain, %2.%Lbut %2, %3 %P%4"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. </b>And this is a variant which draws particular attention to a word range
|
||||
|
@ -410,10 +414,10 @@ which is part of the current sentence.
|
|||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(2, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(3, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_wording</span></a><span class="plain-syntax">(4, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP12" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP13" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"You wrote %1, and in particular '%4': %Sagain, %2.%Lbut %2, %3"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b>A not always helpful problem message which is needed in several places, and
|
||||
|
@ -441,10 +445,10 @@ word "Definition" alone. So we use this routine instead:
|
|||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_source</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">q</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(2, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(3, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP12" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP13" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"You gave as a definition %1: %Sagain, %2.%Lbut %2, %3"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><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">StandardProblems::adjective_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="constant-syntax">SIGIL_ARGUMENTS</span><span class="plain-syntax">,</span>
|
||||
|
@ -455,11 +459,11 @@ word "Definition" alone. So we use this routine instead:
|
|||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(3, </span><span class="identifier-syntax">message</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_text</span></a><span class="plain-syntax">(4, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP6" class="function-link"><span class="function-syntax">Problems::quote_source</span></a><span class="plain-syntax">(5, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP12" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP13" class="function-link"><span class="function-syntax">Problems::issue_problem_segment</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"In %5 you defined an adjective by '%1' intending that "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"it would apply to '%2': %Sagain, %3.%Lbut %3, %4"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP9" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-pl2.html#SP10" class="function-link"><span class="function-syntax">Problems::issue_problem_end</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. Creating the Problems report. </b>We are at last able to print the text which appears at the top of the
|
||||
|
|
|
@ -100,12 +100,12 @@ file used in problem messages; Inform uses this to say "the source text" or
|
|||
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b><span class="extract"><span class="extract-syntax">DOCUMENTATION_REFERENCE_PROBLEMS_CALLBACK</span></span> is invited to add a clickable
|
||||
link to in-app documentation; if no callback function is provided, no
|
||||
such links appear. See <a href="2-pl2.html#SP10" class="internal">Problems::problem_documentation_links</a>.
|
||||
such links appear. See <a href="2-pl2.html#SP11" class="internal">Problems::problem_documentation_links</a>.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b><span class="extract"><span class="extract-syntax">ENDING_MESSAGE_PROBLEMS_CALLBACK</span></span> is called just before a problem message
|
||||
is about to end, and can be used to append some extra wording. See
|
||||
<a href="2-pl2.html#SP9" class="internal">Problems::issue_problem_end</a>.
|
||||
<a href="2-pl2.html#SP10" class="internal">Problems::issue_problem_end</a>.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b><span class="extract"><span class="extract-syntax">FIRST_PROBLEMS_CALLBACK</span></span> is called before the first problem in a run is
|
||||
|
|
|
@ -160,9 +160,9 @@ For example:
|
|||
|
||||
<ul class="items"><li>(a) Establish what material should go into the placeholders <span class="extract"><span class="extract-syntax">%1</span></span> and <span class="extract"><span class="extract-syntax">%2</span></span>,
|
||||
</li><li>(b) Call <a href="2-pl3.html#SP10" class="internal">StandardProblems::handmade_problem</a> to begin work,
|
||||
</li><li>(c) Call <a href="2-pl2.html#SP12" class="internal">Problems::issue_problem_segment</a> a number of times — though often
|
||||
</li><li>(c) Call <a href="2-pl2.html#SP13" class="internal">Problems::issue_problem_segment</a> a number of times — though often
|
||||
just once — to put some text into the problem, and
|
||||
</li><li>(d) Call <a href="2-pl2.html#SP9" class="internal">Problems::issue_problem_end</a> to signal that we are done.
|
||||
</li><li>(d) Call <a href="2-pl2.html#SP10" class="internal">Problems::issue_problem_end</a> to signal that we are done.
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>As this demonstrates, problem messages are expanded from prototypes using
|
||||
a <span class="extract"><span class="extract-syntax">printf</span></span>-like formatting system. Unlike <span class="extract"><span class="extract-syntax">printf</span></span>, though, where <span class="extract"><span class="extract-syntax">%s</span></span> means
|
||||
|
@ -185,7 +185,7 @@ generated,
|
|||
</li><li>● <span class="extract"><span class="extract-syntax">%A</span></span> means "both long and short", which is the situation at the start,
|
||||
</li></ul>
|
||||
<p class="commentary">Note that the form is reset to <span class="extract"><span class="extract-syntax">%A</span></span> when a new problem message begins, but not
|
||||
in between calls to <a href="2-pl2.html#SP12" class="internal">Problems::issue_problem_segment</a>: i.e., if one segment
|
||||
in between calls to <a href="2-pl2.html#SP13" class="internal">Problems::issue_problem_segment</a>: i.e., if one segment
|
||||
leaves things in <span class="extract"><span class="extract-syntax">%L</span></span>, the next segment, if there is one, resumes that way.
|
||||
</p>
|
||||
|
||||
|
@ -222,7 +222,7 @@ placeholders with content — see <a href="2-pl2.html#SP4" class="internal">
|
|||
<p class="commentary">The mechanism for determining whether an explanation has been given before is
|
||||
<a href="2-pl2.html#SP8" class="internal">Problems::explained_before</a>. The obvious thing would be to go by the sigils
|
||||
of previously issued messages, but it actually uses the textual token supplied
|
||||
on the call to <a href="2-pl2.html#SP9" class="internal">Problems::issue_problem_begin</a>, which allows for some
|
||||
on the call to <a href="2-pl2.html#SP10" class="internal">Problems::issue_problem_begin</a>, which allows for some
|
||||
variations — Level 3 functions are able to use this to ensure that particular
|
||||
kinds of message are always, or are never, explained.
|
||||
</p>
|
||||
|
@ -240,8 +240,8 @@ typically used for filing-system disasters or failed assertions (so-called
|
|||
<p class="commentary">Facilities for these are very limited:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● <a href="2-pl2.html#SP14" class="internal">Problems::fatal</a> for a simple message with fixed wording.
|
||||
</li><li>● <a href="2-pl2.html#SP14" class="internal">Problems::fatal_on_file</a> for a message relating to a file.
|
||||
<ul class="items"><li>● <a href="2-pl2.html#SP15" class="internal">Problems::fatal</a> for a simple message with fixed wording.
|
||||
</li><li>● <a href="2-pl2.html#SP15" class="internal">Problems::fatal_on_file</a> for a message relating to a file.
|
||||
</li></ul>
|
||||
<p class="commentary">These routines have to be written with care because a file-system disaster
|
||||
might mean that the problems file itself cannot be written to.
|
||||
|
|
|
@ -239,6 +239,7 @@ better way to choose a virtual machine to compile to.
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">NEST_CLSW</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">INTERNAL_CLSW</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">EXTERNAL_CLSW</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">DEPRECATED_EXTERNAL_CLSW</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">TRANSIENT_CLSW</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6_4" class="paragraph-anchor"></a><b>§6.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Declare resource-related options</span><span class="named-paragraph-number">6.4</span></span><span class="comment-syntax"> =</span>
|
||||
|
@ -252,6 +253,8 @@ better way to choose a virtual machine to compile to.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"use X as the location of built-in material such as the Standard Rules"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CommandLine::declare_switch</span><span class="plain-syntax">(</span><span class="constant-syntax">EXTERNAL_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"external"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"use X as the user's home for installed material such as extensions"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CommandLine::declare_switch</span><span class="plain-syntax">(</span><span class="constant-syntax">DEPRECATED_EXTERNAL_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"deprecated-external"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"same as -external X, but issues warnings if the nest is actually used"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CommandLine::declare_switch</span><span class="plain-syntax">(</span><span class="constant-syntax">TRANSIENT_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"transient"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"use X for transient data such as the extensions census"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CommandLine::end_group</span><span class="plain-syntax">();</span>
|
||||
|
@ -346,6 +349,9 @@ it doesn't know about, that will be one of ours, so it should call the following
|
|||
<span class="plain-syntax"> </span><a href="1-ic.html#SP14" class="function-link"><span class="function-syntax">Supervisor::add_nest</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Pathnames::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">), </span><span class="constant-syntax">INTERNAL_NEST_TAG</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">EXTERNAL_CLSW:</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ic.html#SP14" class="function-link"><span class="function-syntax">Supervisor::add_nest</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Pathnames::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">), </span><span class="constant-syntax">EXTERNAL_NEST_TAG</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">DEPRECATED_EXTERNAL_CLSW:</span>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP4" class="function-link"><span class="function-syntax">Nests::deprecate</span></a><span class="plain-syntax">(</span><a href="1-ic.html#SP14" class="function-link"><span class="function-syntax">Supervisor::add_nest</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Pathnames::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">EXTERNAL_NEST_TAG</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">TRANSIENT_CLSW:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">shared_transient_resources</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Pathnames::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">arg</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">BASIC_CLSW:</span><span class="plain-syntax"> </span><a href="5-ps2.html#SP22" class="function-link"><span class="function-syntax">Projects::enter_forcible_basic_mode</span></a><span class="plain-syntax">(); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
@ -608,8 +614,8 @@ nests, respectively.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_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">shared_nest_list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ic.html#SP15" class="function-link"><span class="function-syntax">Supervisor::report_nest_list</span></a><span class="plain-syntax">(2, </span><span class="identifier-syntax">I</span><span class="string-syntax">"unsorted"</span><span class="plain-syntax">, </span><span class="identifier-syntax">unsorted_nest_list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ic.html#SP15" class="function-link"><span class="function-syntax">Supervisor::report_nest_list</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">I</span><span class="string-syntax">"shared"</span><span class="plain-syntax">, </span><span class="identifier-syntax">shared_nest_list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SVEXPLAIN</span><span class="plain-syntax">(1, </span><span class="string-syntax">"(shared internal nest: %p)\n"</span><span class="plain-syntax">, </span><a href="2-nst.html#SP4" class="function-link"><span class="function-syntax">Nests::get_location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">shared_internal_nest</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SVEXPLAIN</span><span class="plain-syntax">(1, </span><span class="string-syntax">"(shared external nest: %p)\n"</span><span class="plain-syntax">, </span><a href="2-nst.html#SP4" class="function-link"><span class="function-syntax">Nests::get_location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">shared_external_nest</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SVEXPLAIN</span><span class="plain-syntax">(1, </span><span class="string-syntax">"(shared internal nest: %p)\n"</span><span class="plain-syntax">, </span><a href="2-nst.html#SP5" class="function-link"><span class="function-syntax">Nests::get_location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">shared_internal_nest</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SVEXPLAIN</span><span class="plain-syntax">(1, </span><span class="string-syntax">"(shared external nest: %p)\n"</span><span class="plain-syntax">, </span><a href="2-nst.html#SP5" class="function-link"><span class="function-syntax">Nests::get_location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">shared_external_nest</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">Supervisor::report_nest_list</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">level</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">desc</span><span class="plain-syntax">, </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
|
||||
|
@ -618,7 +624,7 @@ nests, respectively.
|
|||
<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">L</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SVEXPLAIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">level</span><span class="plain-syntax">, </span><span class="string-syntax">"\n %S %p"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP2" class="function-link"><span class="function-syntax">Nests::tag_name</span></a><span class="plain-syntax">(</span><a href="2-nst.html#SP2" class="function-link"><span class="function-syntax">Nests::get_tag</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">)), </span><a href="2-nst.html#SP4" class="function-link"><span class="function-syntax">Nests::get_location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP2" class="function-link"><span class="function-syntax">Nests::tag_name</span></a><span class="plain-syntax">(</span><a href="2-nst.html#SP2" class="function-link"><span class="function-syntax">Nests::get_tag</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">)), </span><a href="2-nst.html#SP5" class="function-link"><span class="function-syntax">Nests::get_location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SVEXPLAIN</span><span class="plain-syntax">(</span><span class="identifier-syntax">level</span><span class="plain-syntax">, </span><span class="string-syntax">")\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
|
|
@ -141,6 +141,11 @@ additional data specific to your genre:
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Copies::set_metadata</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">Copies::set_metadata</span></span>:<br/>Extension Services - <a href="5-es.html#SP2">§2</a><br/>Kit Services - <a href="5-ks.html#SP5">§5</a><br/>Language Services - <a href="5-ls.html#SP2">§2</a><br/>Pipeline Services - <a href="5-ps.html#SP2">§2</a><br/>Project Services - <a href="5-ps2.html#SP2">§2</a><br/>Template Services - <a href="5-ts.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">general_pointer</span><span class="plain-syntax"> </span><span class="identifier-syntax">ref</span><span class="plain-syntax">) {</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="identifier-syntax">ref</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="function-syntax">Copies::origin</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<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">nest_of_origin</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. List of errors. </b>When copies are found to be malformed, error messages are attached to them
|
||||
for later reporting. These are stored in a list.
|
||||
|
@ -177,7 +182,7 @@ for later reporting. These are stored in a list.
|
|||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. Writing. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Copies::write_copy</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">Copies::write_copy</span></span>:<br/>Supervisor Module - <a href="1-sm.html#SP4">§4</a><br/>Nests - <a href="2-nst.html#SP8">§8</a><br/>Build Graphs - <a href="3-bg.html#SP6">§6</a>, <a href="3-bg.html#SP8">§8</a>, <a href="3-bg.html#SP10_1">§10.1</a><br/>The Report - <a href="7-tr.html#SP2_5_2">§2.5.2</a>, <a href="7-tr.html#SP2_5">§2.5</a>, <a href="7-tr.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="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Copies::write_copy</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">Copies::write_copy</span></span>:<br/>Supervisor Module - <a href="1-sm.html#SP4">§4</a><br/>Nests - <a href="2-nst.html#SP9">§9</a><br/>Build Graphs - <a href="3-bg.html#SP6">§6</a>, <a href="3-bg.html#SP8">§8</a>, <a href="3-bg.html#SP10_1">§10.1</a><br/>The Report - <a href="7-tr.html#SP2_5_2">§2.5.2</a>, <a href="7-tr.html#SP2_5">§2.5</a>, <a href="7-tr.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="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><a href="2-edt.html#SP1" class="function-link"><span class="function-syntax">Editions::write</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="element-syntax">edition</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
|
|
@ -59,7 +59,7 @@ function togglePopup(material_id) {
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../inbuildn.html">Inbuild Modules</a></li><li><a href="index.html">supervisor</a></li><li><a href="index.html#2">Chapter 2: Conceptual Framework</a></li><li><b>Nests</b></li></ul></div>
|
||||
<p class="purpose">Nests are repositories of Inform-related resources.</p>
|
||||
|
||||
<ul class="toc"><li><a href="2-nst.html#SP1">§1. Creation</a></li><li><a href="2-nst.html#SP5">§5. Search list</a></li><li><a href="2-nst.html#SP6">§6. Search results</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="2-nst.html#SP1">§1. Creation</a></li><li><a href="2-nst.html#SP6">§6. Search list</a></li><li><a href="2-nst.html#SP7">§7. Search results</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Creation. </b>To "create" a nest here does not mean actually altering the file system, for
|
||||
example by making a directory: nests here are merely notes in memory of
|
||||
|
@ -71,6 +71,7 @@ positions in the file system hierarchy which may or may not exist.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">location</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">read_only</span><span class="plain-syntax">; </span><span class="comment-syntax"> files cannot be written into this nest</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tag_value</span><span class="plain-syntax">; </span><span class="comment-syntax"> used to indicate whether internal, external, and such</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">deprecated</span><span class="plain-syntax">; </span><span class="comment-syntax"> issue warnings if resources from here are actually used</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="function-syntax">Nests::new</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Nests::new</span></span>:<br/>Inbuild Control - <a href="1-ic.html#SP14">§14</a><br/>Registries - <a href="2-rgs.html#SP2">§2</a><br/>Extension Services - <a href="5-es.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
|
||||
|
@ -78,6 +79,7 @@ positions in the file system hierarchy which may or may not exist.
|
|||
<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">P</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">read_only</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">N</span><span class="plain-syntax">-></span><span class="element-syntax">tag_value</span><span class="plain-syntax"> = -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">deprecated</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -98,7 +100,7 @@ see below for why. Lower-tag-numbered origins are better than later ones.
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">EXTENSION_NEST_TAG</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Nests::get_tag</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Nests::get_tag</span></span>:<br/><a href="2-nst.html#SP10">§10</a><br/>Inbuild Control - <a href="1-ic.html#SP15">§15</a><br/>Inform7 Skill - <a href="3-is2.html#SP1">§1</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP5">§5</a><br/>Inclusions - <a href="6-inc.html#SP6_1">§6.1</a><br/>Census - <a href="7-cns.html#SP2">§2</a>, <a href="7-cns.html#SP3">§3</a>, <a href="7-cns.html#SP5">§5</a>, <a href="7-cns.html#SP7_1">§7.1</a><br/>Index Pages - <a href="7-ip.html#SP1_1_1_1">§1.1.1.1</a>, <a href="7-ip.html#SP1_1_2_1_6_4_3">§1.1.2.1.6.4.3</a><br/>The Report - <a href="7-tr.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Nests::get_tag</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Nests::get_tag</span></span>:<br/><a href="2-nst.html#SP11">§11</a><br/>Inbuild Control - <a href="1-ic.html#SP15">§15</a><br/>Inform7 Skill - <a href="3-is2.html#SP1">§1</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP5">§5</a><br/>Inclusions - <a href="6-inc.html#SP6_1">§6.1</a><br/>Census - <a href="7-cns.html#SP2">§2</a>, <a href="7-cns.html#SP3">§3</a>, <a href="7-cns.html#SP5">§5</a>, <a href="7-cns.html#SP7_1">§7.1</a><br/>Index Pages - <a href="7-ip.html#SP1_1_1_1">§1.1.1.1</a>, <a href="7-ip.html#SP1_1_2_1_6_4_3">§1.1.2.1.6.4.3</a><br/>The Report - <a href="7-tr.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="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>
|
||||
|
@ -108,7 +110,7 @@ see below for why. Lower-tag-numbered origins are better than later ones.
|
|||
<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="identifier-syntax">t</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">Nests::tag_name</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">Nests::tag_name</span></span>:<br/><a href="2-nst.html#SP8">§8</a><br/>Inbuild Control - <a href="1-ic.html#SP14">§14</a>, <a href="1-ic.html#SP15">§15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Nests::tag_name</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">Nests::tag_name</span></span>:<br/><a href="2-nst.html#SP9">§9</a><br/>Inbuild Control - <a href="1-ic.html#SP14">§14</a>, <a href="1-ic.html#SP15">§15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MATERIALS_NEST_TAG:</span><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">"materials"</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">EXTERNAL_NEST_TAG:</span><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">"external"</span><span class="plain-syntax">;</span>
|
||||
|
@ -119,7 +121,9 @@ see below for why. Lower-tag-numbered origins are better than later ones.
|
|||
<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">"<unknown nest tag>"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>A nest is read-only if nothing in it should be updated or added to. You
|
||||
can't install to a read-only nest.
|
||||
</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::protect</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">Nests::protect</span></span>:<br/>Inbuild Control - <a href="1-ic.html#SP14">§14</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>
|
||||
|
@ -131,15 +135,28 @@ see below for why. Lower-tag-numbered origins are better than later ones.
|
|||
<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">read_only</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>A nest is deprecated if its resources can be used, but ideally shouldn't be.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Nests::get_location</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Nests::get_location</span></span>:<br/>Inbuild Control - <a href="1-ic.html#SP15">§15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Nests::deprecate</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::deprecate</span></span>:<br/>Inbuild Control - <a href="1-ic.html#SP9">§9</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="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">deprecated</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">int</span><span class="plain-syntax"> </span><span class="function-syntax">Nests::is_deprecated</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">Nests::is_deprecated</span></span>:<br/>Inform7 Skill - <a href="3-is2.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">deprecated</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Nests::get_location</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Nests::get_location</span></span>:<br/>Inbuild Control - <a href="1-ic.html#SP15">§15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">N</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">-></span><span class="element-syntax">location</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. Search list. </b>When we search for copies, we do so by looking through nests in a list. The
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. Search list. </b>When we search for copies, we do so by looking through nests in a list. The
|
||||
following builds such lists, removing duplicates — where duplicates are
|
||||
shown up by having the same textual form of pathname. (This is not foolproof
|
||||
by any means: Unix is replete with ways to describe the same directory, thanks
|
||||
|
@ -165,7 +182,7 @@ would just produce search results which were more copious than needed.)
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_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>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. Search results. </b>When we search a list of nests for copies satisfying certain requirements,
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Search results. </b>When we search a list of nests for copies satisfying certain requirements,
|
||||
we create one of these for each hit:
|
||||
</p>
|
||||
|
||||
|
@ -177,11 +194,11 @@ we create one of these for each hit:
|
|||
<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, 2/rgs, 3/is, 5/ks, 5/ls, 6/inc, 7/dct, 7/cns, 7/ip, 7/ip2, 7/tr and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>These can be created only as entries in a list:
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>These can be created only as entries in a list:
|
||||
</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::add_search_result</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">Nests::add_search_result</span></span>:<br/>Extension Manager - <a href="4-em.html#SP6">§6</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP6">§6</a><br/>Kit Manager - <a href="4-km.html#SP7">§7</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></span></button><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="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">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Nests::add_search_result</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">Nests::add_search_result</span></span>:<br/>Extension Manager - <a href="4-em.html#SP6">§6</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP6">§6</a><br/>Kit Manager - <a href="4-km.html#SP7">§7</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></span></button><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="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">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">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">inbuild_search_result</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_search_result</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">nest</span><span class="plain-syntax"> = </span><span class="identifier-syntax">N</span><span class="plain-syntax">;</span>
|
||||
|
@ -191,12 +208,12 @@ we create one of these for each hit:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_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">results</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>And here is our search engine, such as it is. For each nest, we ask each
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>And here is our search engine, such as it is. For each nest, we ask each
|
||||
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('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Nests::search_for</span></span>:<br/><a href="2-nst.html#SP9">§9</a><br/>Language Services - <a href="5-ls.html#SP11">§11</a><br/>Inclusions - <a href="6-inc.html#SP6_1_2">§6.1.2</a><br/>Census - <a href="7-cns.html#SP7">§7</a><br/>The Report - <a href="7-tr.html#SP2_4_4">§2.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Nests::search_for</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Nests::search_for</span></span>:<br/><a href="2-nst.html#SP10">§10</a><br/>Language Services - <a href="5-ls.html#SP11">§11</a><br/>Inclusions - <a href="6-inc.html#SP6_1_2">§6.1.2</a><br/>Census - <a href="7-cns.html#SP7">§7</a><br/>The Report - <a href="7-tr.html#SP2_4_4">§2.4.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">search_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">results</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax"> = </span><span class="identifier-syntax">STDOUT</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">supervisor_verbosity</span><span class="plain-syntax"> >= </span><span class="constant-syntax">3</span><span class="plain-syntax">) {</span>
|
||||
|
@ -232,18 +249,18 @@ genre's manager to look for copies of that genre:
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>Oftentimes, we want only the single best result, and won't even look at the
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>Oftentimes, we want only the single best result, and won't even look at the
|
||||
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('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">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#SP6_1">§6.1</a><br/>Dictionary - <a href="7-dct.html#SP9">§9</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('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">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#SP6_1">§6.1</a><br/>Dictionary - <a href="7-dct.html#SP9">§9</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#SP8" 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>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP9" class="function-link"><span class="function-syntax">Nests::search_for</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">req</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax"> *</span><span class="identifier-syntax">best</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">search_result</span><span class="plain-syntax">; </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="identifier-syntax">bc</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">search_result</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-nst.html#SP10" class="function-link"><span class="function-syntax">Nests::better_result</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">search_result</span><span class="plain-syntax">, </span><span class="identifier-syntax">best</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#SP11" class="function-link"><span class="function-syntax">Nests::better_result</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">search_result</span><span class="plain-syntax">, </span><span class="identifier-syntax">best</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">best</span><span class="plain-syntax"> = </span><span class="identifier-syntax">search_result</span><span class="plain-syntax">; </span><span class="identifier-syntax">bc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">++;</span>
|
||||
|
@ -252,7 +269,7 @@ others:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">best</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>Where "better" is defined as follows. This innocent-looking function is
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>Where "better" is defined as follows. This innocent-looking function is
|
||||
in fact critical to what Inbuild does. It uses tags on nests to prefer copies
|
||||
in the Materials folder to those in the external nest, and to prefer those in
|
||||
turn to copies in the internal nest; and within nests of equal importance,
|
||||
|
@ -261,7 +278,7 @@ semantic version numbers.
|
|||
</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">Nests::better_result</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Nests::better_result</span></span>:<br/><a href="2-nst.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R2</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Nests::better_result</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">Nests::better_result</span></span>:<br/><a href="2-nst.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax"> Something is better than nothing</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R2</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>
|
||||
|
|
|
@ -211,7 +211,7 @@ empty text is legal here, and produces an unlimited requirement.
|
|||
</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">Requirements::write</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">Requirements::write</span></span>:<br/>Nests - <a href="2-nst.html#SP8">§8</a><br/>Build Graphs - <a href="3-bg.html#SP6">§6</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_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">Requirements::write</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">Requirements::write</span></span>:<br/>Nests - <a href="2-nst.html#SP9">§9</a><br/>Build Graphs - <a href="3-bg.html#SP6">§6</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_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="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<none>"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">claused</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">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>
|
||||
|
|
|
@ -289,18 +289,9 @@ vertex: it's used by the Inbuild command <span class="extract"><span class="extr
|
|||
<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">V</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">last_scanned</span><span class="plain-syntax"> != </span><span class="identifier-syntax">scan_count</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">last_scanned</span><span class="plain-syntax"> = </span><span class="identifier-syntax">scan_count</span><span class="plain-syntax">;</span>
|
||||
<span class="comment-syntax"> if (paths) {</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="element-syntax">location_if_path</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><span class="identifier-syntax">C</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">else</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="element-syntax">location_if_file</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%f"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">location_if_file</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">"?unlocated"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" (%S)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="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="element-syntax">genre_name</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="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="identifier-syntax">depth</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S: "</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="identifier-syntax">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="element-syntax">genre_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cps.html#SP6" class="function-link"><span class="function-syntax">Copies::write_copy</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="comment-syntax"> }</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="identifier-syntax">depth</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S: "</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="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="element-syntax">genre_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cps.html#SP6" class="function-link"><span class="function-syntax">Copies::write_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\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">paths</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-bg.html#SP8_1" class="named-paragraph-link"><span class="named-paragraph">Add needs-locations</span><span class="named-paragraph-number">8.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -174,7 +174,7 @@ should be, so the effect is the same.
|
|||
<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><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="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">pipeline_genre</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><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#SP9" 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><span class="identifier-syntax">search_list</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#SP10" 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><span class="identifier-syntax">search_list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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">location_if_file</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -213,7 +213,7 @@ it defaults to <span class="extract"><span class="extract-syntax">compile</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><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="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">pipeline_genre</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_pipeline_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><a href="2-nst.html#SP9" 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><span class="identifier-syntax">search_list</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#SP10" 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><span class="identifier-syntax">search_list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</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">Errors::with_text</span><span class="plain-syntax">(</span><span class="string-syntax">"inter pipeline '%S' could not be found"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_pipeline_name</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -90,7 +90,10 @@ if we are running inside <span class="extract"><span class="extract-syntax">info
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><a href="2-nst.html#SP2" class="function-link"><span class="function-syntax">Nests::get_tag</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MATERIALS_NEST_TAG:</span><span class="plain-syntax"> </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">EXTENSION_NEST_TAG:</span><span class="plain-syntax"> </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">EXTERNAL_NEST_TAG:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="string-syntax">"-external "</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">EXTERNAL_NEST_TAG:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-nst.html#SP4" class="function-link"><span class="function-syntax">Nests::is_deprecated</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="string-syntax">"-deprecated-external "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="string-syntax">"-external "</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">GENERIC_NEST_TAG:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="string-syntax">"-nest "</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">INTERNAL_NEST_TAG:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">command</span><span class="plain-syntax">, </span><span class="string-syntax">"-internal "</span><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">"mystery nest"</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -480,7 +480,7 @@ copy name.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Q</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">entry</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="4-ebm.html#SP5" class="function-link"><span class="function-syntax">ExtensionBundleManager::claim_folder_as_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Q</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">C</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">C</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><a href="2-nst.html#SP7" class="function-link"><span class="function-syntax">Nests::add_search_result</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">search_results</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP8" class="function-link"><span class="function-syntax">Nests::add_search_result</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">search_results</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">recurse</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Str::ne</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Reserved"</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">Str::ne</span><span class="plain-syntax">(</span><span class="identifier-syntax">entry</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Source"</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ebm.html#SP6" class="function-link"><span class="function-syntax">ExtensionBundleManager::search_nest_for_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Q</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_results</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -233,7 +233,7 @@ with leafnames beginning <span class="extract"><span class="extract-syntax">.</s
|
|||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Str::get_first_char</span><span class="plain-syntax">(</span><span class="identifier-syntax">Filenames::get_leafname</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">)) != </span><span class="character-syntax">'.'</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="4-em.html#SP5" class="function-link"><span class="function-syntax">ExtensionManager::claim_file_as_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</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">C</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">C</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><a href="2-nst.html#SP7" class="function-link"><span class="function-syntax">Nests::add_search_result</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">search_results</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP8" class="function-link"><span class="function-syntax">Nests::add_search_result</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">search_results</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">fext</span><span class="plain-syntax">)</span>
|
||||
|
|
|
@ -199,7 +199,7 @@ requirements.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Q</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">entry</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="4-km.html#SP6" class="function-link"><span class="function-syntax">KitManager::claim_folder_as_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Q</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">C</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">C</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><a href="2-nst.html#SP7" class="function-link"><span class="function-syntax">Nests::add_search_result</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">search_results</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP8" class="function-link"><span class="function-syntax">Nests::add_search_result</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">search_results</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -177,7 +177,7 @@ requirements.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Q</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">entry</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="4-lm.html#SP4" class="function-link"><span class="function-syntax">LanguageManager::claim_folder_as_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Q</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">C</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">C</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><a href="2-nst.html#SP7" class="function-link"><span class="function-syntax">Nests::add_search_result</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">search_results</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP8" class="function-link"><span class="function-syntax">Nests::add_search_result</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">search_results</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -156,7 +156,7 @@ requirements.
|
|||
<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">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">entry</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="4-pm.html#SP4" class="function-link"><span class="function-syntax">PipelineManager::claim_file_as_copy</span></a><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="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">C</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">C</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><a href="2-nst.html#SP7" class="function-link"><span class="function-syntax">Nests::add_search_result</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">search_results</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP8" class="function-link"><span class="function-syntax">Nests::add_search_result</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">search_results</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -154,7 +154,7 @@ requirements.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Q</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">entry</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="4-tm.html#SP4" class="function-link"><span class="function-syntax">TemplateManager::claim_folder_as_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Q</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">C</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">C</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><a href="2-nst.html#SP7" class="function-link"><span class="function-syntax">Nests::add_search_result</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">search_results</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP8" class="function-link"><span class="function-syntax">Nests::add_search_result</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">search_results</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -376,7 +376,7 @@ a kit, going only on a name such as <span class="extract"><span class="extract-s
|
|||
<span class="reserved-syntax">inform_kit</span><span class="plain-syntax"> *</span><span class="function-syntax">Kits::find_by_name</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">Kits::find_by_name</span></span>:<br/>Project Services - <a href="5-ps2.html#SP20">§20</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nest_list</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>
|
||||
<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="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><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">kit_genre</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</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">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#SP9" 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><span class="identifier-syntax">nest_list</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#SP10" 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><span class="identifier-syntax">nest_list</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</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="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-km.html#SP3" class="function-link"><span class="function-syntax">KitManager::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -281,7 +281,7 @@ include the Materials folder for any relevant project.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="string-syntax">"%S Language"</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">extension_req</span><span class="plain-syntax"> =</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">extension_bundle_genre</span><span class="plain-syntax">, </span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="identifier-syntax">author</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">extension_R</span><span class="plain-syntax"> = </span><a href="2-nst.html#SP9" class="function-link"><span class="function-syntax">Nests::search_for_best</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">extension_req</span><span class="plain-syntax">, </span><span class="identifier-syntax">search</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">extension_R</span><span class="plain-syntax"> = </span><a href="2-nst.html#SP10" class="function-link"><span class="function-syntax">Nests::search_for_best</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">extension_req</span><span class="plain-syntax">, </span><span class="identifier-syntax">search</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">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">extension_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="5-es.html#SP4" class="function-link"><span class="function-syntax">Extensions::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">extension_R</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>
|
||||
|
@ -291,7 +291,7 @@ include the Materials folder for any relevant project.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_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">longer</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>
|
||||
<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">language_genre</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</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">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#SP9" 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><span class="identifier-syntax">longer</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#SP10" 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><span class="identifier-syntax">longer</span><span 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_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><a href="4-lm.html#SP3" class="function-link"><span class="function-syntax">LanguageManager::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="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">belongs_to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">E</span><span class="plain-syntax">;</span>
|
||||
|
@ -302,7 +302,7 @@ include the Materials folder for any relevant project.
|
|||
<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>
|
||||
<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">language_genre</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</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">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#SP9" 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><span class="identifier-syntax">search</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#SP10" 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><span class="identifier-syntax">search</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Regexp::dispose_of</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span 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="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-lm.html#SP3" class="function-link"><span class="function-syntax">LanguageManager::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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -317,7 +317,7 @@ so the function is now deprecated:
|
|||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Languages::find_by_native_cue</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cue</span><span class="plain-syntax">, </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">search</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SVEXPLAIN</span><span class="plain-syntax">(3, </span><span class="string-syntax">"(find language by native cue %S)\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">cue</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">results</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#SP8" class="function-link"><span class="function-syntax">Nests::search_for</span></a><span class="plain-syntax">(</span><a href="2-rqr.html#SP2" class="function-link"><span class="function-syntax">Requirements::anything_of_genre</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">language_genre</span><span class="plain-syntax">), </span><span class="identifier-syntax">search</span><span class="plain-syntax">, </span><span class="identifier-syntax">results</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP9" class="function-link"><span class="function-syntax">Nests::search_for</span></a><span class="plain-syntax">(</span><a href="2-rqr.html#SP2" class="function-link"><span class="function-syntax">Requirements::anything_of_genre</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">language_genre</span><span class="plain-syntax">), </span><span class="identifier-syntax">search</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_search_result</span><span class="plain-syntax"> *</span><span class="identifier-syntax">search_result</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">search_result</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_search_result</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">inform_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><a href="4-lm.html#SP3" class="function-link"><span class="function-syntax">LanguageManager::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">search_result</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -340,7 +340,7 @@ Sausages by Mr Punch, and loaded it, but then read the sentence
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax"> *</span><span class="identifier-syntax">search_result</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP9" class="function-link"><span class="function-syntax">Nests::search_for_best</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">req</span><span class="plain-syntax">, </span><a href="5-ps2.html#SP7" class="function-link"><span class="function-syntax">Projects::nest_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">for_project</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP10" 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#SP7" class="function-link"><span class="function-syntax">Projects::nest_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">for_project</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">search_result</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><a href="5-es.html#SP4" class="function-link"><span class="function-syntax">Extensions::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">search_result</span><span class="plain-syntax">-></span><span class="element-syntax">copy</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-es.html#SP17" class="function-link"><span class="function-syntax">Extensions::set_inclusion_sentence</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">, </span><span class="identifier-syntax">at</span><span class="plain-syntax">);</span>
|
||||
|
@ -388,7 +388,7 @@ report this problem at the inclusion line.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req2</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">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="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#SP8" class="function-link"><span class="function-syntax">Nests::search_for</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">req2</span><span class="plain-syntax">, </span><a href="5-ps2.html#SP7" class="function-link"><span class="function-syntax">Projects::nest_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">for_project</span><span class="plain-syntax">), </span><span class="identifier-syntax">L</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP9" class="function-link"><span class="function-syntax">Nests::search_for</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">req2</span><span class="plain-syntax">, </span><a href="5-ps2.html#SP7" class="function-link"><span class="function-syntax">Projects::nest_list</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">for_project</span><span class="plain-syntax">), </span><span class="identifier-syntax">L</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">LinkedLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</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><a href="2-ce.html#SP2" class="function-link"><span class="function-syntax">CopyErrors::new</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SYNTAX_CE</span><span class="plain-syntax">, </span><span class="constant-syntax">BogusExtension_SYNERROR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ce.html#SP3" class="function-link"><span class="function-syntax">CopyErrors::supply_node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -134,7 +134,7 @@ is created. (These are called ECDs below.)
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure extension_census_datum is accessed in 6/hdn, 6/inc, 7/dct, 7/ip, 7/ip2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>An ECD is actually a wrapper for an <a href="5-es.html#SP1" class="internal">inform_extension</a> object in disguise,
|
||||
since the <a href="2-nst.html#SP6" class="internal">inbuild_search_result</a> found that.
|
||||
since the <a href="2-nst.html#SP7" class="internal">inbuild_search_result</a> found that.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -204,14 +204,14 @@ handed to <span class="extract"><span class="extract-syntax">qsort</span></span>
|
|||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Performing the census. </b>For some reason a census often makes a good story (cf. Luke 2:1-5), but here
|
||||
there's disappointingly little to tell, because the work is all done by a
|
||||
single call to <a href="2-nst.html#SP8" class="internal">Nests::search_for</a>.
|
||||
single call to <a href="2-nst.html#SP9" class="internal">Nests::search_for</a>.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">extension_census</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionCensus::perform</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">ExtensionCensus::perform</span></span>:<br/>The Mini-Website - <a href="7-tm.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">extension_census</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="7-cns.html#SP2" class="function-link"><span class="function-syntax">ExtensionCensus::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">proj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax"> = </span><a href="2-rqr.html#SP2" class="function-link"><span class="function-syntax">Requirements::anything_of_genre</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">extension_genre</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP8" class="function-link"><span class="function-syntax">Nests::search_for</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">req</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">search_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">raw_data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP9" class="function-link"><span class="function-syntax">Nests::search_for</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">req</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">search_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">raw_data</span><span class="plain-syntax">);</span>
|
||||
|
||||
<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>
|
||||
|
|
|
@ -329,7 +329,7 @@ days when overlong records were truncated.
|
|||
<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><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">extension_genre</span><span class="plain-syntax">, </span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="identifier-syntax">author</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><a href="2-nst.html#SP9" 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="1-ic.html#SP16" class="function-link"><span class="function-syntax">Supervisor::shared_nest_list</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP10" 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="1-ic.html#SP16" class="function-link"><span class="function-syntax">Supervisor::shared_nest_list</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">R</span><span class="plain-syntax">) </span><a href="7-dct.html#SP4" class="function-link"><span class="function-syntax">ExtensionDictionary::new_ede</span></a><span class="plain-syntax">(</span><a href="5-es.html#SP4" class="function-link"><span class="function-syntax">Extensions::from_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">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="identifier-syntax">category</span><span class="plain-syntax">, </span><span class="identifier-syntax">author</span><span class="plain-syntax">, </span><span class="identifier-syntax">title</span><span class="plain-syntax">, </span><span class="identifier-syntax">headword</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
|
|
|
@ -324,7 +324,7 @@ produces a second report.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax"> = </span><a href="2-rqr.html#SP2" class="function-link"><span class="function-syntax">Requirements::anything_of_genre</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">extension_bundle_genre</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">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><a href="5-ps2.html#SP6" class="function-link"><span class="function-syntax">Projects::materials_nest</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">project</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>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP8" 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>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP9" class="function-link"><span class="function-syntax">Nests::search_for</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">req</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="7-tr.html#SP2_4">§2.4</a>, <a href="7-tr.html#SP2_5">§2.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_5_2" class="paragraph-anchor"></a><b>§2.5.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">List the extensions currently installed in the project</span><span class="named-paragraph-number">2.5.2</span></span><span class="comment-syntax"> =</span>
|
||||
|
|
|
@ -185,7 +185,7 @@ run would also be set. This would become whose genre is <span class="extract"><s
|
|||
These are not explicitly named on the command line: instead, they are found by
|
||||
searching through the nests. <a href="index.html" class="internal">supervisor</a> does this by creating an
|
||||
<a href="2-rqr.html#SP1" class="internal">inbuild_requirement</a> object to specify what it wants, and then calling its
|
||||
search engine <a href="2-nst.html#SP8" class="internal">Nests::search_for</a>. This builds a list of <a href="2-nst.html#SP6" class="internal">inbuild_search_result</a>
|
||||
search engine <a href="2-nst.html#SP9" class="internal">Nests::search_for</a>. This builds a list of <a href="2-nst.html#SP7" class="internal">inbuild_search_result</a>
|
||||
objects, each pointing to a new copy which matches the requirement given.
|
||||
</p>
|
||||
|
||||
|
@ -202,9 +202,9 @@ which matches any extension by Emily Short.
|
|||
<a href="#fnref:4" title="return to text"> ↩</a></p></li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>Although such searches can be used with vague requirements to scan for,
|
||||
say, everything with a given genre, they can also be used to seek specific
|
||||
pieces of software which we will need. <a href="2-nst.html#SP9" class="internal">Nests::search_for_best</a> is a version
|
||||
pieces of software which we will need. <a href="2-nst.html#SP10" class="internal">Nests::search_for_best</a> is a version
|
||||
of the search engine which returns a single result (or none): the best one.
|
||||
Best is defined by <a href="2-nst.html#SP10" class="internal">Nests::better_result</a> and makes careful use of both
|
||||
Best is defined by <a href="2-nst.html#SP11" class="internal">Nests::better_result</a> and makes careful use of both
|
||||
semantic versioning and the user's intentions to ensure a happy outcome.
|
||||
For example, if an Inform project says
|
||||
</p>
|
||||
|
@ -213,7 +213,7 @@ For example, if an Inform project says
|
|||
<p>Include Upturned Faces by Raphael.</p>
|
||||
</blockquote>
|
||||
|
||||
<p class="commentary">then <a href="2-nst.html#SP9" class="internal">Nests::search_for_best</a> will be used to seek which copy of this
|
||||
<p class="commentary">then <a href="2-nst.html#SP10" class="internal">Nests::search_for_best</a> will be used to seek which copy of this
|
||||
extension to use.
|
||||
</p>
|
||||
|
||||
|
|
|
@ -48,6 +48,7 @@ for translating Inform source text to Inter:
|
|||
-source X use file X as the Inform source text
|
||||
|
||||
for locating resources in the file system:
|
||||
-deprecated-external X same as -external X, but issues warnings if the nest is actually used
|
||||
-external X use X as the user's home for installed material such as extensions
|
||||
-internal X use X as the location of built-in material such as the Standard Rules
|
||||
-nest X add the nest at pathname X to the search list
|
||||
|
|
|
@ -172,6 +172,7 @@ better way to choose a virtual machine to compile to.
|
|||
@e NEST_CLSW
|
||||
@e INTERNAL_CLSW
|
||||
@e EXTERNAL_CLSW
|
||||
@e DEPRECATED_EXTERNAL_CLSW
|
||||
@e TRANSIENT_CLSW
|
||||
|
||||
@<Declare resource-related options@> =
|
||||
|
@ -182,6 +183,8 @@ better way to choose a virtual machine to compile to.
|
|||
L"use X as the location of built-in material such as the Standard Rules");
|
||||
CommandLine::declare_switch(EXTERNAL_CLSW, L"external", 2,
|
||||
L"use X as the user's home for installed material such as extensions");
|
||||
CommandLine::declare_switch(DEPRECATED_EXTERNAL_CLSW, L"deprecated-external", 2,
|
||||
L"same as -external X, but issues warnings if the nest is actually used");
|
||||
CommandLine::declare_switch(TRANSIENT_CLSW, L"transient", 2,
|
||||
L"use X for transient data such as the extensions census");
|
||||
CommandLine::end_group();
|
||||
|
@ -266,6 +269,9 @@ void Supervisor::option(int id, int val, text_stream *arg, void *state) {
|
|||
Supervisor::add_nest(Pathnames::from_text(arg), INTERNAL_NEST_TAG); break;
|
||||
case EXTERNAL_CLSW:
|
||||
Supervisor::add_nest(Pathnames::from_text(arg), EXTERNAL_NEST_TAG); break;
|
||||
case DEPRECATED_EXTERNAL_CLSW:
|
||||
Nests::deprecate(Supervisor::add_nest(Pathnames::from_text(arg),
|
||||
EXTERNAL_NEST_TAG)); break;
|
||||
case TRANSIENT_CLSW:
|
||||
shared_transient_resources = Pathnames::from_text(arg); break;
|
||||
case BASIC_CLSW: Projects::enter_forcible_basic_mode(); break;
|
||||
|
|
|
@ -78,6 +78,11 @@ void Copies::set_metadata(inbuild_copy *C, general_pointer ref) {
|
|||
C->metadata = ref;
|
||||
}
|
||||
|
||||
inbuild_nest *Copies::origin(inbuild_copy *C) {
|
||||
if (C == NULL) return NULL;
|
||||
return C->nest_of_origin;
|
||||
}
|
||||
|
||||
@h List of errors.
|
||||
When copies are found to be malformed, error messages are attached to them
|
||||
for later reporting. These are stored in a list.
|
||||
|
|
|
@ -12,6 +12,7 @@ typedef struct inbuild_nest {
|
|||
struct pathname *location;
|
||||
int read_only; /* files cannot be written into this nest */
|
||||
int tag_value; /* used to indicate whether internal, external, and such */
|
||||
int deprecated; /* issue warnings if resources from here are actually used */
|
||||
CLASS_DEFINITION
|
||||
} inbuild_nest;
|
||||
|
||||
|
@ -21,6 +22,7 @@ inbuild_nest *Nests::new(pathname *P) {
|
|||
N->location = P;
|
||||
N->read_only = FALSE;
|
||||
N->tag_value = -1;
|
||||
N->deprecated = FALSE;
|
||||
return N;
|
||||
}
|
||||
|
||||
|
@ -59,7 +61,10 @@ text_stream *Nests::tag_name(int t) {
|
|||
return I"<unknown nest tag>";
|
||||
}
|
||||
|
||||
@ =
|
||||
@ A nest is read-only if nothing in it should be updated or added to. You
|
||||
can't install to a read-only nest.
|
||||
|
||||
=
|
||||
void Nests::protect(inbuild_nest *N) {
|
||||
N->read_only = TRUE;
|
||||
}
|
||||
|
@ -69,6 +74,18 @@ int Nests::is_protected(inbuild_nest *N) {
|
|||
return N->read_only;
|
||||
}
|
||||
|
||||
@ A nest is deprecated if its resources can be used, but ideally shouldn't be.
|
||||
|
||||
=
|
||||
void Nests::deprecate(inbuild_nest *N) {
|
||||
N->deprecated = TRUE;
|
||||
}
|
||||
|
||||
int Nests::is_deprecated(inbuild_nest *N) {
|
||||
if (N == NULL) return FALSE;
|
||||
return N->deprecated;
|
||||
}
|
||||
|
||||
@ =
|
||||
pathname *Nests::get_location(inbuild_nest *N) {
|
||||
if (N == NULL) return NULL;
|
||||
|
|
|
@ -218,18 +218,9 @@ void Graphs::show_needs_r(OUTPUT_STREAM, build_vertex *V,
|
|||
inbuild_copy *C = V->as_copy;
|
||||
if (C->last_scanned != scan_count) {
|
||||
C->last_scanned = scan_count;
|
||||
/* if (paths) {
|
||||
if (C->location_if_path) WRITE("%p", C->location_if_path);
|
||||
else if (C->location_if_file) WRITE("%f", C->location_if_file);
|
||||
else WRITE("?unlocated");
|
||||
WRITE(" (%S)", C->edition->work->genre->genre_name);
|
||||
} else {
|
||||
*/
|
||||
for (int i=0; i<depth; i++) WRITE(" ");
|
||||
WRITE("%S: ", C->edition->work->genre->genre_name);
|
||||
Copies::write_copy(OUT, C);
|
||||
/* }
|
||||
*/
|
||||
for (int i=0; i<depth; i++) WRITE(" ");
|
||||
WRITE("%S: ", C->edition->work->genre->genre_name);
|
||||
Copies::write_copy(OUT, C);
|
||||
WRITE("\n");
|
||||
if (paths) @<Add needs-locations@>;
|
||||
}
|
||||
|
|
|
@ -32,7 +32,10 @@ int Inform7Skill::inform7_via_shell(build_skill *skill, build_step *S,
|
|||
switch (Nests::get_tag(N)) {
|
||||
case MATERIALS_NEST_TAG: continue;
|
||||
case EXTENSION_NEST_TAG: continue;
|
||||
case EXTERNAL_NEST_TAG: WRITE_TO(command, "-external "); break;
|
||||
case EXTERNAL_NEST_TAG:
|
||||
if (Nests::is_deprecated(N)) WRITE_TO(command, "-deprecated-external ");
|
||||
else WRITE_TO(command, "-external ");
|
||||
break;
|
||||
case GENERIC_NEST_TAG: WRITE_TO(command, "-nest "); break;
|
||||
case INTERNAL_NEST_TAG: WRITE_TO(command, "-internal "); break;
|
||||
default: internal_error("mystery nest");
|
||||
|
|
|
@ -15,6 +15,7 @@ for translating Inform source text to Inter:
|
|||
-source X use file X as the Inform source text
|
||||
|
||||
for locating resources in the file system:
|
||||
-deprecated-external X same as -external X, but issues warnings if the nest is actually used
|
||||
-external X use X as the user's home for installed material such as extensions
|
||||
-internal X use X as the location of built-in material such as the Standard Rules
|
||||
-nest X add the nest at pathname X to the search list
|
||||
|
|
|
@ -1,29 +1,29 @@
|
|||
Total memory consumption was 139537K = 136 MB
|
||||
Total memory consumption was 137358K = 134 MB
|
||||
|
||||
---- was used for 2099123 objects, in 371744 frames in 0 x 800K = 0K = 0 MB:
|
||||
---- was used for 2099126 objects, in 371747 frames in 0 x 800K = 0K = 0 MB:
|
||||
|
||||
29.7% inter_tree_node_array 59 x 8192 = 483328 objects, 42534752 bytes
|
||||
18.9% text_stream_array 4803 x 100 = 480300 objects, 27050496 bytes
|
||||
17.5% linked_list 44689 objects, 25025840 bytes
|
||||
9.9% inter_symbol_array 134 x 1024 = 137216 objects, 14274752 bytes
|
||||
9.6% inter_error_stash_array 105 x 1024 = 107520 objects, 13765920 bytes
|
||||
7.4% parse_node 133417 objects, 10673360 bytes
|
||||
5.3% verb_conjugation 164 objects, 7610912 bytes
|
||||
3.9% parse_node_annotation_array 356 x 500 = 178000 objects, 5707392 bytes
|
||||
30.2% inter_tree_node_array 59 x 8192 = 483328 objects, 42534752 bytes
|
||||
19.2% text_stream_array 4803 x 100 = 480300 objects, 27050496 bytes
|
||||
17.7% linked_list 44690 objects, 25026400 bytes
|
||||
10.1% inter_symbol_array 134 x 1024 = 137216 objects, 14274752 bytes
|
||||
9.7% inter_error_stash_array 105 x 1024 = 107520 objects, 13765920 bytes
|
||||
7.5% parse_node 133417 objects, 10673360 bytes
|
||||
5.4% verb_conjugation 164 objects, 7610912 bytes
|
||||
4.0% parse_node_annotation_array 356 x 500 = 178000 objects, 5707392 bytes
|
||||
2.5% scan_directory 878 objects, 3624384 bytes
|
||||
2.4% pcalc_prop_array 26 x 1000 = 26000 objects, 3536832 bytes
|
||||
2.5% pcalc_prop_array 26 x 1000 = 26000 objects, 3536832 bytes
|
||||
2.2% inter_name_array 67 x 1000 = 67000 objects, 3218144 bytes
|
||||
1.9% kind_array 68 x 1000 = 68000 objects, 2722176 bytes
|
||||
1.5% inter_schema_token 14157 objects, 2151864 bytes
|
||||
1.4% inter_name_generator_array 51 x 1000 = 51000 objects, 2041632 bytes
|
||||
1.3% package_request 21234 objects, 1868592 bytes
|
||||
1.2% vocabulary_entry_array 164 x 100 = 16400 objects, 1842048 bytes
|
||||
1.0% dict_entry_array 479 x 100 = 47900 objects, 1548128 bytes
|
||||
1.3% vocabulary_entry_array 164 x 100 = 16400 objects, 1842048 bytes
|
||||
1.1% dict_entry_array 479 x 100 = 47900 objects, 1548128 bytes
|
||||
1.0% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes
|
||||
1.0% inter_symbols_table 26690 objects, 1494640 bytes
|
||||
1.0% i6_schema_array 24 x 100 = 2400 objects, 1440768 bytes
|
||||
0.8% inter_package 26690 objects, 1281120 bytes
|
||||
0.7% map_data 672 objects, 1128960 bytes
|
||||
0.9% inter_package 26690 objects, 1281120 bytes
|
||||
0.8% map_data 672 objects, 1128960 bytes
|
||||
0.7% id_body 955 objects, 1092520 bytes
|
||||
0.7% adjective_meaning 208 objects, 1030016 bytes
|
||||
0.7% inter_schema_node 9050 objects, 1013600 bytes
|
||||
|
@ -47,7 +47,7 @@ Total memory consumption was 139537K = 136 MB
|
|||
0.1% hierarchy_location 1179 objects, 169776 bytes
|
||||
0.1% linguistic_stock_item 3331 objects, 159888 bytes
|
||||
0.1% rule_family_data 403 objects, 148304 bytes
|
||||
---- nonterminal 774 objects, 142416 bytes
|
||||
0.1% nonterminal 774 objects, 142416 bytes
|
||||
---- nascent_array 2126 objects, 136064 bytes
|
||||
---- inference 1703 objects, 122616 bytes
|
||||
---- pcalc_term_array 3 x 1000 = 3000 objects, 120096 bytes
|
||||
|
@ -119,7 +119,7 @@ Total memory consumption was 139537K = 136 MB
|
|||
---- web_bibliographic_datum 174 objects, 11136 bytes
|
||||
---- inter_construct 31 objects, 10664 bytes
|
||||
---- heading_tree 33 objects, 10296 bytes
|
||||
---- stopwatch_timer 120 objects, 9600 bytes
|
||||
---- stopwatch_timer 121 objects, 9680 bytes
|
||||
---- inbuild_work 133 objects, 8512 bytes
|
||||
---- inbuild_copy 64 objects, 7680 bytes
|
||||
---- equation_node 68 objects, 7616 bytes
|
||||
|
@ -139,7 +139,7 @@ Total memory consumption was 139537K = 136 MB
|
|||
---- activity 35 objects, 4760 bytes
|
||||
---- value_property_data 84 objects, 4704 bytes
|
||||
---- parsing_pp_data 96 objects, 4608 bytes
|
||||
---- command_line_switch 54 objects, 4320 bytes
|
||||
---- command_line_switch 55 objects, 4400 bytes
|
||||
---- use_option 31 objects, 4216 bytes
|
||||
---- semver_range 39 objects, 4056 bytes
|
||||
---- either_or_property_data 62 objects, 3968 bytes
|
||||
|
@ -249,25 +249,25 @@ Total memory consumption was 139537K = 136 MB
|
|||
---- loop_over_scope 1 object, 40 bytes
|
||||
---- I6_generation_data 1 object, 40 bytes
|
||||
|
||||
99.9% was used for memory not allocated for objects:
|
||||
100.0% was used for memory not allocated for objects:
|
||||
|
||||
62.5% text stream storage 89311696 bytes in 503841 claims
|
||||
61.9% text stream storage 87080964 bytes in 503519 claims
|
||||
3.7% dictionary storage 5336064 bytes in 7659 claims
|
||||
---- sorting 2752 bytes in 394 claims
|
||||
5.0% source text 7200000 bytes in 3 claims
|
||||
7.5% source text details 10800000 bytes in 2 claims
|
||||
---- sorting 2760 bytes in 394 claims
|
||||
5.1% source text 7200000 bytes in 3 claims
|
||||
7.6% source text details 10800000 bytes in 2 claims
|
||||
0.1% documentation fragments 262144 bytes in 1 claim
|
||||
---- linguistic stock array 81920 bytes in 2 claims
|
||||
---- small word set array 105600 bytes in 22 claims
|
||||
3.1% inter symbols storage 4568528 bytes in 28056 claims
|
||||
11.7% inter bytecode storage 16775500 bytes in 14 claims
|
||||
4.3% inter links storage 6222976 bytes in 11 claims
|
||||
3.2% inter symbols storage 4568528 bytes in 28056 claims
|
||||
11.9% inter bytecode storage 16775500 bytes in 14 claims
|
||||
4.4% inter links storage 6222976 bytes in 11 claims
|
||||
0.1% inter tree location list storage 191232 bytes in 32 claims
|
||||
1.1% instance-of-kind counting 1705636 bytes in 1 claim
|
||||
1.2% instance-of-kind counting 1705636 bytes in 1 claim
|
||||
---- compilation workspace for objects 21896 bytes in 25 claims
|
||||
---- lists for type-checking invocations 16000 bytes in 1 claim
|
||||
---- code generation workspace for objects 3480 bytes in 19 claims
|
||||
0.1% emitter array storage 280672 bytes in 2002 claims
|
||||
|
||||
-134.-3% was overhead - -191955000 bytes = -187456K = -183 MB
|
||||
-136.-4% was overhead - -191955720 bytes = -187456K = -183 MB
|
||||
|
||||
|
|
|
@ -1,32 +1,32 @@
|
|||
100.0% in inform7 run
|
||||
69.8% in compilation to Inter
|
||||
49.4% in //Sequence::undertake_queued_tasks//
|
||||
4.6% in //MajorNodes::pre_pass//
|
||||
69.7% in compilation to Inter
|
||||
49.2% in //Sequence::undertake_queued_tasks//
|
||||
4.9% in //MajorNodes::pre_pass//
|
||||
3.3% in //MajorNodes::pass_1//
|
||||
1.9% in //RTPhrasebook::compile_entries//
|
||||
1.7% in //ImperativeDefinitions::assess_all//
|
||||
1.3% in //RTKindConstructors::compile//
|
||||
1.3% in //RTPhrasebook::compile_entries//
|
||||
0.9% in //Sequence::lint_inter//
|
||||
0.5% in //ImperativeDefinitions::compile_first_block//
|
||||
0.7% in //ImperativeDefinitions::compile_first_block//
|
||||
0.5% in //MajorNodes::pass_2//
|
||||
0.5% in //World::stage_V//
|
||||
0.3% in //InferenceSubjects::emit_all//
|
||||
0.3% in //MajorNodes::pass_2//
|
||||
0.3% in //Sequence::undertake_queued_tasks//
|
||||
0.3% in //Sequence::undertake_queued_tasks//
|
||||
0.1% in //CompletionModule::compile//
|
||||
0.1% in //RTKindConstructors::compile_permissions//
|
||||
0.1% in //Task::make_built_in_kind_constructors//
|
||||
3.1% not specifically accounted for
|
||||
26.8% in running Inter pipeline
|
||||
11.0% in step 14/15: generate inform6 -> auto.inf
|
||||
5.6% in step 5/15: load-binary-kits
|
||||
5.2% in step 6/15: make-synoptic-module
|
||||
2.8% not specifically accounted for
|
||||
26.6% in running Inter pipeline
|
||||
10.9% in step 14/15: generate inform6 -> auto.inf
|
||||
5.9% in step 5/15: load-binary-kits
|
||||
5.1% in step 6/15: make-synoptic-module
|
||||
1.7% in step 9/15: make-identifiers-unique
|
||||
0.3% in step 12/15: eliminate-redundant-operations
|
||||
0.3% in step 4/15: compile-splats
|
||||
0.3% in step 7/15: shorten-wiring
|
||||
0.3% in step 8/15: detect-indirect-calls
|
||||
0.1% in step 11/15: eliminate-redundant-labels
|
||||
1.4% not specifically accounted for
|
||||
1.0% not specifically accounted for
|
||||
2.9% in supervisor
|
||||
0.4% not specifically accounted for
|
||||
0.6% not specifically accounted for
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "BasicInformExtrasKit",
|
||||
"version": "10.2.0-beta+6W56"
|
||||
"version": "10.2.0-beta+6W57"
|
||||
},
|
||||
"kit-details": {
|
||||
"has-priority": 1
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "BasicInformKit",
|
||||
"version": "10.2.0-beta+6W56"
|
||||
"version": "10.2.0-beta+6W57"
|
||||
},
|
||||
"needs": [ {
|
||||
"unless": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "CommandParserKit",
|
||||
"version": "10.2.0-beta+6W56"
|
||||
"version": "10.2.0-beta+6W57"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "EnglishLanguageKit",
|
||||
"version": "10.2.0-beta+6W56"
|
||||
"version": "10.2.0-beta+6W57"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "WorldModelKit",
|
||||
"version": "10.2.0-beta+6W56"
|
||||
"version": "10.2.0-beta+6W57"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -117,6 +117,7 @@ will divide according to these units.
|
|||
BENCH(NameResolution::make_the_tree)
|
||||
BENCH(Task::write_XML_headings_file)
|
||||
BENCH(CompilationUnits::determine)
|
||||
BENCH(Task::warn_about_deprecated_nests)
|
||||
|
||||
@ Most of the conceptual infrastructure in Inform is created by Inform source
|
||||
text in the Basic Inform or Standard Rules extensions, but not basic kinds of
|
||||
|
|
|
@ -199,6 +199,32 @@ void Task::verify(void) {
|
|||
VerifyTree::verify_structure(Task::syntax_tree());
|
||||
}
|
||||
|
||||
@ This is part of a scheme to wean authors off of use of an external extensions
|
||||
area.
|
||||
|
||||
=
|
||||
void Task::warn_about_deprecated_nests(void) {
|
||||
inform_project *project = Task::project();
|
||||
inform_extension *ext;
|
||||
LOOP_OVER_LINKED_LIST(ext, inform_extension, project->extensions_included) {
|
||||
inbuild_nest *N = Copies::origin(ext->as_copy);
|
||||
if (Nests::is_deprecated(N)) {
|
||||
TEMPORARY_TEXT(ename)
|
||||
Copies::write_copy(ename, ext->as_copy);
|
||||
Problems::quote_stream(1, ename);
|
||||
StandardProblems::handmade_warning(Task::syntax_tree(), _p_(Untestable));
|
||||
Problems::issue_warning_segment(
|
||||
"The extension '%1' was included from an external location, that is, "
|
||||
"from outside of this project's materials folder. That's allowed, and "
|
||||
"is how most authors managed things until 2023, but we now recommend "
|
||||
"moving all extensions needed for a project (other than those built "
|
||||
"into Inform itself) into the project's materials folder. "
|
||||
"If you do, this warning will go away.");
|
||||
Problems::issue_warning_end();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ Resources in a Blorb file have unique ID numbers which are positive integers,
|
||||
but these are not required to start from 1, nor to be contiguous. For Inform,
|
||||
ID number 1 is reserved for the cover image (whether or not any cover image
|
||||
|
|
|
@ -51,7 +51,7 @@ void UsingProblems::final_report(int disaster_struck, int problems_count) {
|
|||
if (problems_file_active) ProblemBuffer::redirect_problem_stream(NULL);
|
||||
} else {
|
||||
int rooms = 0, things = 0;
|
||||
if (problems_file_active)
|
||||
if ((problems_file_active) && (Problems::warnings_occurred() == FALSE))
|
||||
UsingProblems::html_outcome_image(problems_file, "ni_succeeded", "Succeeded");
|
||||
#ifdef IF_MODULE
|
||||
Spatial::get_world_size(&rooms, &things);
|
||||
|
@ -125,6 +125,15 @@ command line -- deserves the truth.
|
|||
ProblemBuffer::redirect_problem_stream(problems_file);
|
||||
text_stream *OUT = problems_file;
|
||||
HTML_OPEN("p");
|
||||
|
||||
if (Problems::warnings_occurred()) {
|
||||
Problems::issue_problem_begin(Task::syntax_tree(), "**");
|
||||
Problems::issue_problem_segment(
|
||||
"Although one or more warnings were issued, there were no problems "
|
||||
"serious enough to stop translation from going ahead.");
|
||||
Problems::issue_problem_end();
|
||||
}
|
||||
|
||||
Problems::issue_problem_begin(Task::syntax_tree(), "**");
|
||||
Problems::issue_problem_segment(
|
||||
"The %5-word source text has successfully been translated "
|
||||
|
@ -132,6 +141,7 @@ command line -- deserves the truth.
|
|||
"brought up to date.");
|
||||
Problems::issue_problem_end();
|
||||
UsingProblems::outcome_image_tail(problems_file);
|
||||
HTML_CLOSE("p");
|
||||
|
||||
if (telemetry_recording) {
|
||||
Telemetry::ensure_telemetry_file();
|
||||
|
@ -183,7 +193,7 @@ void UsingProblems::html_outcome_failed(OUTPUT_STREAM) {
|
|||
if (StandardProblems::internal_errors_have_occurred())
|
||||
UsingProblems::html_outcome_image(problems_file, "ni_failed_badly", "Failed");
|
||||
else
|
||||
UsingProblems::html_outcome_image(problems_file, "ni_failed", "Failed");
|
||||
UsingProblems::html_outcome_image(problems_file, "ni_failed", "Problems or Warnings");
|
||||
}
|
||||
|
||||
void UsingProblems::html_outcome_image(OUTPUT_STREAM, char *image, char *verdict) {
|
||||
|
|
52
resources/Documentation/Examples/_Results_Ideal/Clark2.txt
Normal file
52
resources/Documentation/Examples/_Results_Ideal/Clark2.txt
Normal file
|
@ -0,0 +1,52 @@
|
|||
Daily Planet Newsroom
|
||||
The Man of Steel Excuses Himself
|
||||
An Interactive Fiction
|
||||
Release 1 / Serial number 160428 / Inform 7 v10.2.0 / D
|
||||
|
||||
Daily Planet Newsroom
|
||||
Clark is here, frowning as he revises his latest article.
|
||||
|
||||
> > Perry White's Office
|
||||
(Testing.)
|
||||
|
||||
>[1] west
|
||||
|
||||
Perry White's Office
|
||||
You can see a desk (on which is a lead-lined box (in which is a green kryptonite crystal)) and a poster of Elvis here.
|
||||
|
||||
>[2] get box
|
||||
Taken.
|
||||
|
||||
>[3] east
|
||||
|
||||
Daily Planet Newsroom
|
||||
Clark looks a bit ill.
|
||||
|
||||
Muttering about thinking he smells smoke, Clark heads east.
|
||||
|
||||
>[4] close box
|
||||
You close the lead-lined box.
|
||||
|
||||
>[5] east
|
||||
|
||||
Supply Closet
|
||||
Clark is here, frowning as he revises his latest article.
|
||||
|
||||
>[6] west
|
||||
|
||||
Daily Planet Newsroom
|
||||
|
||||
>[7] north
|
||||
|
||||
Elevator Bank
|
||||
|
||||
>[8] south
|
||||
|
||||
Daily Planet Newsroom
|
||||
|
||||
>[9] west
|
||||
|
||||
Perry White's Office
|
||||
You can see a desk and a poster of Elvis here.
|
||||
|
||||
> >
|
|
@ -134,6 +134,7 @@ int problem_count_at_last_in = 1;
|
|||
text_stream problems_file_struct; /* The actual report of Problems file */
|
||||
text_stream *problems_file = &problems_file_struct; /* As a |text_stream *| */
|
||||
int problems_file_active = FALSE; /* Currently in use */
|
||||
int currently_issuing_a_warning = FALSE;
|
||||
|
||||
#ifndef PROBLEMS_HTML_EMITTER
|
||||
#define PROBLEMS_HTML_EMITTER PUT_TO
|
||||
|
@ -194,7 +195,8 @@ indentation. And similarly for |>++>|, used to mark continuations.
|
|||
HTML_TAG("hr");
|
||||
}
|
||||
HTML_OPEN_WITH("p", "class=\"hang\"");
|
||||
WRITE("<b>Problem.</b> ");
|
||||
if (currently_issuing_a_warning) WRITE("<b>Warning.</b> ");
|
||||
else WRITE("<b>Problem.</b> ");
|
||||
i+=3; continue;
|
||||
}
|
||||
if (Str::includes_wide_string_at(PBUFF, L">++>", i)) {
|
||||
|
|
|
@ -310,6 +310,17 @@ int Problems::explained_before(char *explanation) {
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
@h A note on warnings.
|
||||
Warnings are almost identically handled. Inform traditionally avoided warnings,
|
||||
but we're finally giving way on that.
|
||||
|
||||
=
|
||||
int warning_count = 0;
|
||||
|
||||
int Problems::warnings_occurred(void) {
|
||||
return (warning_count > 0)?TRUE:FALSE;
|
||||
}
|
||||
|
||||
@h How problems begin and end.
|
||||
During the construction of a problem message, we will be running through a
|
||||
standard text, and at any point might be considering matter which should
|
||||
|
@ -322,6 +333,13 @@ to remember whether to use the short or long form.
|
|||
|
||||
=
|
||||
void Problems::issue_problem_begin(parse_node_tree *T, char *message) {
|
||||
Problems::issue_advisory_begin(T, message, TRUE);
|
||||
}
|
||||
void Problems::issue_warning_begin(parse_node_tree *T, char *message) {
|
||||
Problems::issue_advisory_begin(T, message, FALSE);
|
||||
}
|
||||
void Problems::issue_advisory_begin(parse_node_tree *T, char *message, int problematic) {
|
||||
currently_issuing_a_warning = (problematic)?FALSE:TRUE;
|
||||
ProblemBuffer::clear();
|
||||
if (strcmp(message, "*") == 0) {
|
||||
WRITE_TO(PBUFF, ">++>");
|
||||
|
@ -336,7 +354,7 @@ void Problems::issue_problem_begin(parse_node_tree *T, char *message) {
|
|||
this_is_a_subsequent_use_of_problem = FALSE;
|
||||
} else {
|
||||
Problems::show_problem_location(T);
|
||||
problem_count++;
|
||||
if (problematic) problem_count++; else warning_count++;
|
||||
WRITE_TO(PBUFF, ">--> ");
|
||||
this_is_a_subsequent_use_of_problem =
|
||||
Problems::explained_before(message);
|
||||
|
@ -351,6 +369,10 @@ void Problems::issue_problem_end(void) {
|
|||
ProblemBuffer::output_problem_buffer(1);
|
||||
Problems::problem_documentation_links(problems_file);
|
||||
if (crash_on_all_problems) ProblemSigils::force_crash();
|
||||
currently_issuing_a_warning = FALSE;
|
||||
}
|
||||
void Problems::issue_warning_end(void) {
|
||||
Problems::issue_problem_end();
|
||||
}
|
||||
|
||||
@ Documentation links:
|
||||
|
@ -403,6 +425,9 @@ void Problems::issue_problem_segment(char *message) {
|
|||
@<Act on the problem message text, since it is now contextually allowed@>;
|
||||
}
|
||||
}
|
||||
void Problems::issue_warning_segment(char *message) {
|
||||
Problems::issue_problem_segment(message);
|
||||
}
|
||||
|
||||
@ Ordinarily we just append the new character, but we also act on the escapes
|
||||
|%P| and |%1| to |%9|. |%P| forces a paragraph break, or at any rate, it does
|
||||
|
|
|
@ -190,6 +190,10 @@ void StandardProblems::handmade_problem(parse_node_tree *T, SIGIL_ARGUMENTS) {
|
|||
ACT_ON_SIGIL
|
||||
Problems::issue_problem_begin(T, "");
|
||||
}
|
||||
void StandardProblems::handmade_warning(parse_node_tree *T, SIGIL_ARGUMENTS) {
|
||||
ACT_ON_SIGIL
|
||||
Problems::issue_warning_begin(T, "");
|
||||
}
|
||||
|
||||
@h Limit problems.
|
||||
Running out of memory, irretrievably: the politest kind of fatal error,
|
||||
|
|
Loading…
Reference in a new issue