1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-08 18:14:21 +03:00
inform7/docs/core-module/2-si.html
2019-04-22 15:42:10 +01:00

475 lines
56 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>2/sq</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body>
<!--Weave of '2/si' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">core</a></li><li><a href="index.html#2">Chapter 2: Bridge to Problems Module</a></li><li><b>Supplementary Issues</b></li></ul><p class="purpose">Some supplementary general sorts of problem message.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Contradictions</a></li><li><a href="#SP3">&#167;3. Table problems</a></li><li><a href="#SP4">&#167;4. Equation problems</a></li><li><a href="#SP5">&#167;5. Inline definition problems</a></li><li><a href="#SP6">&#167;6. Proposition type-checking problems</a></li><li><a href="#SP7">&#167;7. Instance problems</a></li><li><a href="#SP10">&#167;10. Property problems</a></li><li><a href="#SP11">&#167;11. Extension problems</a></li><li><a href="#SP12">&#167;12. Releasing problems</a></li><li><a href="#SP13">&#167;13. Cartographical problems</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Contradictions. </b>As soon as we combine information from two sentences, we are at risk of a
contradiction of some kind:
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::two_sentences_problem</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">other_sentence</span><span class="plain">,</span>
<span class="reserved">char</span><span class="plain"> *</span><span class="identifier">message</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">explanation</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_sentence</span><span class="plain"> == </span><span class="identifier">other_sentence</span><span class="plain">) {</span>
<span class="identifier">Problems::Issue::sentence_problem</span><span class="plain">(</span><span class="identifier">PASS_SIGIL</span><span class="plain">, </span><span class="identifier">message</span><span class="plain">, </span><span class="identifier">explanation</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
<span class="identifier">Problems::quote_source</span><span class="plain">(2, </span><span class="identifier">other_sentence</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(4, </span><span class="identifier">explanation</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
<span class="string">"You wrote %1, but in another sentence %2: %Sagain, %%%Lbut %%%3%|, %4"</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Problems::Issue::two_sentences_problem is used in 6/nv (<a href="6-nv.html#SP14_6">&#167;14.6</a>), 16/in (<a href="16-in.html#SP20_3_3">&#167;20.3.3</a>).</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b>Almost exactly the same thing, but happening at arbitrary positions in the
parse tree, and concerning an instance:
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::contradiction_problem</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">A</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">B</span><span class="plain">,</span>
<span class="reserved">instance</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">message</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">explanation</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">A</span><span class="plain">);</span>
<span class="identifier">Problems::quote_source</span><span class="plain">(2, </span><span class="identifier">B</span><span class="plain">);</span>
<span class="functiontext">Problems::quote_object</span><span class="plain">(3, </span><span class="identifier">I</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(4, </span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(5, </span><span class="identifier">explanation</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::eq</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">A</span><span class="plain">), </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">B</span><span class="plain">)) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"You wrote %1, but in another sentence %2: "</span><span class="plain">);</span>
<span class="reserved">else</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"You wrote %1: "</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"%Sagain, %%%3 %4%|, %5"</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::infs_contradiction_problem</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">A</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">B</span><span class="plain">,</span>
<span class="reserved">inference_subject</span><span class="plain"> *</span><span class="identifier">infs</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">message</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">explanation</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">A</span><span class="plain">);</span>
<span class="identifier">Problems::quote_source</span><span class="plain">(2, </span><span class="identifier">B</span><span class="plain">);</span>
<span class="functiontext">Problems::quote_subject</span><span class="plain">(3, </span><span class="identifier">infs</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(4, </span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(5, </span><span class="identifier">explanation</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::eq</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">A</span><span class="plain">), </span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">B</span><span class="plain">)) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"You wrote %1, but in another sentence %2: "</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"You wrote %1: "</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"%Sagain, %%%3 %4%|, %5"</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Problems::Issue::contradiction_problem appears nowhere else.</p>
<p class="endnote">The function Problems::Issue::infs_contradiction_problem is used in 6/rlt (<a href="6-rlt.html#SP28">&#167;28</a>), 15/ia (<a href="15-ia.html#SP1_1">&#167;1.1</a>), 16/cmw (<a href="16-cmw.html#SP1_2_2_1_1_1">&#167;1.2.2.1.1.1</a>).</p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. Table problems. </b>In principle we could treat these as sentence problems, but the "sentence"
for a table can be enormous: so we need something which can show which
table we are in, yet still only cite a small part of it &mdash;
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::table_problem</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="reserved">table</span><span class="plain"> *</span><span class="identifier">t</span><span class="plain">, </span><span class="reserved">table_column</span><span class="plain"> *</span><span class="identifier">tc</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">data</span><span class="plain">,</span>
<span class="reserved">char</span><span class="plain"> *</span><span class="identifier">message</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="identifier">current_sentence</span><span class="plain"> = </span><span class="identifier">t</span><span class="plain">-</span><span class="element">&gt;headline_fragment</span><span class="plain">;</span>
<span class="functiontext">Problems::quote_table</span><span class="plain">(1, </span><span class="identifier">t</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">tc</span><span class="plain">) </span><span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">Nouns::nominative</span><span class="plain">(</span><span class="identifier">tc</span><span class="plain">-</span><span class="element">&gt;name</span><span class="plain">));</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">data</span><span class="plain">) </span><span class="identifier">Problems::quote_source</span><span class="plain">(3, </span><span class="identifier">data</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">""</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Problems::Issue::table_problem is used in 19/tc (<a href="19-tc.html#SP6_1">&#167;6.1</a>, <a href="19-tc.html#SP9">&#167;9</a>, <a href="19-tc.html#SP11_1">&#167;11.1</a>, <a href="19-tc.html#SP11_2">&#167;11.2</a>, <a href="19-tc.html#SP11_3">&#167;11.3</a>, <a href="19-tc.html#SP14_1">&#167;14.1</a>, <a href="19-tc.html#SP14_2">&#167;14.2</a>, <a href="19-tc.html#SP15_1">&#167;15.1</a>, <a href="19-tc.html#SP15_2">&#167;15.2</a>, <a href="19-tc.html#SP15_3">&#167;15.3</a>, <a href="19-tc.html#SP15_4">&#167;15.4</a>, <a href="19-tc.html#SP15_5">&#167;15.5</a>, <a href="19-tc.html#SP15_6">&#167;15.6</a>, <a href="19-tc.html#SP16">&#167;16</a>), 19/tb (<a href="19-tb.html#SP20_9">&#167;20.9</a>, <a href="19-tb.html#SP20_9_1">&#167;20.9.1</a>, <a href="19-tb.html#SP20_9_2">&#167;20.9.2</a>, <a href="19-tb.html#SP24_4">&#167;24.4</a>, <a href="19-tb.html#SP24_5">&#167;24.5</a>, <a href="19-tb.html#SP24_6_1">&#167;24.6.1</a>, <a href="19-tb.html#SP25_2">&#167;25.2</a>, <a href="19-tb.html#SP26_2">&#167;26.2</a>, <a href="19-tb.html#SP26_3">&#167;26.3</a>), 19/tod (<a href="19-tod.html#SP6_3_1">&#167;6.3.1</a>, <a href="19-tod.html#SP6_3_2">&#167;6.3.2</a>, <a href="19-tod.html#SP6_3_4">&#167;6.3.4</a>, <a href="19-tod.html#SP7_1">&#167;7.1</a>).</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. Equation problems. </b>So this is where hopes are generically dashed about equations:
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::equation_problem</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="reserved">equation</span><span class="plain"> *</span><span class="identifier">eqn</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">text</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">eqn</span><span class="plain">-</span><span class="element">&gt;equation_text</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="identifier">p</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">""</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"In %1, you define an equation '%2': but "</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="identifier">text</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::equation_problem_S</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="reserved">equation</span><span class="plain"> *</span><span class="identifier">eqn</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">text</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">eqn</span><span class="plain">-</span><span class="element">&gt;equation_text</span><span class="plain">);</span>
<span class="identifier">Problems::quote_stream</span><span class="plain">(3, </span><span class="identifier">p</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">""</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"In %1, you define an equation '%2': but "</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="identifier">text</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::equation_symbol_problem</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="reserved">equation</span><span class="plain"> *</span><span class="identifier">eqn</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">text</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">W</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="identifier">text</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">""</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
<span class="string">"In %1, you define an equation which mentions the symbol '%2': but %3"</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Problems::Issue::equation_problem is used in 20/eq (<a href="20-eq.html#SP28">&#167;28</a>, <a href="20-eq.html#SP28_1_2">&#167;28.1.2</a>, <a href="20-eq.html#SP28_2">&#167;28.2</a>, <a href="20-eq.html#SP28_3">&#167;28.3</a>, <a href="20-eq.html#SP39">&#167;39</a>, <a href="20-eq.html#SP41_1">&#167;41.1</a>, <a href="20-eq.html#SP41_3">&#167;41.3</a>, <a href="20-eq.html#SP41_2_1">&#167;41.2.1</a>).</p>
<p class="endnote">The function Problems::Issue::equation_problem_S is used in 20/eq (<a href="20-eq.html#SP28_1_1">&#167;28.1.1</a>, <a href="20-eq.html#SP28_1_3">&#167;28.1.3</a>).</p>
<p class="endnote">The function Problems::Issue::equation_symbol_problem is used in 20/eq (<a href="20-eq.html#SP15">&#167;15</a>, <a href="20-eq.html#SP17_1">&#167;17.1</a>, <a href="20-eq.html#SP17_2">&#167;17.2</a>, <a href="20-eq.html#SP17_3">&#167;17.3</a>, <a href="20-eq.html#SP18_1">&#167;18.1</a>, <a href="20-eq.html#SP18_2">&#167;18.2</a>).</p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. Inline definition problems. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::inline_problem</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="reserved">phrase</span><span class="plain"> *</span><span class="identifier">ph</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="reserved">definition</span><span class="plain">,</span>
<span class="reserved">char</span><span class="plain"> *</span><span class="identifier">message</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
<span class="identifier">Problems::quote_stream</span><span class="plain">(2, </span><span class="reserved">definition</span><span class="plain">);</span>
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">XW</span><span class="plain"> = </span><span class="functiontext">Phrases::Usage::get_preamble_text</span><span class="plain">(&amp;(</span><span class="identifier">ph</span><span class="plain">-</span><span class="element">&gt;usage_data</span><span class="plain">));</span>
<span class="identifier">Problems::quote_wording_as_source</span><span class="plain">(3, </span><span class="identifier">XW</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">""</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
<span class="string">"You wrote %1, which I read as making use of the phrase %3. This in turn "</span>
<span class="string">"has what's called an 'inline' definition, written in a technical notation "</span>
<span class="string">"usually needed only by the Standard Rules or other low-level extensions. "</span>
<span class="string">"The definition here is '%2' but it seems to be broken. "</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Problems::Issue::inline_problem is used in 25/cii (<a href="25-cii.html#SP3_2_1_2">&#167;3.2.1.2</a>, <a href="25-cii.html#SP3_5_4_1">&#167;3.5.4.1</a>, <a href="25-cii.html#SP3_5_5">&#167;3.5.5</a>, <a href="25-cii.html#SP3_5_6">&#167;3.5.6</a>, <a href="25-cii.html#SP3_6_3">&#167;3.6.3</a>, <a href="25-cii.html#SP3_7">&#167;3.7</a>, <a href="25-cii.html#SP3_7_1">&#167;3.7.1</a>, <a href="25-cii.html#SP3_5_2_1">&#167;3.5.2.1</a>).</p>
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. Proposition type-checking problems. </b>Are mostly issued thus:
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::tcp_problem</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="reserved">tc_problem_kit</span><span class="plain"> *</span><span class="identifier">tck</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">prototype</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">tck</span><span class="plain">-</span><span class="element">&gt;issue_error</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
<span class="identifier">Problems::quote_wording</span><span class="plain">(2, </span><span class="identifier">tck</span><span class="plain">-</span><span class="element">&gt;ew_text</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="identifier">tck</span><span class="plain">-</span><span class="element">&gt;intention</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">""</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
<span class="string">"In the sentence %1, it looks as if you intend '%2' to %3, but "</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="identifier">prototype</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="identifier">tck</span><span class="plain">-</span><span class="element">&gt;flag_problem</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Problems::Issue::tcp_problem is used in 6/tur (<a href="6-tur.html#SP5">&#167;5</a>), 11/tcp (<a href="11-tcp.html#SP6_9">&#167;6.9</a>, <a href="11-tcp.html#SP6_10">&#167;6.10</a>, <a href="11-tcp.html#SP6_11">&#167;6.11</a>, <a href="11-tcp.html#SP10">&#167;10</a>, <a href="11-tcp.html#SP11">&#167;11</a>, <a href="11-tcp.html#SP11_3">&#167;11.3</a>, <a href="11-tcp.html#SP12">&#167;12</a>), 12/ter (<a href="12-ter.html#SP5">&#167;5</a>, <a href="12-ter.html#SP5_1">&#167;5.1</a>), 12/qr (<a href="12-qr.html#SP5">&#167;5</a>), 15/tpr (<a href="15-tpr.html#SP5">&#167;5</a>), 15/cr (<a href="15-cr.html#SP5">&#167;5</a>), 15/spr2 (<a href="15-spr2.html#SP9_1">&#167;9.1</a>, <a href="15-spr2.html#SP9_2">&#167;9.2</a>).</p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. Instance problems. </b>Instances can be created rather indirectly (for instance, in the course of
assemblies of other instances), and their properties are sometimes inferred
from information in sentences far distant, so we can't always locate
these problems at any particular sentence.
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::object_problem</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="reserved">instance</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">,</span>
<span class="reserved">char</span><span class="plain"> *</span><span class="identifier">message</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">explanation</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="functiontext">Problems::quote_object</span><span class="plain">(1, </span><span class="identifier">I</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(2, </span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="identifier">explanation</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"The %1 %2%|, %3"</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::object_problem_at_sentence</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="reserved">instance</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">,</span>
<span class="reserved">char</span><span class="plain"> *</span><span class="identifier">message</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">explanation</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(2, </span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="identifier">explanation</span><span class="plain">);</span>
<span class="functiontext">Problems::quote_object</span><span class="plain">(4, </span><span class="identifier">I</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"You wrote %1, but the %4 %2%|, %3"</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::subject_problem_at_sentence</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="reserved">inference_subject</span><span class="plain"> *</span><span class="identifier">infs</span><span class="plain">,</span>
<span class="reserved">char</span><span class="plain"> *</span><span class="identifier">message</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">explanation</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(2, </span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="identifier">explanation</span><span class="plain">);</span>
<span class="functiontext">Problems::quote_subject</span><span class="plain">(4, </span><span class="identifier">infs</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"You wrote %1, but the %4 %2%|, %3"</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Problems::Issue::object_problem appears nowhere else.</p>
<p class="endnote">The function Problems::Issue::object_problem_at_sentence appears nowhere else.</p>
<p class="endnote">The function Problems::Issue::subject_problem_at_sentence is used in 9/ma (<a href="9-ma.html#SP3_3_39_5">&#167;3.3.39.5</a>).</p>
<p class="inwebparagraph"><a id="SP8"></a><b>&#167;8. </b>When objects are created with bizarre names, this is usually a symptom of
some other malaise, and so we issue the following message with a little
more tact (and in particular, we don't assert very confidently that what
we are dealing with is genuinely an object).
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::subject_creation_problem</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="reserved">inference_subject</span><span class="plain"> *</span><span class="identifier">subj</span><span class="plain">,</span>
<span class="reserved">char</span><span class="plain"> *</span><span class="identifier">message</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">explanation</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="functiontext">Problems::quote_subject</span><span class="plain">(1, </span><span class="identifier">subj</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(2, </span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="identifier">explanation</span><span class="plain">);</span>
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain"> = </span><span class="functiontext">InferenceSubjects::get_name_text</span><span class="plain">(</span><span class="identifier">subj</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::nonempty</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">)) {</span>
<span class="identifier">Problems::quote_source</span><span class="plain">(4, </span><span class="identifier">NounPhrases::new_raw</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">));</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
<span class="string">"I've made something called %4 but it %2%|, %3"</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
<span class="string">"I've made something called '%1' but it %2%|, %3"</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Problems::Issue::subject_creation_problem appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP9"></a><b>&#167;9. </b>Information about objects is assembled in a mass of inferences. When these
contradict each other, that is usually the occasion for a contradiction
problem (see above); the following routine is used only when inferences
are implied which necessarily make no sense, rather than merely contingently
making no sense.
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::inference_problem</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="reserved">inference_subject</span><span class="plain"> *</span><span class="identifier">infs</span><span class="plain">, </span><span class="reserved">inference</span><span class="plain"> *</span><span class="identifier">inf</span><span class="plain">,</span>
<span class="reserved">char</span><span class="plain"> *</span><span class="identifier">message</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">explanation</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="functiontext">Problems::quote_subject</span><span class="plain">(1, </span><span class="identifier">infs</span><span class="plain">);</span>
<span class="identifier">Problems::quote_source</span><span class="plain">(2, </span><span class="functiontext">World::Inferences::where_inferred</span><span class="plain">(</span><span class="identifier">inf</span><span class="plain">));</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(4, </span><span class="identifier">explanation</span><span class="plain">);</span>
<span class="functiontext">Problems::quote_property</span><span class="plain">(5, </span><span class="functiontext">World::Inferences::get_property</span><span class="plain">(</span><span class="identifier">inf</span><span class="plain">));</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
<span class="string">"You wrote %2: but the property %5 for the %1 %3%|, %4"</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Problems::Issue::inference_problem is used in 15/ia (<a href="15-ia.html#SP2">&#167;2</a>), 16/cmw (<a href="16-cmw.html#SP1_2_1">&#167;1.2.1</a>).</p>
<p class="inwebparagraph"><a id="SP10"></a><b>&#167;10. Property problems. </b>Just occasionally there is a problem with the definition of a property in the
abstract, rather than with the actual property of some specific object.
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::property_problem</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="reserved">property</span><span class="plain"> *</span><span class="identifier">prn</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">message</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">explanation</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="functiontext">Problems::quote_property</span><span class="plain">(1, </span><span class="identifier">prn</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(2, </span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(3, </span><span class="identifier">explanation</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">explanation</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"The %1 %2%|, %3"</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Problems::Issue::property_problem appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP11"></a><b>&#167;11. Extension problems. </b>These are generated when the user tries to employ a malformed extension.
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::extension_problem</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="reserved">extension_file</span><span class="plain"> *</span><span class="identifier">ef</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">message</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="functiontext">Problems::quote_extension</span><span class="plain">(1, </span><span class="identifier">ef</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(2, </span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
<span class="string">"The extension %1, which your source text makes use of, %2."</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::extension_problem_S</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="reserved">extension_file</span><span class="plain"> *</span><span class="identifier">ef</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">message</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="functiontext">Problems::quote_extension</span><span class="plain">(1, </span><span class="identifier">ef</span><span class="plain">);</span>
<span class="identifier">Problems::quote_stream</span><span class="plain">(2, </span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">""</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
<span class="string">"The extension %1, which your source text makes use of, %2."</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Problems::Issue::extension_problem is used in 7/ss (<a href="7-ss.html#SP9_1">&#167;9.1</a>, <a href="7-ss.html#SP9_2">&#167;9.2</a>, <a href="7-ss.html#SP12">&#167;12</a>).</p>
<p class="endnote">The function Problems::Issue::extension_problem_S is used in 8/ef (<a href="8-ef.html#SP8">&#167;8</a>).</p>
<p class="inwebparagraph"><a id="SP12"></a><b>&#167;12. Releasing problems. </b>These occur when the release instructions do not make sense. Sometimes it's
possible to pin down an exact place where the difficulty occurs, but
sometimes not.
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::release_problem</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">message</span><span class="plain">, </span><span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(1, </span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">fn</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">fn</span><span class="plain">, </span><span class="string">"%f"</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">Problems::quote_stream</span><span class="plain">(2, </span><span class="identifier">fn</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"A problem occurred with the 'Release along with...': "</span>
<span class="string">"instructions: %1 (with the file '%2')"</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">fn</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::release_problem_path</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">message</span><span class="plain">, </span><span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">path</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(1, </span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">pn</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">pn</span><span class="plain">, </span><span class="string">"%p"</span><span class="plain">, </span><span class="identifier">path</span><span class="plain">);</span>
<span class="identifier">Problems::quote_stream</span><span class="plain">(2, </span><span class="identifier">pn</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"A problem occurred with the 'Release along with...': "</span>
<span class="string">"instructions: %1 (with the file '%2')"</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">pn</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::release_problem_at_sentence</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">message</span><span class="plain">, </span><span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(1, </span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">fn</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">fn</span><span class="plain">, </span><span class="string">"%f"</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">Problems::quote_stream</span><span class="plain">(2, </span><span class="identifier">fn</span><span class="plain">);</span>
<span class="identifier">Problems::quote_source</span><span class="plain">(3, </span><span class="identifier">current_sentence</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"A problem occurred with the 'Release along with...': "</span>
<span class="string">"instructions (%3): %1 (with the file '%2')"</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">fn</span><span class="plain">);</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Problems::Issue::release_problem appears nowhere else.</p>
<p class="endnote">The function Problems::Issue::release_problem_path appears nowhere else.</p>
<p class="endnote">The function Problems::Issue::release_problem_at_sentence appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP13"></a><b>&#167;13. Cartographical problems. </b>The map-maker used for the World index and also the EPS-file output has its
own quaint syntax, and where there is syntax, there are error messages:
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::map_problem</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">q</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">message</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">q</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(2, </span><span class="identifier">message</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">""</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span><span class="string">"You gave as a hint in map-making: %1. %2"</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::Issue::map_problem_wanted_but</span><span class="plain">(</span><span class="identifier">SIGIL_ARGUMENTS</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">q</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">i_wanted_a</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">vw1</span><span class="plain">) {</span>
<span class="identifier">ACT_ON_SIGIL</span>
<span class="identifier">Problems::quote_source</span><span class="plain">(1, </span><span class="identifier">q</span><span class="plain">);</span>
<span class="identifier">Problems::quote_text</span><span class="plain">(2, </span><span class="identifier">i_wanted_a</span><span class="plain">);</span>
<span class="identifier">Problems::quote_wording</span><span class="plain">(3, </span><span class="identifier">Wordings::one_word</span><span class="plain">(</span><span class="identifier">vw1</span><span class="plain">));</span>
<span class="identifier">Problems::issue_problem_begin</span><span class="plain">(</span><span class="string">""</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_segment</span><span class="plain">(</span>
<span class="string">"You gave as a hint in map-making: %1. But the value '%3' did not "</span>
<span class="string">"fit - it should have been %2."</span><span class="plain">);</span>
<span class="identifier">Problems::issue_problem_end</span><span class="plain">();</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Problems::Issue::map_problem appears nowhere else.</p>
<p class="endnote">The function Problems::Issue::map_problem_wanted_but appears nowhere else.</p>
<hr class="tocbar">
<ul class="toc"><li><a href="2-sq.html">Back to 'Supplementary Quotes'</a></li><li><i>(This section ends Chapter 2: Bridge to Problems Module.)</i></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>