mirror of
https://github.com/ganelson/inform.git
synced 2024-07-16 22:14:23 +03:00
277 lines
40 KiB
HTML
277 lines
40 KiB
HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
|
<html>
|
|
<head>
|
|
<title>2/up</title>
|
|
<meta name="viewport" content="width=device-width initial-scale=1">
|
|
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
|
<meta http-equiv="Content-Language" content="en-gb">
|
|
<link href="../inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
|
</head>
|
|
<body>
|
|
<nav role="navigation">
|
|
<h1><a href="../webs.html">Sources</a></h1>
|
|
<ul>
|
|
<li><a href="../compiler.html"><b>compiler tools</b></a></li>
|
|
<li><a href="../other.html">other tools</a></li>
|
|
<li><a href="../extensions.html">extensions and kits</a></li>
|
|
<li><a href="../units.html">unit test tools</a></li>
|
|
</ul>
|
|
<h2>Compiler Webs</h2>
|
|
<ul>
|
|
<li><a href="../inbuild/index.html">inbuild</a></li>
|
|
<li><a href="../inform7/index.html">inform7</a></li>
|
|
<li><a href="../inter/index.html">inter</a></li>
|
|
</ul>
|
|
<h2>Inbuild Modules</h2>
|
|
<ul>
|
|
<li><a href="../inbuild-module/index.html">inbuild</a></li>
|
|
<li><a href="../arch-module/index.html">arch</a></li>
|
|
<li><a href="../words-module/index.html">words</a></li>
|
|
<li><a href="../syntax-module/index.html">syntax</a></li>
|
|
<li><a href="../html-module/index.html">html</a></li>
|
|
</ul>
|
|
<h2>Inform7 Modules</h2>
|
|
<ul>
|
|
<li><a href="../core-module/index.html">core</a></li>
|
|
<li><a href="../problems-module/index.html">problems</a></li>
|
|
<li><a href="../inflections-module/index.html">inflections</a></li>
|
|
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
|
<li><a href="../kinds-module/index.html">kinds</a></li>
|
|
<li><a href="../if-module/index.html">if</a></li>
|
|
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
|
<li><a href="../index-module/index.html">index</a></li>
|
|
</ul>
|
|
<h2>Inter Modules</h2>
|
|
<ul>
|
|
<li><a href="../inter-module/index.html">inter</a></li>
|
|
<li><a href="../building-module/index.html">building</a></li>
|
|
<li><a href="../codegen-module/index.html">codegen</a></li>
|
|
</ul>
|
|
<h2>Foundation</h2>
|
|
<ul>
|
|
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
|
</ul>
|
|
|
|
|
|
</nav>
|
|
<main role="main">
|
|
|
|
<!--Weave of '2/sq' generated by 7-->
|
|
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../compiler.html">Compiler Modules</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 Quotes</b></li></ul><p class="purpose">More things to quote in problem messages.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP1"></a><b>§1. </b>We provide some simple extensions to the Problems module's stock of data
|
|
structures which can be quoted. (These routines look as if they ought to be
|
|
automated with macros, but that would be a nuisance because the tangler then
|
|
wouldn't auto-predeclare them; and there aren't so very many of them.)
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::quote_spec</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">t</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="identifier">Problems::problem_quote</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) </span><span class="identifier">p</span><span class="plain">, </span><span class="functiontext">Problems::expand_spec</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::expand_spec</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="functiontext">Specifications::write_out_in_English</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, (</span><span class="identifier">parse_node</span><span class="plain"> *) </span><span class="identifier">p</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::quote_relation</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">t</span><span class="plain">, </span><span class="reserved">binary_predicate</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="identifier">Problems::problem_quote</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) </span><span class="identifier">p</span><span class="plain">, </span><span class="functiontext">Problems::expand_relation</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::expand_relation</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="functiontext">BinaryPredicates::describe_for_problems</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, (</span><span class="reserved">binary_predicate</span><span class="plain"> *) </span><span class="identifier">p</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::quote_phrase</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">t</span><span class="plain">, </span><span class="reserved">phrase</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="identifier">Problems::problem_quote</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) </span><span class="identifier">p</span><span class="plain">, </span><span class="functiontext">Problems::expand_phrase</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::expand_phrase</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="functiontext">Phrases::write_HTML_representation</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, (</span><span class="reserved">phrase</span><span class="plain"> *) </span><span class="identifier">p</span><span class="plain">, </span><span class="constant">INDEX_PHRASE_FORMAT</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::quote_extension</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">t</span><span class="plain">, </span><span class="identifier">inform_extension</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="identifier">Problems::problem_quote</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) </span><span class="identifier">p</span><span class="plain">, </span><span class="functiontext">Problems::expand_extension</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::expand_extension</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="identifier">Extensions::write</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, (</span><span class="identifier">inform_extension</span><span class="plain"> *) </span><span class="identifier">p</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::quote_copy</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">t</span><span class="plain">, </span><span class="identifier">inbuild_copy</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="identifier">Problems::problem_quote</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) </span><span class="identifier">p</span><span class="plain">, </span><span class="functiontext">Problems::expand_copy</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::expand_copy</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="identifier">Copies::write_copy</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, (</span><span class="identifier">inbuild_copy</span><span class="plain"> *) </span><span class="identifier">p</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::quote_work</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">t</span><span class="plain">, </span><span class="identifier">inbuild_work</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="identifier">Problems::problem_quote</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) </span><span class="identifier">p</span><span class="plain">, </span><span class="functiontext">Problems::expand_work</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::expand_work</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="identifier">Works::write</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, (</span><span class="identifier">inbuild_work</span><span class="plain"> *) </span><span class="identifier">p</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::quote_object</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">t</span><span class="plain">, </span><span class="reserved">instance</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="identifier">Problems::problem_quote</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) </span><span class="identifier">p</span><span class="plain">, </span><span class="functiontext">Problems::expand_object</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Problems::quote_spec is used in <a href="#SP4">§4</a>, 9/pk (<a href="9-pk.html#SP3_2">§3.2</a>), 9/pd (<a href="9-pd.html#SP5_11_1">§5.11.1</a>), 12/dtd (<a href="12-dtd.html#SP13">§13</a>), 14/ds2 (<a href="14-ds2.html#SP10_1_1_3_1">§10.1.1.3.1</a>, <a href="14-ds2.html#SP11_6_1">§11.6.1</a>), 16/in (<a href="16-in.html#SP20_3_3">§20.3.3</a>), 18/lc (<a href="18-lc.html#SP8_1_2">§8.1.2</a>), 20/eq (<a href="20-eq.html#SP47_1">§47.1</a>), 25/cii (<a href="25-cii.html#SP3_1_1_2">§3.1.1.2</a>, <a href="25-cii.html#SP3_1_1_4_6">§3.1.1.4.6</a>, <a href="25-cii.html#SP3_7_1">§3.7.1</a>), 25/cp (<a href="25-cp.html#SP5_3_5">§5.3.5</a>).</p>
|
|
|
|
<p class="endnote">The function Problems::expand_spec appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function Problems::quote_relation is used in 11/tcp (<a href="11-tcp.html#SP12">§12</a>), 14/ds2 (<a href="14-ds2.html#SP10_1_1_3_1_3">§10.1.1.3.1.3</a>), 16/in (<a href="16-in.html#SP20_3_3">§20.3.3</a>).</p>
|
|
|
|
<p class="endnote">The function Problems::expand_relation appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function Problems::quote_phrase is used in 22/po (<a href="22-po.html#SP10_1_1">§10.1.1</a>, <a href="22-po.html#SP11_1">§11.1</a>), 22/tp (<a href="22-tp.html#SP8">§8</a>).</p>
|
|
|
|
<p class="endnote">The function Problems::expand_phrase appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function Problems::quote_extension is used in 2/si (<a href="2-si.html#SP11">§11</a>), 2/pwst (<a href="2-pwst.html#SP1">§1</a>), 8/ef (<a href="8-ef.html#SP8">§8</a>).</p>
|
|
|
|
<p class="endnote">The function Problems::expand_extension appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function Problems::quote_copy appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function Problems::expand_copy appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function Problems::quote_work is used in 2/pwst (<a href="2-pwst.html#SP1">§1</a>).</p>
|
|
|
|
<p class="endnote">The function Problems::expand_work appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function Problems::quote_object is used in <a href="#SP2">§2</a>, 2/si (<a href="2-si.html#SP2">§2</a>, <a href="2-si.html#SP7">§7</a>), 5/ins (<a href="5-ins.html#SP19_1">§19.1</a>).</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b>Since numerous instances are created without explicit and distinct
|
|
names, for instance by sentences like
|
|
</p>
|
|
|
|
<blockquote>
|
|
<p>Four coins are in the box.</p>
|
|
|
|
</blockquote>
|
|
|
|
<p class="inwebparagraph">...it's prudent to quote instances without names carefully, and not to ignore
|
|
this as some kind of marginal will-never-happen case.
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::expand_object</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">p</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">instance</span><span class="plain"> *) </span><span class="identifier">p</span><span class="plain">;</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">I</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">Instances::get_name</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">FALSE</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::expand_text_within_reason</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"nameless "</span><span class="plain">);</span>
|
|
<span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">k</span><span class="plain"> = </span><span class="functiontext">Instances::to_kind</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
|
|
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">KW</span><span class="plain"> = </span><span class="identifier">Kinds::Behaviour::get_name</span><span class="plain">(</span><span class="identifier">k</span><span class="plain">, </span><span class="identifier">FALSE</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">KW</span><span class="plain">)) </span><span class="identifier">Problems::expand_text_within_reason</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">KW</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"thing"</span><span class="plain">);</span>
|
|
<span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain"> = </span><span class="functiontext">Instances::get_creating_sentence</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">from</span><span class="plain">) {</span>
|
|
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">" created in the sentence "</span><span class="plain">);</span>
|
|
<span class="identifier">Problems::append_source</span><span class="plain">(</span><span class="identifier">ParseTree::get_text</span><span class="plain">(</span><span class="identifier">from</span><span class="plain">));</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::quote_subject</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">t</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">if</span><span class="plain"> (</span><span class="identifier">infs</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) { </span><span class="identifier">Problems::quote_text</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, </span><span class="string">"something"</span><span class="plain">); </span><span class="reserved">return</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">infs</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_wording</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">); </span><span class="reserved">return</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="functiontext">InferenceSubjects::as_object_instance</span><span class="plain">(</span><span class="identifier">infs</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">I</span><span class="plain">) { </span><span class="functiontext">Problems::quote_object</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, </span><span class="identifier">I</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
|
|
<span class="identifier">Problems::quote_text</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, </span><span class="string">"something nameless"</span><span class="plain">); </span> <span class="comment">this never actually happens</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::quote_invocation</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">t</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="identifier">Problems::problem_quote</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) </span><span class="identifier">p</span><span class="plain">, </span><span class="functiontext">Problems::expand_invocation</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::expand_invocation</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="functiontext">Phrases::TypeData::Textual::inv_write_HTML_representation</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, (</span><span class="identifier">parse_node</span><span class="plain"> *) </span><span class="identifier">p</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::quote_extension_id</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">t</span><span class="plain">, </span><span class="identifier">inbuild_work</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="identifier">Problems::problem_quote</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) </span><span class="identifier">p</span><span class="plain">, </span><span class="functiontext">Problems::expand_extension_id</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::expand_extension_id</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="identifier">Works::write_to_HTML_file</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, (</span><span class="identifier">inbuild_work</span><span class="plain"> *) </span><span class="identifier">p</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::quote_property</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">t</span><span class="plain">, </span><span class="reserved">property</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) { </span><span class="identifier">Problems::quote_wording</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, </span><span class="identifier">p</span><span class="plain">-</span><span class="element">>name</span><span class="plain">); }</span>
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::quote_table</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">t</span><span class="plain">, </span><span class="reserved">table</span><span class="plain"> *</span><span class="identifier">tab</span><span class="plain">) {</span>
|
|
<span class="identifier">Problems::quote_source</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, </span><span class="functiontext">Tables::get_headline</span><span class="plain">(</span><span class="identifier">tab</span><span class="plain">));</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Problems::expand_object is used in <a href="#SP1">§1</a>.</p>
|
|
|
|
<p class="endnote">The function Problems::quote_subject is used in 2/si (<a href="2-si.html#SP2">§2</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>), 9/ma (<a href="9-ma.html#SP3_3_8_1">§3.3.8.1</a>, <a href="9-ma.html#SP3_3_38">§3.3.38</a>), 9/ass (<a href="9-ass.html#SP14_1">§14.1</a>), 14/ds2 (<a href="14-ds2.html#SP11_9_1_2_3_4">§11.9.1.2.3.4</a>), 16/in (<a href="16-in.html#SP20_3_3">§20.3.3</a>), 19/tb (<a href="19-tb.html#SP24_5">§24.5</a>).</p>
|
|
|
|
<p class="endnote">The function Problems::quote_invocation is used in 14/ds2 (<a href="14-ds2.html#SP10_1_1_2">§10.1.1.2</a>).</p>
|
|
|
|
<p class="endnote">The function Problems::expand_invocation appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function Problems::quote_extension_id is used in 2/pwst (<a href="2-pwst.html#SP1">§1</a>).</p>
|
|
|
|
<p class="endnote">The function Problems::expand_extension_id appears nowhere else.</p>
|
|
|
|
<p class="endnote">The function Problems::quote_property is used in 2/si (<a href="2-si.html#SP9">§9</a>, <a href="2-si.html#SP10">§10</a>), 9/ma (<a href="9-ma.html#SP3_3_8_2">§3.3.8.2</a>), 9/pk (<a href="9-pk.html#SP4_1">§4.1</a>, <a href="9-pk.html#SP4_2">§4.2</a>, <a href="9-pk.html#SP4_3">§4.3</a>, <a href="9-pk.html#SP4_4">§4.4</a>), 9/pd (<a href="9-pd.html#SP7_1_3">§7.1.3</a>), 11/tc (<a href="11-tc.html#SP7_1">§7.1</a>), 14/ds2 (<a href="14-ds2.html#SP11_9_1_1_5_1_3">§11.9.1.1.5.1.3</a>), 15/ep (<a href="15-ep.html#SP6">§6</a>), 15/cr (<a href="15-cr.html#SP5">§5</a>), 15/spr2 (<a href="15-spr2.html#SP9_1">§9.1</a>, <a href="15-spr2.html#SP9_2">§9.2</a>), 15/pov (<a href="15-pov.html#SP4_1">§4.1</a>), 16/in (<a href="16-in.html#SP14">§14</a>).</p>
|
|
|
|
<p class="endnote">The function Problems::quote_table is used in 2/si (<a href="2-si.html#SP3">§3</a>), 9/tc (<a href="9-tc.html#SP5_4_2_7">§5.4.2.7</a>), 19/tc (<a href="19-tc.html#SP6_1">§6.1</a>, <a href="19-tc.html#SP14_1">§14.1</a>, <a href="19-tc.html#SP15_5">§15.5</a>, <a href="19-tc.html#SP15_6">§15.6</a>), 19/tb (<a href="19-tb.html#SP8">§8</a>, <a href="19-tb.html#SP20_5">§20.5</a>, <a href="19-tb.html#SP20_6">§20.6</a>, <a href="19-tb.html#SP20_10_2_1">§20.10.2.1</a>, <a href="19-tb.html#SP20_10_2_2">§20.10.2.2</a>, <a href="19-tb.html#SP20_10_3_2">§20.10.3.2</a>, <a href="19-tb.html#SP20_10_4_1">§20.10.4.1</a>, <a href="19-tb.html#SP27_1_3_2">§27.1.3.2</a>, <a href="19-tb.html#SP27_1_3_2_1">§27.1.3.2.1</a>).</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b>To quote a kind is straightforward enough:
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::quote_kind</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">t</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">K</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) || (</span><span class="identifier">Kinds::Compare::eq</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">K_nil</span><span class="plain">))) </span><span class="identifier">Problems::quote_text</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, </span><span class="string">"nothing"</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">Problems::problem_quote</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) </span><span class="identifier">K</span><span class="plain">, </span><span class="functiontext">Problems::expand_kind</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::expand_kind</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">p</span><span class="plain">) {</span>
|
|
<span class="identifier">Kinds::Textual::write_articled</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, (</span><span class="identifier">kind</span><span class="plain"> *) </span><span class="identifier">p</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Problems::quote_kind is used in <a href="#SP4">§4</a>, 5/lp (<a href="5-lp.html#SP34_5">§34.5</a>, <a href="5-lp.html#SP34_6">§34.6</a>), 5/ins (<a href="5-ins.html#SP19_1">§19.1</a>), 5/nv (<a href="5-nv.html#SP7_1">§7.1</a>, <a href="5-nv.html#SP23">§23</a>, <a href="5-nv.html#SP25_2">§25.2</a>), 6/tur (<a href="6-tur.html#SP5">§5</a>), 9/tc (<a href="9-tc.html#SP5_4_2_6">§5.4.2.6</a>, <a href="9-tc.html#SP5_4_2_7">§5.4.2.7</a>, <a href="9-tc.html#SP5_4_2_8">§5.4.2.8</a>, <a href="9-tc.html#SP8_1">§8.1</a>), 9/ma (<a href="9-ma.html#SP3_3_39_1">§3.3.39.1</a>), 9/pk (<a href="9-pk.html#SP2_1">§2.1</a>, <a href="9-pk.html#SP4_4">§4.4</a>), 9/pd (<a href="9-pd.html#SP5_6_1">§5.6.1</a>, <a href="9-pd.html#SP7_1_3">§7.1.3</a>), 11/tc (<a href="11-tc.html#SP7_1">§7.1</a>), 11/tcp (<a href="11-tcp.html#SP6_9">§6.9</a>, <a href="11-tcp.html#SP6_10">§6.10</a>, <a href="11-tcp.html#SP6_11">§6.11</a>, <a href="11-tcp.html#SP10">§10</a>, <a href="11-tcp.html#SP11">§11</a>, <a href="11-tcp.html#SP11_3">§11.3</a>, <a href="11-tcp.html#SP12">§12</a>), 12/ter (<a href="12-ter.html#SP5_1">§5.1</a>, <a href="12-ter.html#SP8_4">§8.4</a>), 12/qr (<a href="12-qr.html#SP5">§5</a>), 12/ca (<a href="12-ca.html#SP6_2">§6.2</a>), 13/kak (<a href="13-kak.html#SP7">§7</a>), 13/rsfk (<a href="13-rsfk.html#SP4_1">§4.1</a>, <a href="13-rsfk.html#SP4_2">§4.2</a>, <a href="13-rsfk.html#SP16_2">§16.2</a>, <a href="13-rsfk.html#SP26">§26</a>), 14/ds2 (<a href="14-ds2.html#SP10_1_1_3_1">§10.1.1.3.1</a>, <a href="14-ds2.html#SP11_8_1">§11.8.1</a>, <a href="14-ds2.html#SP11_9_1_1_2_2_2">§11.9.1.1.2.2.2</a>, <a href="14-ds2.html#SP11_9_1_1_3_1_1">§11.9.1.1.3.1.1</a>, <a href="14-ds2.html#SP11_9_1_1_5_2">§11.9.1.1.5.2</a>, <a href="14-ds2.html#SP11_9_1_2_3_3">§11.9.1.2.3.3</a>, <a href="14-ds2.html#SP11_9_1_2_4">§11.9.1.2.4</a>, <a href="14-ds2.html#SP15_4">§15.4</a>, <a href="14-ds2.html#SP19_1">§19.1</a>, <a href="14-ds2.html#SP19_2">§19.2</a>, <a href="14-ds2.html#SP19_2_1">§19.2.1</a>, <a href="14-ds2.html#SP19_5_3_2">§19.5.3.2</a>, <a href="14-ds2.html#SP19_6_1_1">§19.6.1.1</a>, <a href="14-ds2.html#SP19_6_2_1">§19.6.2.1</a>, <a href="14-ds2.html#SP19_6_2_2">§19.6.2.2</a>), 15/vp (<a href="15-vp.html#SP5">§5</a>), 15/cp (<a href="15-cp.html#SP3">§3</a>), 15/tpr (<a href="15-tpr.html#SP5">§5</a>), 15/spr2 (<a href="15-spr2.html#SP9_1">§9.1</a>, <a href="15-spr2.html#SP9_2">§9.2</a>), 15/pov (<a href="15-pov.html#SP4_1">§4.1</a>), 16/in (<a href="16-in.html#SP14">§14</a>), 18/lc (<a href="18-lc.html#SP8_2_1">§8.2.1</a>), 19/tc (<a href="19-tc.html#SP6_1">§6.1</a>, <a href="19-tc.html#SP14_1">§14.1</a>, <a href="19-tc.html#SP15">§15</a>, <a href="19-tc.html#SP15_6">§15.6</a>), 19/tod (<a href="19-tod.html#SP6_2">§6.2</a>, <a href="19-tod.html#SP6_3_3">§6.3.3</a>), 20/eq (<a href="20-eq.html#SP41_4_1">§41.4.1</a>, <a href="20-eq.html#SP41_4_2">§41.4.2</a>, <a href="20-eq.html#SP47_3_2">§47.3.2</a>), 21/rl (<a href="21-rl.html#SP15">§15</a>, <a href="21-rl.html#SP18">§18</a>), 22/pu (<a href="22-pu.html#SP21_1_1_2">§21.1.1.2</a>), 25/ci (<a href="25-ci.html#SP3_1_1_2">§3.1.1.2</a>), 25/cii (<a href="25-cii.html#SP3_2_1_1">§3.2.1.1</a>, <a href="25-cii.html#SP3_1_1_4_7_1_2">§3.1.1.4.7.1.2</a>, <a href="25-cii.html#SP3_5_3">§3.5.3</a>, <a href="25-cii.html#SP3_5_4_3">§3.5.4.3</a>), 25/cp (<a href="25-cp.html#SP5_3_5">§5.3.5</a>).</p>
|
|
|
|
<p class="endnote">The function Problems::expand_kind appears nowhere else.</p>
|
|
|
|
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b>But we also provide another way to mention kinds within problem messages;
|
|
we quote not a literal constant but its kind of value, changing (say) the
|
|
actual constant 15 to the generic constant "number":
|
|
</p>
|
|
|
|
|
|
<pre class="display">
|
|
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Problems::quote_kind_of</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">t</span><span class="plain">, </span><span class="identifier">parse_node</span><span class="plain"> *</span><span class="identifier">spec</span><span class="plain">) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Rvalues::is_object</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">)) {</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::int_annotation</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">, </span><span class="constant">self_object_ANNOT</span><span class="plain">)) {</span>
|
|
<span class="identifier">Problems::quote_text</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, </span><span class="string">"implicit object"</span><span class="plain">); </span> <span class="comment">this is probably never seen, but just in case</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ParseTree::int_annotation</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">, </span><span class="constant">nothing_object_ANNOT</span><span class="plain">)) {</span>
|
|
<span class="identifier">Problems::quote_text</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, </span><span class="string">"the 'nothing' non-object"</span><span class="plain">); </span> <span class="comment">whereas this can certainly happen</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">} </span><span class="reserved">else</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="functiontext">Rvalues::to_instance</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">);</span>
|
|
<span class="functiontext">Problems::quote_kind</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, </span><span class="functiontext">Instances::to_kind</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">));</span>
|
|
<span class="reserved">return</span><span class="plain">;</span>
|
|
<span class="plain">}</span>
|
|
<span class="plain">}</span>
|
|
<span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain"> = </span><span class="functiontext">Specifications::to_kind</span><span class="plain">(</span><span class="identifier">spec</span><span class="plain">);</span>
|
|
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain">) </span><span class="functiontext">Problems::quote_kind</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">);</span>
|
|
<span class="reserved">else</span><span class="plain"> </span><span class="functiontext">Problems::quote_spec</span><span class="plain">(</span><span class="identifier">t</span><span class="plain">, </span><span class="identifier">spec</span><span class="plain">);</span>
|
|
<span class="plain">}</span>
|
|
</pre>
|
|
|
|
<p class="inwebparagraph"></p>
|
|
|
|
<p class="endnote">The function Problems::quote_kind_of is used in 9/ma (<a href="9-ma.html#SP3_3_8_3">§3.3.8.3</a>, <a href="9-ma.html#SP3_3_11">§3.3.11</a>, <a href="9-ma.html#SP3_3_39">§3.3.39</a>, <a href="9-ma.html#SP3_3_41_2_1">§3.3.41.2.1</a>, <a href="9-ma.html#SP3_3_41_8">§3.3.41.8</a>), 14/ds2 (<a href="14-ds2.html#SP11_4_1">§11.4.1</a>, <a href="14-ds2.html#SP11_8_1">§11.8.1</a>, <a href="14-ds2.html#SP19_6_2_1">§19.6.2.1</a>, <a href="14-ds2.html#SP19_6_2_2">§19.6.2.2</a>), 15/pr (<a href="15-pr.html#SP5_2">§5.2</a>), 19/tod (<a href="19-tod.html#SP6_3_3">§6.3.3</a>), 24/lv (<a href="24-lv.html#SP33_2">§33.2</a>), 25/cii (<a href="25-cii.html#SP3_1_1_4_7_1_1">§3.1.1.4.7.1.1</a>).</p>
|
|
|
|
<hr class="tocbar">
|
|
<ul class="toc"><li><a href="2-up.html">Back to 'Using Problems'</a></li><li><a href="2-si.html">Continue with 'Supplementary Issues'</a></li></ul><hr class="tocbar">
|
|
<!--End of weave-->
|
|
</main>
|
|
</body>
|
|
</html>
|
|
|