1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-28 21:14:57 +03:00

Added receiver example

This commit is contained in:
Graham Nelson 2021-09-15 09:42:14 +01:00
parent 39bc558d65
commit f7c9debd2d
16 changed files with 1943 additions and 1569 deletions

View file

@ -1,6 +1,6 @@
# Inform 7
v10.1.0-alpha.1+6T25 'Krypton' (14 September 2021)
v10.1.0-alpha.1+6T26 'Krypton' (15 September 2021)
## About Inform 7

View file

@ -1,3 +1,3 @@
Prerelease: alpha.1
Build Date: 14 September 2021
Build Number: 6T25
Build Date: 15 September 2021
Build Number: 6T26

View file

@ -99,10 +99,10 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bip</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SPACES_BIP:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"for (int j = "</span><span class="plain-syntax">); </span><span class="constant-syntax">INV_A1</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"; j &gt; 0; j--) i7_print_char(proc, 32);"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">FONT_BIP:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_font(proc, "</span><span class="plain-syntax">); </span><span class="constant-syntax">INV_A1</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">")"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STYLEROMAN_BIP:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_style(proc, i7_roman)"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STYLEBOLD_BIP:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_style(proc, i7_bold)"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STYLEUNDERLINE_BIP:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_style(proc, i7_underline)"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STYLEREVERSE_BIP:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_style(proc, i7_reverse)"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STYLEROMAN_BIP:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_style(proc, \"\")"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STYLEBOLD_BIP:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_style(proc, \"bold\")"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STYLEUNDERLINE_BIP:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_style(proc, \"italic\")"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STYLEREVERSE_BIP:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_style(proc, \"reverse\")"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PRINT_BIP:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_print_C_string(proc, "</span><span class="plain-syntax">); </span><span class="constant-syntax">INV_A1_PRINTMODE</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">")"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PRINTCHAR_BIP:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_print_char(proc, "</span><span class="plain-syntax">); </span><span class="constant-syntax">INV_A1</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">")"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PRINTOBJ_BIP:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_print_object(proc, "</span><span class="plain-syntax">); </span><span class="constant-syntax">INV_A1</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">")"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
@ -117,11 +117,11 @@ function togglePopup(material_id) {
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. </b></p>
<pre class="Extracts-displayed-code all-displayed-code code-font">
<span class="Extracts-plain-syntax">#</span><span class="Extracts-identifier-syntax">define</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_bold</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">1</span>
<span class="Extracts-plain-syntax">#</span><span class="Extracts-identifier-syntax">define</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_roman</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">2</span>
<span class="Extracts-plain-syntax">#</span><span class="Extracts-identifier-syntax">define</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_underline</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">3</span>
<span class="Extracts-plain-syntax">#</span><span class="Extracts-identifier-syntax">define</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_reverse</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">4</span>
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_style</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">what</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-plain-syntax">#</span><span class="Extracts-identifier-syntax">define</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">I7_BODY_TEXT_ID</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">201</span>
<span class="Extracts-plain-syntax">#</span><span class="Extracts-identifier-syntax">define</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">I7_STATUS_TEXT_ID</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">202</span>
<span class="Extracts-plain-syntax">#</span><span class="Extracts-identifier-syntax">define</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">I7_BOX_TEXT_ID</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">203</span>
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_style</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">char</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">what</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_font</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">what</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-plain-syntax">#</span><span class="Extracts-identifier-syntax">define</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fileusage_Data</span><span class="Extracts-plain-syntax"> (0</span><span class="Extracts-identifier-syntax">x00</span><span class="Extracts-plain-syntax">)</span>
@ -170,16 +170,40 @@ function togglePopup(material_id) {
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">read_position</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">end_position</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">owned_by_window_id</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fixed_pitch</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">char</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">style</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">char</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">composite_style</span><span class="Extracts-plain-syntax">[256];</span>
<span class="Extracts-plain-syntax">} </span><span class="Extracts-identifier-syntax">i7_stream</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-identifier-syntax">i7val</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_stream_get_current</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-identifier-syntax">i7_stream</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_new_stream</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">FILE</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">F</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">win_id</span><span class="Extracts-plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.h.</li></ul>
<pre class="Extracts-displayed-code all-displayed-code code-font">
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_style</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">what</span><span class="Extracts-plain-syntax">) {</span>
<span class="Extracts-plain-syntax">#</span><span class="Extracts-identifier-syntax">define</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">I7_MAX_STREAMS</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">128</span>
<span class="Extracts-identifier-syntax">i7_stream</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">I7_MAX_STREAMS</span><span class="Extracts-plain-syntax">];</span>
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_style</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">char</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">what</span><span class="Extracts-plain-syntax">) {</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_stream</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax"> = &amp;(</span><span class="Extracts-identifier-syntax">i7_memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax">]);</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> ((</span><span class="Extracts-identifier-syntax">what</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-identifier-syntax">NULL</span><span class="Extracts-plain-syntax">) || (</span><span class="Extracts-identifier-syntax">strlen</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">what</span><span class="Extracts-plain-syntax">) &gt; </span><span class="Extracts-constant-syntax">128</span><span class="Extracts-plain-syntax">)) {</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fprintf</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">stderr</span><span class="Extracts-plain-syntax">, "</span><span class="Extracts-identifier-syntax">Style</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">name</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">too</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">long</span><span class="Extracts-plain-syntax">\</span><span class="Extracts-identifier-syntax">n</span><span class="Extracts-plain-syntax">"); </span><span class="Extracts-identifier-syntax">i7_fatal_exit</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-plain-syntax"> }</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">style</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">what</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">sprintf</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">composite_style</span><span class="Extracts-plain-syntax">, "%</span><span class="Extracts-identifier-syntax">s</span><span class="Extracts-plain-syntax">", </span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">style</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">fixed_pitch</span><span class="Extracts-plain-syntax">) {</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">strlen</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">style</span><span class="Extracts-plain-syntax">) &gt; </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">sprintf</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">composite_style</span><span class="Extracts-plain-syntax"> + </span><span class="Extracts-identifier-syntax">strlen</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">composite_style</span><span class="Extracts-plain-syntax">), ",");</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">sprintf</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">composite_style</span><span class="Extracts-plain-syntax"> + </span><span class="Extracts-identifier-syntax">strlen</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">composite_style</span><span class="Extracts-plain-syntax">), "</span><span class="Extracts-identifier-syntax">fixedpitch</span><span class="Extracts-plain-syntax">");</span>
<span class="Extracts-plain-syntax"> }</span>
<span class="Extracts-plain-syntax">}</span>
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_font</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">what</span><span class="Extracts-plain-syntax">) {</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_stream</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax"> = &amp;(</span><span class="Extracts-identifier-syntax">i7_memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax">]);</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">fixed_pitch</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">what</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">sprintf</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">composite_style</span><span class="Extracts-plain-syntax">, "%</span><span class="Extracts-identifier-syntax">s</span><span class="Extracts-plain-syntax">", </span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">style</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">fixed_pitch</span><span class="Extracts-plain-syntax">) {</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">strlen</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">style</span><span class="Extracts-plain-syntax">) &gt; </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">sprintf</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">composite_style</span><span class="Extracts-plain-syntax"> + </span><span class="Extracts-identifier-syntax">strlen</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">composite_style</span><span class="Extracts-plain-syntax">), ",");</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">sprintf</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">composite_style</span><span class="Extracts-plain-syntax"> + </span><span class="Extracts-identifier-syntax">strlen</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">composite_style</span><span class="Extracts-plain-syntax">), "</span><span class="Extracts-identifier-syntax">fixedpitch</span><span class="Extracts-plain-syntax">");</span>
<span class="Extracts-plain-syntax"> }</span>
<span class="Extracts-plain-syntax">}</span>
<span class="Extracts-identifier-syntax">i7_fileref</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">filerefs</span><span class="Extracts-plain-syntax">[128 + </span><span class="Extracts-constant-syntax">32</span><span class="Extracts-plain-syntax">];</span>
@ -264,19 +288,15 @@ function togglePopup(material_id) {
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">return</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax">}</span>
<span class="Extracts-plain-syntax">#</span><span class="Extracts-identifier-syntax">define</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">I7_MAX_STREAMS</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">128</span>
<span class="Extracts-identifier-syntax">i7_stream</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">I7_MAX_STREAMS</span><span class="Extracts-plain-syntax">];</span>
<span class="Extracts-identifier-syntax">i7val</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_stdout_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7_stderr_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">1</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-identifier-syntax">i7val</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_stdout_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7_stderr_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">1</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-identifier-syntax">i7val</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_stream_get_current</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">) {</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">return</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">return</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax">}</span>
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_stream_set_current</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7val</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">) {</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> ((</span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax"> &lt; </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">) || (</span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax"> &gt;= </span><span class="Extracts-identifier-syntax">I7_MAX_STREAMS</span><span class="Extracts-plain-syntax">)) { </span><span class="Extracts-identifier-syntax">fprintf</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">stderr</span><span class="Extracts-plain-syntax">, "</span><span class="Extracts-identifier-syntax">Stream</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">ID</span><span class="Extracts-plain-syntax"> %</span><span class="Extracts-identifier-syntax">d</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">out</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">of</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">range</span><span class="Extracts-plain-syntax">\</span><span class="Extracts-identifier-syntax">n</span><span class="Extracts-plain-syntax">", </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">); </span><span class="Extracts-identifier-syntax">i7_fatal_exit</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">); }</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax">}</span>
<span class="Extracts-identifier-syntax">i7_stream</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_new_stream</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">FILE</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">F</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">win_id</span><span class="Extracts-plain-syntax">) {</span>
@ -296,6 +316,9 @@ function togglePopup(material_id) {
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">read_position</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">end_position</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">owned_by_window_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">win_id</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">style</span><span class="Extracts-plain-syntax"> = "";</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">fixed_pitch</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">composite_style</span><span class="Extracts-plain-syntax">[0] = </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">return</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax">}</span>
</pre>
@ -347,7 +370,7 @@ function togglePopup(material_id) {
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">i7_memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax">].</span><span class="Extracts-identifier-syntax">active</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">) {</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax">] = </span><span class="Extracts-identifier-syntax">i7_new_stream</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">F</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">win_id</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax">].</span><span class="Extracts-identifier-syntax">active</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">1</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax">].</span><span class="Extracts-identifier-syntax">previous_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax">].</span><span class="Extracts-identifier-syntax">previous_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">return</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> }</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fprintf</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">stderr</span><span class="Extracts-plain-syntax">, "</span><span class="Extracts-identifier-syntax">Out</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">of</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">streams</span><span class="Extracts-plain-syntax">\</span><span class="Extracts-identifier-syntax">n</span><span class="Extracts-plain-syntax">"); </span><span class="Extracts-identifier-syntax">i7_fatal_exit</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">);</span>
@ -360,7 +383,7 @@ function togglePopup(material_id) {
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">].</span><span class="Extracts-identifier-syntax">write_here_on_closure</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">buffer</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">].</span><span class="Extracts-identifier-syntax">write_limit</span><span class="Extracts-plain-syntax"> = (</span><span class="Extracts-identifier-syntax">size_t</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">len</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">].</span><span class="Extracts-identifier-syntax">char_size</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">1</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">return</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax">}</span>
@ -370,7 +393,7 @@ function togglePopup(material_id) {
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">].</span><span class="Extracts-identifier-syntax">write_here_on_closure</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">buffer</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">].</span><span class="Extracts-identifier-syntax">write_limit</span><span class="Extracts-plain-syntax"> = (</span><span class="Extracts-identifier-syntax">size_t</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">len</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">].</span><span class="Extracts-identifier-syntax">char_size</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">4</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">return</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax">}</span>
@ -413,7 +436,7 @@ function togglePopup(material_id) {
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-constant-syntax">1</span><span class="Extracts-plain-syntax">) { </span><span class="Extracts-identifier-syntax">fprintf</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">stderr</span><span class="Extracts-plain-syntax">, "</span><span class="Extracts-identifier-syntax">Cannot</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">close</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">stderr</span><span class="Extracts-plain-syntax">\</span><span class="Extracts-identifier-syntax">n</span><span class="Extracts-plain-syntax">"); </span><span class="Extracts-identifier-syntax">i7_fatal_exit</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">); }</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_stream</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax"> = &amp;(</span><span class="Extracts-identifier-syntax">i7_memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">]);</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">active</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">) { </span><span class="Extracts-identifier-syntax">fprintf</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">stderr</span><span class="Extracts-plain-syntax">, "</span><span class="Extracts-identifier-syntax">Stream</span><span class="Extracts-plain-syntax"> %</span><span class="Extracts-identifier-syntax">d</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">already</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">closed</span><span class="Extracts-plain-syntax">\</span><span class="Extracts-identifier-syntax">n</span><span class="Extracts-plain-syntax">", </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">); </span><span class="Extracts-identifier-syntax">i7_fatal_exit</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">); }</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">previous_id</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">previous_id</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">write_here_on_closure</span><span class="Extracts-plain-syntax"> != </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">) {</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">char_size</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-constant-syntax">4</span><span class="Extracts-plain-syntax">) {</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">for</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">size_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">; </span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax"> &lt; </span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">write_limit</span><span class="Extracts-plain-syntax">; </span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax">++)</span>
@ -466,8 +489,9 @@ function togglePopup(material_id) {
<span class="Extracts-plain-syntax">}</span>
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_to_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7val</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rock</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">wchar_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">) {</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_stream</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax"> = &amp;(</span><span class="Extracts-identifier-syntax">i7_memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax">]);</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-identifier-syntax">NULL</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">fputc</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">stdout</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax">)(</span><span class="Extracts-identifier-syntax">rock</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">, "");</span>
<span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax">)(</span><span class="Extracts-identifier-syntax">rock</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">composite_style</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-plain-syntax">}</span>
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_put_char_stream</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7val</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">stream_id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7val</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">x</span><span class="Extracts-plain-syntax">) {</span>
@ -477,7 +501,7 @@ function togglePopup(material_id) {
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rock</span><span class="Extracts-plain-syntax"> = -1;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">win_id</span><span class="Extracts-plain-syntax"> &gt;= </span><span class="Extracts-constant-syntax">1</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">rock</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_rock_of_window</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">win_id</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">unsigned</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax"> = (</span><span class="Extracts-identifier-syntax">unsigned</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">x</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax">// </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">encode_UTF8</span><span class="Extracts-plain-syntax">) {</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">use_UTF8</span><span class="Extracts-plain-syntax">) {</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax"> &gt;= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x800</span><span class="Extracts-plain-syntax">) {</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_to_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">rock</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">xE0</span><span class="Extracts-plain-syntax"> + (</span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax"> &gt;&gt; </span><span class="Extracts-constant-syntax">12</span><span class="Extracts-plain-syntax">));</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_to_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">rock</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x80</span><span class="Extracts-plain-syntax"> + ((</span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax"> &gt;&gt; </span><span class="Extracts-constant-syntax">6</span><span class="Extracts-plain-syntax">) &amp; </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x3f</span><span class="Extracts-plain-syntax">));</span>
@ -486,9 +510,9 @@ function togglePopup(material_id) {
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_to_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">rock</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">xC0</span><span class="Extracts-plain-syntax"> + (</span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax"> &gt;&gt; </span><span class="Extracts-constant-syntax">6</span><span class="Extracts-plain-syntax">));</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_to_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">rock</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x80</span><span class="Extracts-plain-syntax"> + (</span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax"> &amp; </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x3f</span><span class="Extracts-plain-syntax">));</span>
<span class="Extracts-plain-syntax"> } </span><span class="Extracts-identifier-syntax">else</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_to_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">rock</span><span class="Extracts-plain-syntax">, (</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-plain-syntax">// } </span><span class="Extracts-identifier-syntax">else</span><span class="Extracts-plain-syntax"> {</span>
<span class="Extracts-plain-syntax">// </span><span class="Extracts-identifier-syntax">i7_to_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">rock</span><span class="Extracts-plain-syntax">, (</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-plain-syntax">// }</span>
<span class="Extracts-plain-syntax"> } </span><span class="Extracts-identifier-syntax">else</span><span class="Extracts-plain-syntax"> {</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_to_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">rock</span><span class="Extracts-plain-syntax">, (</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-plain-syntax"> }</span>
<span class="Extracts-plain-syntax"> } </span><span class="Extracts-identifier-syntax">else</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">to_file_id</span><span class="Extracts-plain-syntax"> &gt;= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">) {</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_fputc</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, (</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">x</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">to_file_id</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">end_position</span><span class="Extracts-plain-syntax">++;</span>
@ -516,7 +540,7 @@ function togglePopup(material_id) {
<span class="Extracts-plain-syntax">}</span>
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_print_char</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7val</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">x</span><span class="Extracts-plain-syntax">) {</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_put_char_stream</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">x</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_put_char_stream</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">x</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-plain-syntax">}</span>
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_print_C_string</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">char</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">c_string</span><span class="Extracts-plain-syntax">) {</span>

View file

@ -148,6 +148,7 @@ first of those:
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7val</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">i7_object_tree_sibling</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7val</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">variables</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7val</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">tmp</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7val</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_str_id</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax">} </span><span class="Extracts-identifier-syntax">i7state</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-identifier-syntax">typedef</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">struct</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7snapshot</span><span class="Extracts-plain-syntax"> {</span>
@ -166,6 +167,7 @@ first of those:
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">termination_code</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">just_undid</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> (*</span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax">)(</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">wchar_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">char</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">style</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">use_UTF8</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax">} </span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-identifier-syntax">i7state</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_new_state</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax">);</span>
@ -177,7 +179,7 @@ first of those:
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_restore_snapshot_from</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7snapshot</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">ss</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_destroy_latest_snapshot</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_run_process</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_set_process_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> (*</span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax">)(</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">wchar_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">char</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">style</span><span class="Extracts-plain-syntax">));</span>
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_set_process_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> (*</span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax">)(</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">wchar_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">char</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">style</span><span class="Extracts-plain-syntax">), </span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">UTF8</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_initializer</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_fatal_exit</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_destroy_state</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7state</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">s</span><span class="Extracts-plain-syntax">);</span>
@ -267,6 +269,7 @@ first of those:
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">just_undid</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">snapshot_pos</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_default_receiver</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">use_UTF8</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">1</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">return</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax">}</span>
@ -316,7 +319,7 @@ first of those:
<span class="Extracts-plain-syntax">}</span>
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_default_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">wchar_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">char</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">style</span><span class="Extracts-plain-syntax">) {</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-constant-syntax">201</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">fputc</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">stdout</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-identifier-syntax">I7_BODY_TEXT_ID</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">fputc</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">stdout</span><span class="Extracts-plain-syntax">);</span>
<span class="Extracts-plain-syntax">}</span>
<span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">default_main</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">argc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">char</span><span class="Extracts-plain-syntax"> **</span><span class="Extracts-identifier-syntax">argv</span><span class="Extracts-plain-syntax">) {</span>
@ -342,8 +345,9 @@ first of those:
<span class="Extracts-plain-syntax"> }</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">return</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">termination_code</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax">}</span>
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_set_process_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> (*</span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax">)(</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">wchar_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">char</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">style</span><span class="Extracts-plain-syntax">)) {</span>
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_set_process_receiver</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> (*</span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax">)(</span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">wchar_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">c</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">char</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">style</span><span class="Extracts-plain-syntax">), </span><span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">UTF8</span><span class="Extracts-plain-syntax">) {</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">receiver</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-&gt;</span><span class="Extracts-identifier-syntax">use_UTF8</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">UTF8</span><span class="Extracts-plain-syntax">;</span>
<span class="Extracts-plain-syntax">}</span>
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_fatal_exit</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">i7process_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">) {</span>

View file

@ -71,7 +71,7 @@
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Compiler Tools</a></li><li><a href="index.html">inform7</a></li><li><a href="index.html#M">Manual</a></li><li><b>Calling Inform from C</b></li></ul></div>
<p class="purpose">In 2021, Inform gained the ability to generate C code which could be used as part of a larger program, for example in a framework such as Unity.</p>
<ul class="toc"><li><a href="M-cifc.html#SP1">&#167;1. Introduction</a></li><li><a href="M-cifc.html#SP2">&#167;2. Example makes</a></li><li><a href="M-cifc.html#SP3">&#167;3. Example 1: Hello World</a></li><li><a href="M-cifc.html#SP4">&#167;4. Example 2: Hello Hello</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="M-cifc.html#SP1">&#167;1. Introduction</a></li><li><a href="M-cifc.html#SP2">&#167;2. Example makes</a></li><li><a href="M-cifc.html#SP3">&#167;3. Example 1: Hello World</a></li><li><a href="M-cifc.html#SP4">&#167;4. Example 2: Hello Hello</a></li><li><a href="M-cifc.html#SP8">&#167;8. Example 3: HTML Receiver</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Introduction. </b>Users of the Inform UI apps make programs which are usually textual simulations,
and which are in any case sealed boxes running on virtual machines such as Glulx.
@ -337,6 +337,76 @@ to <span class="extract"><span class="ConsoleText-extract-syntax">stderr</span><
other than 0, but checking the exit code is good practice.
</p>
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>&#167;8. Example 3: HTML Receiver. </b>This third example demonstrates a "receiver" function. The text printed by
Inform 7 can be captured, processed, and in general handled however the C
program would like. This is done by assigning a receiver to the process,
after it is created, but before it is run:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">i7process_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">proc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">i7_new_process</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">i7_set_process_receiver</span><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">proc</span><span class="plain-syntax">, </span><span class="identifier-syntax">my_receiver</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
</pre>
<p class="commentary">Here <span class="extract"><span class="extract-syntax">my_receiver</span></span> is a function. The default receiver looks like this:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="identifier-syntax">i7_default_receiver</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">style</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">id</span><span class="plain-syntax"> == </span><span class="identifier-syntax">I7_BODY_TEXT_ID</span><span class="plain-syntax">) </span><span class="identifier-syntax">fputc</span><span class="plain-syntax">(</span><span class="identifier-syntax">c</span><span class="plain-syntax">, </span><span class="identifier-syntax">stdout</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary">This receives the text printed by the Inform process, one character at a time.
</p>
<ul class="items"><li>&#9679; The <span class="extract"><span class="extract-syntax">id</span></span> is a "window ID", a detail which doesn't matter to a Basic Inform
project &mdash; it will always in fact be <span class="extract"><span class="extract-syntax">I7_BODY_TEXT_ID</span></span>. For a full Inform project
such as an IF work, it might be any of three possibilities:
<ul class="items"><li>&#9679; <span class="extract"><span class="extract-syntax">I7_BODY_TEXT_ID</span></span>, the main transcript of text in the story;
</li><li>&#9679; <span class="extract"><span class="extract-syntax">I7_STATUS_TEXT_ID</span></span>, the "status line" header at the top of a traditional
Terminal-window-style presentation of this text;
</li><li>&#9679; <span class="extract"><span class="extract-syntax">I7_BOX_TEXT_ID</span></span>, a quotation printed in a box which overlies the main text.
</li></ul>
<li>&#9679; The <span class="extract"><span class="extract-syntax">style</span></span> is a stylistic markup. It will always be a valid C string, of
length at most 256, but is often the empty C string and of length 0, meaning
"this is plain text with no styling applied".
<ul class="items"><li>&#9679; The three main styles are <span class="extract"><span class="extract-syntax">italic</span></span>, <span class="extract"><span class="extract-syntax">bold</span></span>, <span class="extract"><span class="extract-syntax">reverse</span></span> and <span class="extract"><span class="extract-syntax">fixedpitch</span></span>.
</li><li>&#9679; Plain styling and these three can all be combined with a "fixed-pitch type"
request, thus: <span class="extract"><span class="extract-syntax">fixedpitch</span></span>, <span class="extract"><span class="extract-syntax">italic,fixedpitch</span></span>, <span class="extract"><span class="extract-syntax">bold,fixedpitch</span></span>, <span class="extract"><span class="extract-syntax">reverse,fixedpitch</span></span>.
</li></ul>
</li></ul>
<p class="commentary">As can be seen, the default receiver ignores all text not sent to the main window,
and ignores all styling even on that.
</p>
<p class="commentary">The significance of the 1 in the call <span class="extract"><span class="extract-syntax">i7_set_process_receiver(&amp;proc, my_receiver, 1)</span></span>
is that it asked for text to be sent to the receiver encoded as UTF-8. This in fact
is the default receiver's arrangement, too. Call <span class="extract"><span class="extract-syntax">i7_set_process_receiver(&amp;proc, my_receiver, 0)</span></span>
to have the characters arrive raw as a series of unencoded Unicode code-points.
</p>
<p class="commentary">In Example 3, the Inform source is:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">To</span><span class="plain-syntax"> </span><span class="identifier-syntax">begin</span><span class="plain-syntax">:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">say</span><span class="plain-syntax"> </span><span class="string-syntax">"Hello &amp; [italic type]welcome[roman type] from &lt;Inform code&gt;!"</span>
</pre>
<p class="commentary">The example receiver function converts this to HTML:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax">&lt;html&gt;&lt;body&gt;</span>
<span class="plain-syntax">Hello &amp;amp; &lt;span class="italic"&gt;welcome&lt;/span&gt; from &amp;lt;Inform code&amp;gt;!</span>
<span class="plain-syntax">&lt;/html&gt;&lt;/body&gt;</span>
</pre>
<p class="commentary">The word "welcome" here was printed with the style <span class="extract"><span class="extract-syntax">"italic"</span></span>; all else was
plain.
</p>
<p class="commentary">This example just prints the result, of course, but a receiver function could
equally opt to bottle up the text for use later on.
</p>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="M-iwtg.html">&#10094;</a></li><li class="progresscurrentchapter">M</li><li class="progresssection"><a href="M-cu.html">cu</a></li><li class="progresssection"><a href="M-iwtg.html">iwtg</a></li><li class="progresscurrent">cifc</li><li class="progresssection"><a href="M-rc.html">rc</a></li><li class="progresssection"><a href="M-pm.html">pm</a></li><li class="progresschapter"><a href="1-mn.html">1</a></li><li class="progressnext"><a href="M-rc.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->

View file

@ -84,29 +84,29 @@ which take more than 1/1000th of the total running time.
<pre class="undisplayed-code all-displayed-code code-font">
<span class="plain-syntax">100.0% in inform7 run</span>
<span class="plain-syntax"> 53.8% in compilation to Inter</span>
<span class="plain-syntax"> 39.3% in </span><a href="../core-module/1-htc.html#SP9" class="internal">Sequence::undertake_queued_tasks</a>
<span class="plain-syntax"> 3.4% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pre_pass</a>
<span class="plain-syntax"> 2.4% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pass_1</a>
<span class="plain-syntax"> 1.2% in </span><a href="../assertions-module/5-id.html#SP4" class="internal">ImperativeDefinitions::assess_all</a>
<span class="plain-syntax"> 1.2% in </span><a href="../runtime-module/6-pi.html#SP1" class="internal">RTPhrasebook::compile_entries</a>
<span class="plain-syntax"> 54.1% in compilation to Inter</span>
<span class="plain-syntax"> 39.2% in </span><a href="../core-module/1-htc.html#SP9" class="internal">Sequence::undertake_queued_tasks</a>
<span class="plain-syntax"> 3.5% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pre_pass</a>
<span class="plain-syntax"> 2.6% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pass_1</a>
<span class="plain-syntax"> 1.5% in </span><a href="../runtime-module/6-pi.html#SP1" class="internal">RTPhrasebook::compile_entries</a>
<span class="plain-syntax"> 1.4% in </span><a href="../assertions-module/5-id.html#SP4" class="internal">ImperativeDefinitions::assess_all</a>
<span class="plain-syntax"> 1.1% in </span><a href="../runtime-module/5-kc.html#SP10" class="internal">RTKindConstructors::compile</a>
<span class="plain-syntax"> 0.4% in </span><a href="../assertions-module/5-id.html#SP5" class="internal">ImperativeDefinitions::compile_first_block</a>
<span class="plain-syntax"> 0.4% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pass_2</a>
<span class="plain-syntax"> 0.4% in </span><a href="../core-module/1-htc.html#SP9" class="internal">Sequence::undertake_queued_tasks</a>
<span class="plain-syntax"> 0.4% in </span><a href="../core-module/1-htc.html#SP9" class="internal">Sequence::undertake_queued_tasks</a>
<span class="plain-syntax"> 0.4% in </span><a href="../knowledge-module/5-tmw.html#SP5" class="internal">World::stage_V</a>
<span class="plain-syntax"> 0.2% in </span><a href="../assertions-module/5-id.html#SP5" class="internal">ImperativeDefinitions::compile_first_block</a>
<span class="plain-syntax"> 0.1% in </span><a href="../runtime-module/3-cm.html#SP1" class="internal">CompletionModule::compile</a>
<span class="plain-syntax"> 0.2% in </span><a href="../runtime-module/3-cm.html#SP1" class="internal">CompletionModule::compile</a>
<span class="plain-syntax"> 0.2% in </span><a href="../core-module/1-htc.html#SP9" class="internal">Sequence::undertake_queued_tasks</a>
<span class="plain-syntax"> 0.1% in </span><a href="../knowledge-module/4-is.html#SP27" class="internal">InferenceSubjects::emit_all</a>
<span class="plain-syntax"> 0.1% in </span><a href="../runtime-module/5-kc.html#SP10_7" class="internal">RTKindConstructors::compile_permissions</a>
<span class="plain-syntax"> 0.1% in </span><a href="../core-module/1-wtc.html#SP9" class="internal">Task::make_built_in_kind_constructors</a>
<span class="plain-syntax"> 0.1% in </span><a href="../knowledge-module/5-tmw.html#SP3" class="internal">World::stages_II_and_III</a>
<span class="plain-syntax"> 2.1% not specifically accounted for</span>
<span class="plain-syntax"> 44.2% in running Inter pipeline</span>
<span class="plain-syntax"> 12.6% in step preparation</span>
<span class="plain-syntax"> 9.6% in inter step 7/16: consolidate-text</span>
<span class="plain-syntax"> 8.0% in inter step 16/16: generate inform6 -&gt; auto.inf</span>
<span class="plain-syntax"> 7.9% in inter step 2/16: link</span>
<span class="plain-syntax"> 1.8% not specifically accounted for</span>
<span class="plain-syntax"> 44.0% in running Inter pipeline</span>
<span class="plain-syntax"> 12.3% in step preparation</span>
<span class="plain-syntax"> 9.8% in inter step 7/16: consolidate-text</span>
<span class="plain-syntax"> 7.7% in inter step 16/16: generate inform6 -&gt; auto.inf</span>
<span class="plain-syntax"> 7.7% in inter step 2/16: link</span>
<span class="plain-syntax"> 1.5% in inter step 11/16: make-identifiers-unique</span>
<span class="plain-syntax"> 0.4% in inter step 12/16: reconcile-verbs</span>
<span class="plain-syntax"> 0.2% in inter step 14/16: eliminate-redundant-operations</span>
@ -117,8 +117,8 @@ which take more than 1/1000th of the total running time.
<span class="plain-syntax"> 0.1% in inter step 13/16: eliminate-redundant-labels</span>
<span class="plain-syntax"> 0.1% in inter step 4/16: parse-linked-matter</span>
<span class="plain-syntax"> 0.1% in inter step 5/16: resolve-conditional-compilation</span>
<span class="plain-syntax"> 2.2% not specifically accounted for</span>
<span class="plain-syntax"> 1.7% in supervisor</span>
<span class="plain-syntax"> 2.7% not specifically accounted for</span>
<span class="plain-syntax"> 1.6% in supervisor</span>
<span class="plain-syntax"> 0.2% not specifically accounted for</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. Memory consumption. </b>The following gives some idea of which classes of object have the most
@ -128,75 +128,75 @@ represent less than 1/1000th of the total.
</p>
<pre class="undisplayed-code all-displayed-code code-font">
<span class="plain-syntax">Total memory consumption was 384465K = 375 MB</span>
<span class="plain-syntax">Total memory consumption was 387863K = 379 MB</span>
<span class="plain-syntax">61.5% was used for 1991492 objects, in 368717 frames in 296 x 800K = 236800K = 231 MB:</span>
<span class="plain-syntax">61.6% was used for 1997508 objects, in 371251 frames in 299 x 800K = 239200K = 233 MB:</span>
<span class="plain-syntax"> 10.6% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes</span>
<span class="plain-syntax"> 7.3% text_stream_array 5127 x 100 = 512700 objects, 28875264 bytes</span>
<span class="plain-syntax"> 4.3% linked_list 30583 objects, 17126480 bytes</span>
<span class="plain-syntax"> 10.5% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes</span>
<span class="plain-syntax"> 7.2% text_stream_array 5142 x 100 = 514200 objects, 28959744 bytes</span>
<span class="plain-syntax"> 4.3% linked_list 30853 objects, 17277680 bytes</span>
<span class="plain-syntax"> 4.0% inter_symbol_array 139 x 1024 = 142336 objects, 15946080 bytes</span>
<span class="plain-syntax"> 2.6% parse_node 128478 objects, 10278240 bytes</span>
<span class="plain-syntax"> 2.6% parse_node 129399 objects, 10351920 bytes</span>
<span class="plain-syntax"> 1.8% verb_conjugation 160 objects, 7425280 bytes</span>
<span class="plain-syntax"> 1.3% parse_node_annotation_array 343 x 500 = 171500 objects, 5498976 bytes</span>
<span class="plain-syntax"> 1.3% parse_node_annotation_array 345 x 500 = 172500 objects, 5531040 bytes</span>
<span class="plain-syntax"> 0.8% pcalc_prop_array 25 x 1000 = 25000 objects, 3400800 bytes</span>
<span class="plain-syntax"> 0.8% inter_name_array 69 x 1000 = 69000 objects, 3314208 bytes</span>
<span class="plain-syntax"> 0.6% kind_array 67 x 1000 = 67000 objects, 2682144 bytes</span>
<span class="plain-syntax"> 0.6% kind_array 68 x 1000 = 68000 objects, 2722176 bytes</span>
<span class="plain-syntax"> 0.5% inter_name_generator_array 53 x 1000 = 53000 objects, 2121696 bytes</span>
<span class="plain-syntax"> 0.4% inter_schema_token 13430 objects, 1933920 bytes</span>
<span class="plain-syntax"> 0.4% inter_package 26435 objects, 1903320 bytes</span>
<span class="plain-syntax"> 0.4% package_request 20997 objects, 1847736 bytes</span>
<span class="plain-syntax"> 0.4% inter_schema_token 13472 objects, 1939968 bytes</span>
<span class="plain-syntax"> 0.4% inter_package 26572 objects, 1913184 bytes</span>
<span class="plain-syntax"> 0.4% package_request 21138 objects, 1860144 bytes</span>
<span class="plain-syntax"> 0.4% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes</span>
<span class="plain-syntax"> 0.4% inter_symbols_table 26435 objects, 1691840 bytes</span>
<span class="plain-syntax"> 0.4% dictionary 33115 objects, 1589520 bytes</span>
<span class="plain-syntax"> 0.4% inter_symbols_table 26572 objects, 1700608 bytes</span>
<span class="plain-syntax"> 0.4% dictionary 33269 objects, 1596912 bytes</span>
<span class="plain-syntax"> 0.3% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes</span>
<span class="plain-syntax"> 0.3% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes</span>
<span class="plain-syntax"> 0.3% dict_entry_array 399 x 100 = 39900 objects, 1289568 bytes</span>
<span class="plain-syntax"> 0.3% dict_entry_array 398 x 100 = 39800 objects, 1286336 bytes</span>
<span class="plain-syntax"> 0.2% map_data 670 objects, 1125600 bytes</span>
<span class="plain-syntax"> 0.2% id_body 898 objects, 1027312 bytes</span>
<span class="plain-syntax"> 0.2% adjective_meaning 196 objects, 970592 bytes</span>
<span class="plain-syntax"> 0.2% excerpt_meaning 3036 objects, 947232 bytes</span>
<span class="plain-syntax"> 0.2% id_body 940 objects, 1075360 bytes</span>
<span class="plain-syntax"> 0.2% adjective_meaning 202 objects, 1000304 bytes</span>
<span class="plain-syntax"> 0.2% excerpt_meaning 3099 objects, 966888 bytes</span>
<span class="plain-syntax"> 0.2% production 3872 objects, 898304 bytes</span>
<span class="plain-syntax"> 0.2% ptoken 8382 objects, 871728 bytes</span>
<span class="plain-syntax"> 0.2% grammatical_usage 3591 objects, 861840 bytes</span>
<span class="plain-syntax"> 0.2% individual_form 2537 objects, 852432 bytes</span>
<span class="plain-syntax"> 0.2% inter_schema_node 8647 objects, 830112 bytes</span>
<span class="plain-syntax"> 0.2% grammatical_usage 3611 objects, 866640 bytes</span>
<span class="plain-syntax"> 0.2% individual_form 2561 objects, 860496 bytes</span>
<span class="plain-syntax"> 0.2% inter_schema_node 8670 objects, 832320 bytes</span>
<span class="plain-syntax"> 0.1% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes</span>
<span class="plain-syntax"> 0.1% local_variable_array 46 x 100 = 4600 objects, 443072 bytes</span>
<span class="plain-syntax"> ---- scan_directory 94 objects, 388032 bytes</span>
<span class="plain-syntax"> 0.1% local_variable_array 47 x 100 = 4700 objects, 452704 bytes</span>
<span class="plain-syntax"> ---- verb_usage 1128 objects, 388032 bytes</span>
<span class="plain-syntax"> ---- scan_directory 94 objects, 388032 bytes</span>
<span class="plain-syntax"> ---- rule 469 objects, 367696 bytes</span>
<span class="plain-syntax"> ---- verb_form 386 objects, 345856 bytes</span>
<span class="plain-syntax"> ---- noun 2360 objects, 283200 bytes</span>
<span class="plain-syntax"> ---- compilation_subtask 3338 objects, 267040 bytes</span>
<span class="plain-syntax"> ---- noun 2380 objects, 285600 bytes</span>
<span class="plain-syntax"> ---- compilation_subtask 3346 objects, 267680 bytes</span>
<span class="plain-syntax"> ---- inference_subject 665 objects, 260680 bytes</span>
<span class="plain-syntax"> ---- inter_annotation_array 1 x 8192 objects, 196640 bytes</span>
<span class="plain-syntax"> ---- hierarchy_location 1116 objects, 169632 bytes</span>
<span class="plain-syntax"> ---- binary_predicate 321 objects, 169488 bytes</span>
<span class="plain-syntax"> ---- hierarchy_location 1103 objects, 167656 bytes</span>
<span class="plain-syntax"> ---- linguistic_stock_item 3292 objects, 158016 bytes</span>
<span class="plain-syntax"> ---- linguistic_stock_item 3316 objects, 159168 bytes</span>
<span class="plain-syntax"> ---- rule_family_data 400 objects, 147200 bytes</span>
<span class="plain-syntax"> ---- nonterminal 760 objects, 139840 bytes</span>
<span class="plain-syntax"> ---- nascent_array 2104 objects, 134656 bytes</span>
<span class="plain-syntax"> ---- nascent_array 2126 objects, 136064 bytes</span>
<span class="plain-syntax"> ---- documentation_ref 1273 objects, 112024 bytes</span>
<span class="plain-syntax"> ---- inference 1703 objects, 108992 bytes</span>
<span class="plain-syntax"> ---- imperative_defn 1376 objects, 99072 bytes</span>
<span class="plain-syntax"> ---- inter_tree 6 objects, 98304 bytes</span>
<span class="plain-syntax"> ---- noun_usage 2402 objects, 96080 bytes</span>
<span class="plain-syntax"> ---- anl_entry_array 2 x 1000 = 2000 objects, 96064 bytes</span>
<span class="plain-syntax"> ---- imperative_defn 1334 objects, 96048 bytes</span>
<span class="plain-syntax"> ---- noun_usage 2382 objects, 95280 bytes</span>
<span class="plain-syntax"> ---- preposition 273 objects, 87360 bytes</span>
<span class="plain-syntax"> ---- lexical_cluster 2517 objects, 80544 bytes</span>
<span class="plain-syntax"> ---- pcalc_term_array 2 x 1000 = 2000 objects, 80064 bytes</span>
<span class="plain-syntax"> ---- lexical_cluster 2493 objects, 79776 bytes</span>
<span class="plain-syntax"> ---- kind_variable_declaration 1652 objects, 79296 bytes</span>
<span class="plain-syntax"> ---- inter_schema 1503 objects, 72144 bytes</span>
<span class="plain-syntax"> ---- inter_schema 1508 objects, 72384 bytes</span>
<span class="plain-syntax"> ---- label_namespace 1468 objects, 70464 bytes</span>
<span class="plain-syntax"> ---- rulebook 407 objects, 68376 bytes</span>
<span class="plain-syntax"> ---- spatial_data 670 objects, 64320 bytes</span>
<span class="plain-syntax"> ---- kind_macro_definition 9 objects, 62280 bytes</span>
<span class="plain-syntax"> ---- booking 860 objects, 61920 bytes</span>
<span class="plain-syntax"> ---- scenes_rcd_data 1880 objects, 60160 bytes</span>
<span class="plain-syntax"> ---- actions_rcd_data 1880 objects, 60160 bytes</span>
<span class="plain-syntax"> ---- command_grammar 130 objects, 58240 bytes</span>
<span class="plain-syntax"> ---- kind_constructor 77 objects, 57904 bytes</span>
<span class="plain-syntax"> ---- actions_rcd_data 1796 objects, 57472 bytes</span>
<span class="plain-syntax"> ---- scenes_rcd_data 1796 objects, 57472 bytes</span>
<span class="plain-syntax"> ---- table 7 objects, 56672 bytes</span>
<span class="plain-syntax"> ---- pcalc_func_array 1 x 1000 objects, 56032 bytes</span>
<span class="plain-syntax"> ---- cg_line 230 objects, 53360 bytes</span>
@ -204,14 +204,14 @@ represent less than 1/1000th of the total.
<span class="plain-syntax"> ---- property_inference_data 1315 objects, 52600 bytes</span>
<span class="plain-syntax"> ---- response_message 407 objects, 52096 bytes</span>
<span class="plain-syntax"> ---- ap_clause_array 2 x 400 = 800 objects, 51264 bytes</span>
<span class="plain-syntax"> ---- inter_node_list 765 objects, 42840 bytes</span>
<span class="plain-syntax"> ---- inter_node_list 769 objects, 43064 bytes</span>
<span class="plain-syntax"> ---- text_substitution 436 objects, 41856 bytes</span>
<span class="plain-syntax"> ---- anl_clause_array 1 x 1000 objects, 40032 bytes</span>
<span class="plain-syntax"> ---- activity_list_array 1 x 1000 objects, 40032 bytes</span>
<span class="plain-syntax"> ---- anl_clause_array 1 x 1000 objects, 40032 bytes</span>
<span class="plain-syntax"> ---- to_family_data 496 objects, 39680 bytes</span>
<span class="plain-syntax"> ---- shared_variable_access_list_array 12 x 100 = 1200 objects, 38784 bytes</span>
<span class="plain-syntax"> ---- parsing_data 670 objects, 37520 bytes</span>
<span class="plain-syntax"> ---- to_family_data 458 objects, 36640 bytes</span>
<span class="plain-syntax"> ---- heading 195 objects, 35880 bytes</span>
<span class="plain-syntax"> ---- heading 198 objects, 36432 bytes</span>
<span class="plain-syntax"> ---- production_list 617 objects, 34552 bytes</span>
<span class="plain-syntax"> ---- counting_data 670 objects, 32160 bytes</span>
<span class="plain-syntax"> ---- regions_data 670 objects, 32160 bytes</span>
@ -231,17 +231,18 @@ represent less than 1/1000th of the total.
<span class="plain-syntax"> ---- instance 167 objects, 17368 bytes</span>
<span class="plain-syntax"> ---- parse_node_tree 20 objects, 17280 bytes</span>
<span class="plain-syntax"> ---- understanding_reference_array 2 x 100 = 200 objects, 16064 bytes</span>
<span class="plain-syntax"> ---- linked_list_item_array 1 x 1000 objects, 16032 bytes</span>
<span class="plain-syntax"> ---- action_name_list_array 1 x 1000 objects, 16032 bytes</span>
<span class="plain-syntax"> ---- match_avinue_array 1 x 1000 objects, 16032 bytes</span>
<span class="plain-syntax"> ---- adjective 133 objects, 14896 bytes</span>
<span class="plain-syntax"> ---- to_phrase_request 55 objects, 14520 bytes</span>
<span class="plain-syntax"> ---- action_name_list_array 1 x 1000 objects, 16032 bytes</span>
<span class="plain-syntax"> ---- linked_list_item_array 1 x 1000 objects, 16032 bytes</span>
<span class="plain-syntax"> ---- to_phrase_request 59 objects, 15576 bytes</span>
<span class="plain-syntax"> ---- adjective 137 objects, 15344 bytes</span>
<span class="plain-syntax"> ---- booking_list 407 objects, 13024 bytes</span>
<span class="plain-syntax"> ---- adjective_iname_holder 314 objects, 12560 bytes</span>
<span class="plain-syntax"> ---- adjective_iname_holder 320 objects, 12800 bytes</span>
<span class="plain-syntax"> ---- pathname 296 objects, 11840 bytes</span>
<span class="plain-syntax"> ---- uniqueness_count 453 objects, 10872 bytes</span>
<span class="plain-syntax"> ---- uniqueness_count 454 objects, 10896 bytes</span>
<span class="plain-syntax"> ---- stopwatch_timer 114 objects, 9120 bytes</span>
<span class="plain-syntax"> ---- filename 207 objects, 8280 bytes</span>
<span class="plain-syntax"> ---- equation_node 68 objects, 7616 bytes</span>
<span class="plain-syntax"> ---- hierarchy_attachment_point 77 objects, 7392 bytes</span>
<span class="plain-syntax"> ---- understanding_item_array 3 x 100 = 300 objects, 7296 bytes</span>
<span class="plain-syntax"> ---- shared_variable_array 1 x 100 objects, 7232 bytes</span>
@ -264,14 +265,15 @@ represent less than 1/1000th of the total.
<span class="plain-syntax"> ---- method_set 103 objects, 3296 bytes</span>
<span class="plain-syntax"> ---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes</span>
<span class="plain-syntax"> ---- inform_extension 19 objects, 3192 bytes</span>
<span class="plain-syntax"> ---- definition 44 objects, 3168 bytes</span>
<span class="plain-syntax"> ---- compatibility_specification 65 objects, 3120 bytes</span>
<span class="plain-syntax"> ---- either_or_property_data 62 objects, 2976 bytes</span>
<span class="plain-syntax"> ---- definition 40 objects, 2880 bytes</span>
<span class="plain-syntax"> ---- use_option 29 objects, 2552 bytes</span>
<span class="plain-syntax"> ---- parentage_inference_data 79 objects, 2528 bytes</span>
<span class="plain-syntax"> ---- part_of_inference_data 79 objects, 2528 bytes</span>
<span class="plain-syntax"> ---- parentage_inference_data 79 objects, 2528 bytes</span>
<span class="plain-syntax"> ---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes</span>
<span class="plain-syntax"> ---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes</span>
<span class="plain-syntax"> ---- equation_symbol 30 objects, 2400 bytes</span>
<span class="plain-syntax"> ---- inter_construct 30 objects, 2400 bytes</span>
<span class="plain-syntax"> ---- semver_range 22 objects, 2288 bytes</span>
<span class="plain-syntax"> ---- pipeline_step 16 objects, 2176 bytes</span>
@ -279,39 +281,41 @@ represent less than 1/1000th of the total.
<span class="plain-syntax"> ---- pronoun_usage 42 objects, 1680 bytes</span>
<span class="plain-syntax"> ---- table_contribution_array 1 x 100 objects, 1632 bytes</span>
<span class="plain-syntax"> ---- plugin 25 objects, 1600 bytes</span>
<span class="plain-syntax"> ---- cached_kind_declaration 37 objects, 1480 bytes</span>
<span class="plain-syntax"> ---- cached_kind_declaration 39 objects, 1560 bytes</span>
<span class="plain-syntax"> ---- noun_filter_token 22 objects, 1408 bytes</span>
<span class="plain-syntax"> ---- inter_tree_location_list 34 objects, 1360 bytes</span>
<span class="plain-syntax"> ---- inter_annotation_form 34 objects, 1360 bytes</span>
<span class="plain-syntax"> ---- special_meaning_holder 33 objects, 1320 bytes</span>
<span class="plain-syntax"> ---- table_column 16 objects, 1280 bytes</span>
<span class="plain-syntax"> ---- constant_phrase 20 objects, 1280 bytes</span>
<span class="plain-syntax"> ---- build_script 39 objects, 1248 bytes</span>
<span class="plain-syntax"> ---- invocation_options_array 1 x 100 objects, 1224 bytes</span>
<span class="plain-syntax"> ---- direction_inference_data 30 objects, 1200 bytes</span>
<span class="plain-syntax"> ---- target_vm 8 objects, 1152 bytes</span>
<span class="plain-syntax"> ---- tree_inventory_item 28 objects, 1120 bytes</span>
<span class="plain-syntax"> ---- runtime_kind_structure 13 objects, 1040 bytes</span>
<span class="plain-syntax"> ---- quantifier 16 objects, 1024 bytes</span>
<span class="plain-syntax"> ---- pipeline_stage 21 objects, 1008 bytes</span>
<span class="plain-syntax"> ---- named_rulebook_outcome 15 objects, 960 bytes</span>
<span class="plain-syntax"> ---- submodule_identity 30 objects, 960 bytes</span>
<span class="plain-syntax"> ---- code_generation 1 object, 888 bytes</span>
<span class="plain-syntax"> ---- inbuild_requirement 22 objects, 880 bytes</span>
<span class="plain-syntax"> ---- runtime_kind_structure 11 objects, 880 bytes</span>
<span class="plain-syntax"> ---- control_structure_phrase 12 objects, 864 bytes</span>
<span class="plain-syntax"> ---- generated_segment 27 objects, 864 bytes</span>
<span class="plain-syntax"> ---- control_structure_phrase 12 objects, 864 bytes</span>
<span class="plain-syntax"> ---- cached_understanding 21 objects, 840 bytes</span>
<span class="plain-syntax"> ---- phrase_option_array 1 x 100 objects, 824 bytes</span>
<span class="plain-syntax"> ---- inter_data_type 14 objects, 784 bytes</span>
<span class="plain-syntax"> ---- internal_test 15 objects, 720 bytes</span>
<span class="plain-syntax"> ---- inform_language 6 objects, 672 bytes</span>
<span class="plain-syntax"> ---- I6T_intervention 8 objects, 640 bytes</span>
<span class="plain-syntax"> ---- inter_warehouse_room 10 objects, 640 bytes</span>
<span class="plain-syntax"> ---- relation_guard 5 objects, 640 bytes</span>
<span class="plain-syntax"> ---- inter_warehouse_room 10 objects, 640 bytes</span>
<span class="plain-syntax"> ---- inbuild_search_result 15 objects, 600 bytes</span>
<span class="plain-syntax"> ---- rulebook_outcome 17 objects, 544 bytes</span>
<span class="plain-syntax"> ---- small_word_set 11 objects, 528 bytes</span>
<span class="plain-syntax"> ---- implication 13 objects, 520 bytes</span>
<span class="plain-syntax"> ---- inform_kit 5 objects, 520 bytes</span>
<span class="plain-syntax"> ---- equation 4 objects, 480 bytes</span>
<span class="plain-syntax"> ---- inference_family 11 objects, 440 bytes</span>
<span class="plain-syntax"> ---- i6_memory_setting 13 objects, 416 bytes</span>
<span class="plain-syntax"> ---- module_package 10 objects, 400 bytes</span>
@ -319,16 +323,16 @@ represent less than 1/1000th of the total.
<span class="plain-syntax"> ---- article_usage 8 objects, 384 bytes</span>
<span class="plain-syntax"> ---- source_file 5 objects, 360 bytes</span>
<span class="plain-syntax"> ---- inbuild_genre 7 objects, 336 bytes</span>
<span class="plain-syntax"> ---- pronoun 8 objects, 320 bytes</span>
<span class="plain-syntax"> ---- door_dir_notice 5 objects, 320 bytes</span>
<span class="plain-syntax"> ---- grammatical_category 8 objects, 320 bytes</span>
<span class="plain-syntax"> ---- door_dir_notice 5 objects, 320 bytes</span>
<span class="plain-syntax"> ---- pronoun 8 objects, 320 bytes</span>
<span class="plain-syntax"> ---- tree_inventory 1 object, 312 bytes</span>
<span class="plain-syntax"> ---- up_family 9 objects, 288 bytes</span>
<span class="plain-syntax"> ---- build_step 4 objects, 288 bytes</span>
<span class="plain-syntax"> ---- up_family 9 objects, 288 bytes</span>
<span class="plain-syntax"> ---- contents_entry 7 objects, 280 bytes</span>
<span class="plain-syntax"> ---- door_to_notice 5 objects, 280 bytes</span>
<span class="plain-syntax"> ---- compilation_unit 5 objects, 280 bytes</span>
<span class="plain-syntax"> ---- explicit_bp_data 5 objects, 280 bytes</span>
<span class="plain-syntax"> ---- door_to_notice 5 objects, 280 bytes</span>
<span class="plain-syntax"> ---- verb_usage_tier 5 objects, 240 bytes</span>
<span class="plain-syntax"> ---- adjective_meaning_family 7 objects, 224 bytes</span>
<span class="plain-syntax"> ---- test_scenario 1 object, 216 bytes</span>
@ -342,8 +346,8 @@ represent less than 1/1000th of the total.
<span class="plain-syntax"> ---- kov_value_stick 3 objects, 168 bytes</span>
<span class="plain-syntax"> ---- link_instruction 4 objects, 160 bytes</span>
<span class="plain-syntax"> ---- inter_architecture 4 objects, 160 bytes</span>
<span class="plain-syntax"> ---- imperative_defn_family 4 objects, 160 bytes</span>
<span class="plain-syntax"> ---- inference_subject_family 5 objects, 160 bytes</span>
<span class="plain-syntax"> ---- imperative_defn_family 4 objects, 160 bytes</span>
<span class="plain-syntax"> ---- codegen_pipeline 1 object, 128 bytes</span>
<span class="plain-syntax"> ---- element_activation 4 objects, 128 bytes</span>
<span class="plain-syntax"> ---- inbuild_nest 3 objects, 120 bytes</span>
@ -362,27 +366,27 @@ represent less than 1/1000th of the total.
<span class="plain-syntax"> ---- loop_over_scope 1 object, 40 bytes</span>
<span class="plain-syntax"> ---- I6_generation_data 1 object, 24 bytes</span>
<span class="plain-syntax">38.4% was used for memory not allocated for objects:</span>
<span class="plain-syntax">38.3% was used for memory not allocated for objects:</span>
<span class="plain-syntax"> 19.1% text stream storage 75431976 bytes in 530100 claims</span>
<span class="plain-syntax"> 4.5% dictionary storage 18098176 bytes in 33115 claims</span>
<span class="plain-syntax"> 19.2% text stream storage 76356116 bytes in 531929 claims</span>
<span class="plain-syntax"> 4.5% dictionary storage 18177024 bytes in 33269 claims</span>
<span class="plain-syntax"> ---- sorting 744 bytes in 3 claims</span>
<span class="plain-syntax"> 1.8% source text 7200000 bytes in 3 claims</span>
<span class="plain-syntax"> 2.7% source text details 10800000 bytes in 2 claims</span>
<span class="plain-syntax"> ---- documentation fragments 262144 bytes in 1 claim</span>
<span class="plain-syntax"> ---- linguistic stock array 81920 bytes in 2 claims</span>
<span class="plain-syntax"> ---- small word set array 105600 bytes in 22 claims</span>
<span class="plain-syntax"> 1.0% inter symbols storage 4157936 bytes in 27546 claims</span>
<span class="plain-syntax"> 1.0% inter symbols storage 4175472 bytes in 27683 claims</span>
<span class="plain-syntax"> 4.2% inter bytecode storage 16802804 bytes in 14 claims</span>
<span class="plain-syntax"> 4.1% inter links storage 16174208 bytes in 266 claims</span>
<span class="plain-syntax"> 4.0% inter links storage 16174208 bytes in 266 claims</span>
<span class="plain-syntax"> ---- inter tree location list storage 191232 bytes in 32 claims</span>
<span class="plain-syntax"> 0.4% instance-of-kind counting 1695204 bytes in 1 claim</span>
<span class="plain-syntax"> ---- compilation workspace for objects 21856 bytes in 25 claims</span>
<span class="plain-syntax"> ---- lists for type-checking invocations 16000 bytes in 1 claim</span>
<span class="plain-syntax"> ---- code generation workspace for objects 9600 bytes in 9 claims</span>
<span class="plain-syntax"> ---- emitter array storage 160512 bytes in 2042 claims</span>
<span class="plain-syntax"> ---- code generation workspace for objects 9648 bytes in 9 claims</span>
<span class="plain-syntax"> ---- emitter array storage 161920 bytes in 2064 claims</span>
<span class="plain-syntax">18.5% was overhead - 73137280 bytes = 71423K = 69 MB</span>
<span class="plain-syntax">18.8% was overhead - 75014384 bytes = 73256K = 71 MB</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. Preform grammar. </b>The full annotated description of the Preform grammar (see <a href="../words-module/4-ap.html" class="internal">About Preform (in words)</a>),
with optimisation details and hit/miss statistics added, is also long: it's
@ -391,31 +395,31 @@ sample, showing the nonterminal used to parse literals in Inform 7 source text:
</p>
<pre class="undisplayed-code all-displayed-code code-font">
<span class="plain-syntax">&lt;s-literal&gt; hits 2075/23610 nti 14 constraint (none) extremes [1, infinity)</span>
<span class="plain-syntax">&lt;s-literal&gt; hits 2097/23838 nti 14 constraint (none) extremes [1, infinity)</span>
<span class="plain-syntax"> English:</span>
<span class="plain-syntax"> (@1)&lt;cardinal-number&gt;=1 </span>
<span class="plain-syntax"> (hits 160/160) (matched: '100') constraint CS = {r0} extremes [1, 1]</span>
<span class="plain-syntax"> (hits 171/171) (matched: '100') constraint CS = {r0} extremes [1, 1]</span>
<span class="plain-syntax"> (@1)minus (@2)&lt;cardinal-number&gt;=1 </span>
<span class="plain-syntax"> (hits 0/1798) constraint DS = {14} extremes [2, 2]</span>
<span class="plain-syntax"> (hits 0/1806) constraint DS = {14} extremes [2, 2]</span>
<span class="plain-syntax"> (@1)&lt;quoted-text&gt;=1 (@2)( (@3)&lt;response-letter&gt;=2 (@4)) </span>
<span class="plain-syntax"> (hits 273/830) (matched: '"[current item from the multiple object list]: [run paragraph on]" ( a )') constraint DS = {14} extremes [4, 4]</span>
<span class="plain-syntax"> (@1)&lt;quoted-text&gt;=1 </span>
<span class="plain-syntax"> (hits 1564/5532) (matched: 'Represents geographical locations, both indoor</span>
<span class="plain-syntax"> (hits 1564/5543) (matched: 'Represents geographical locations, both indoor</span>
<span class="plain-syntax"> and outdoor, which are not necessarily areas in a building. A player in one</span>
<span class="plain-syntax"> room is mostly unable to sense, or interact with, anything in a different room.</span>
<span class="plain-syntax"> Rooms are arranged in a map.') constraint (none) extremes [1, 1]</span>
<span class="plain-syntax"> &lt;s-literal-real-number&gt;=1 </span>
<span class="plain-syntax"> (hits 0/9808) constraint (none) extremes [1, infinity)</span>
<span class="plain-syntax"> (hits 11/9911) (matched: 'plus infinity') constraint (none) extremes [1, infinity)</span>
<span class="plain-syntax"> (@1)&lt;s-literal-truth-state&gt;=1 </span>
<span class="plain-syntax"> (hits 78/196) (matched: 'false') constraint CS = {8} extremes [1, 1]</span>
<span class="plain-syntax"> &lt;s-literal-list&gt;=1 </span>
<span class="plain-syntax"> (hits 0/3197) constraint DS = {10} extremes [2, infinity)</span>
<span class="plain-syntax"> (hits 0/3281) constraint DS = {10} extremes [2, infinity)</span>
<span class="plain-syntax"> (@1)unicode &lt;s-unicode-character&gt;=1 </span>
<span class="plain-syntax"> (hits 0/4175) constraint DS = {14} extremes [2, infinity)</span>
<span class="plain-syntax"> (hits 0/4183) constraint DS = {14} extremes [2, infinity)</span>
<span class="plain-syntax"> &lt;s-literal-time&gt;=1 </span>
<span class="plain-syntax"> (hits 0/3738) constraint DW = {11, 12, 13} extremes [2, 5]</span>
<span class="plain-syntax"> &lt;s-literal-unit-notation&gt;=1 </span>
<span class="plain-syntax"> (hits 0/9730) constraint (none) extremes [1, infinity)</span>
<span class="plain-syntax"> (hits 0/9822) constraint (none) extremes [1, infinity)</span>
</pre>
<p class="commentary">The unabridged grammar is here:
</p>
@ -425,7 +429,7 @@ sample, showing the nonterminal used to parse literals in Inform 7 source text:
<a href="preform-diagnostics.txt" download>
<button class="download-button">
<img src="../docs-assets/download.png" alt="download icon" height=16 width=16>
Download <b>preform-diagnostics.txt</b> (Preform diagnostics file, 390.6kB)
Download <b>preform-diagnostics.txt</b> (Preform diagnostics file, 391.1kB)
</button>
</a>
</p>
@ -470,8 +474,8 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'asking for information'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'out of world'</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out asking for information' {unit: 4} {imperative definition: 756}</span>
<span class="plain-syntax"> IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 757}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out asking for information' {unit: 4} {imperative definition: 798}</span>
<span class="plain-syntax"> IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 799}</span>
<span class="plain-syntax"> HEADING_NT'section 1 - errands' {heading 5} {under: H5'section 1 - errands'} {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'the current actor is a person which varies' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
@ -481,8 +485,8 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'current owner' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'current owner' {nonlocal: 'current owner'(var)person}} {created here}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'person which varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: &lt;&lt; kind=people variable-pointer(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 758}</span>
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 759}</span>
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 800}</span>
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 801}</span>
<span class="plain-syntax"> SENTENCE_NT'a person can be active or passive' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'can be' {verb 'be able to be' s/p 3p act IS_TENSE +ve} {special meaning: can-be}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'a person' {refined} {refers: infs'person'} {creation: &lt;&lt; kind=person(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
@ -498,34 +502,34 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'are' {verb 'be' 3p p act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'character movement rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT {kind: rulebook} {rulebook: character movement}} {created here}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: &lt;&lt; kind=rulebook(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> IMPERATIVE_NT'the first character movement rule' {unit: 4} {imperative definition: 760}</span>
<span class="plain-syntax"> IMPERATIVE_NT'a character movement rule' {unit: 4} {imperative definition: 761}</span>
<span class="plain-syntax"> IMPERATIVE_NT'a character movement rule' {unit: 4} {imperative definition: 762}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to decide whether movement has not yet occurred' {unit: 4} {imperative definition: 763}</span>
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 764}</span>
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 765}</span>
<span class="plain-syntax"> IMPERATIVE_NT'the first character movement rule' {unit: 4} {imperative definition: 802}</span>
<span class="plain-syntax"> IMPERATIVE_NT'a character movement rule' {unit: 4} {imperative definition: 803}</span>
<span class="plain-syntax"> IMPERATIVE_NT'a character movement rule' {unit: 4} {imperative definition: 804}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to decide whether movement has not yet occurred' {unit: 4} {imperative definition: 805}</span>
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 806}</span>
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 807}</span>
<span class="plain-syntax"> SENTENCE_NT'the shopowner rules is a rulebook' {unit: 4} {classified} {clears pronouns}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'shopowner rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT {kind: rulebook} {rulebook: shopowner}} {created here}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: &lt;&lt; kind=rulebook(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> IMPERATIVE_NT'a shopowner rule' {unit: 4} {imperative definition: 766}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone closing a door when the person asked owns the' {unit: 4} {imperative definition: 767}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report vanessa closing the metal door when the metal door is' {unit: 4} {imperative definition: 768}</span>
<span class="plain-syntax"> IMPERATIVE_NT'a shopowner rule' {unit: 4} {imperative definition: 769}</span>
<span class="plain-syntax"> IMPERATIVE_NT'a shopowner rule' {unit: 4} {imperative definition: 808}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone closing a door when the person asked owns the' {unit: 4} {imperative definition: 809}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report vanessa closing the metal door when the metal door is' {unit: 4} {imperative definition: 810}</span>
<span class="plain-syntax"> IMPERATIVE_NT'a shopowner rule' {unit: 4} {imperative definition: 811}</span>
<span class="plain-syntax"> SENTENCE_NT'filing is an action applying to one thing' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'filing'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to one thing'</span>
<span class="plain-syntax"> IMPERATIVE_NT'before someone filing something which is not carried by the ' {unit: 4} {imperative definition: 770}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone filing' {unit: 4} {imperative definition: 771}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone filing' {unit: 4} {imperative definition: 772}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before someone filing something which is not carried by the ' {unit: 4} {imperative definition: 812}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone filing' {unit: 4} {imperative definition: 813}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone filing' {unit: 4} {imperative definition: 814}</span>
<span class="plain-syntax"> SENTENCE_NT'the shopper rules is a rulebook' {unit: 4} {classified} {clears pronouns}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'shopper rules' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT {kind: rulebook} {rulebook: shopper}} {created here}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'rulebook' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values based rulebook producing values'-k} {creation: &lt;&lt; kind=rulebook(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> IMPERATIVE_NT'a shopper rule' {unit: 4} {imperative definition: 773}</span>
<span class="plain-syntax"> IMPERATIVE_NT'a shopper rule' {unit: 4} {imperative definition: 774}</span>
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 775}</span>
<span class="plain-syntax"> IMPERATIVE_NT'a shopper rule' {unit: 4} {imperative definition: 815}</span>
<span class="plain-syntax"> IMPERATIVE_NT'a shopper rule' {unit: 4} {imperative definition: 816}</span>
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 817}</span>
<span class="plain-syntax"> DEFN_CONT_NT'a room is air-conditioned' {unit: 4}</span>
<span class="plain-syntax"> CODE_BLOCK_NT</span>
<span class="plain-syntax"> CODE_BLOCK_NT {control structure: IF}</span>
@ -583,8 +587,8 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> COMMON_NOUN_NT'artwork' {indefinite 'an' n/m/f nom/acc s} {refined} {creation: &lt;&lt; kind=artwork(x) &gt;&gt;} {refers: infs'artwork'} {eval: TEST_VALUE_NT} {created here}</span>
<span class="plain-syntax"> KIND_NT'kind of thing' {refined} {refers: infs'thing'}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'thing' {refined} {refers: infs'thing'} {creation: &lt;&lt; kind=thing(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of an artwork' {unit: 4} {imperative definition: 776}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after printing the name of an artwork' {unit: 4} {imperative definition: 777}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of an artwork' {unit: 4} {imperative definition: 818}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after printing the name of an artwork' {unit: 4} {imperative definition: 819}</span>
<span class="plain-syntax"> SENTENCE_NT'an artwork can be submitted or reserved' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'can be' {verb 'be able to be' s/p 3p act IS_TENSE +ve} {special meaning: can-be}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'an artwork' {refined} {refers: infs'artwork'} {creation: &lt;&lt; kind=artwork(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
@ -597,49 +601,49 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> COMMON_NOUN_NT'book' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: &lt;&lt; kind=book(x) &gt;&gt;} {refers: infs'book'} {eval: TEST_VALUE_NT} {created here}</span>
<span class="plain-syntax"> KIND_NT'kind of artwork' {refined} {refers: infs'artwork'}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'artwork' {refined} {refers: infs'artwork'} {creation: &lt;&lt; kind=artwork(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a book when the person asked is not' {unit: 4} {imperative definition: 778}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a book' {unit: 4} {imperative definition: 779}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone resolving a book' {unit: 4} {imperative definition: 780}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before listing contents' {unit: 4} {imperative definition: 781}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before grouping together books' {unit: 4} {imperative definition: 782}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a book when the person asked is not' {unit: 4} {imperative definition: 820}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a book' {unit: 4} {imperative definition: 821}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone resolving a book' {unit: 4} {imperative definition: 822}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before listing contents' {unit: 4} {imperative definition: 823}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before grouping together books' {unit: 4} {imperative definition: 824}</span>
<span class="plain-syntax"> SENTENCE_NT'a stamped envelope is a kind of thing' {unit: 4} {classified} {interpretation of subject: infs'book'}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'stamped envelope' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: &lt;&lt; kind=stamped envelope(x) &gt;&gt;} {refers: infs'stamped envelope'} {eval: TEST_VALUE_NT} {created here}</span>
<span class="plain-syntax"> KIND_NT'kind of thing' {refined} {refers: infs'thing'}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'thing' {refined} {refers: infs'thing'} {creation: &lt;&lt; kind=thing(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a stamped envelope when the person ' {unit: 4} {imperative definition: 783}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a stamped envelope' {unit: 4} {imperative definition: 784}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone resolving a stamped envelope' {unit: 4} {imperative definition: 785}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of someone resolving a stamped envelope when the per' {unit: 4} {imperative definition: 786}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a stamped envelope when the person ' {unit: 4} {imperative definition: 825}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a stamped envelope' {unit: 4} {imperative definition: 826}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone resolving a stamped envelope' {unit: 4} {imperative definition: 827}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of someone resolving a stamped envelope when the per' {unit: 4} {imperative definition: 828}</span>
<span class="plain-syntax"> SENTENCE_NT'a dvd is a kind of artwork' {unit: 4} {classified} {interpretation of subject: infs'stamped envelope'}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'dvd' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: &lt;&lt; kind=dvd(x) &gt;&gt;} {refers: infs'dvd'} {eval: TEST_VALUE_NT} {created here}</span>
<span class="plain-syntax"> KIND_NT'kind of artwork' {refined} {refers: infs'artwork'}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'artwork' {refined} {refers: infs'artwork'} {creation: &lt;&lt; kind=artwork(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a dvd when the person asked is not ' {unit: 4} {imperative definition: 787}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a dvd' {unit: 4} {imperative definition: 788}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone resolving a dvd' {unit: 4} {imperative definition: 789}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of someone resolving a dvd when the person asked car' {unit: 4} {imperative definition: 790}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before listing contents' {unit: 4} {imperative definition: 791}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before grouping together dvds' {unit: 4} {imperative definition: 792}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a dvd when the person asked is not ' {unit: 4} {imperative definition: 829}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a dvd' {unit: 4} {imperative definition: 830}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone resolving a dvd' {unit: 4} {imperative definition: 831}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of someone resolving a dvd when the person asked car' {unit: 4} {imperative definition: 832}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before listing contents' {unit: 4} {imperative definition: 833}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before grouping together dvds' {unit: 4} {imperative definition: 834}</span>
<span class="plain-syntax"> SENTENCE_NT'approaching is an action applying to one thing' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'approaching'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to one thing'</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone approaching' {unit: 4} {imperative definition: 793}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone approaching' {unit: 4} {imperative definition: 835}</span>
<span class="plain-syntax"> SENTENCE_NT'a coupon is a kind of thing' {unit: 4} {classified} {interpretation of subject: infs'dvd'}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'coupon' {indefinite 'a' n/m/f nom/acc s} {refined} {creation: &lt;&lt; kind=coupon(x) &gt;&gt;} {refers: infs'coupon'} {eval: TEST_VALUE_NT} {created here}</span>
<span class="plain-syntax"> KIND_NT'kind of thing' {refined} {refers: infs'thing'}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'thing' {refined} {refers: infs'thing'} {creation: &lt;&lt; kind=thing(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a coupon' {unit: 4} {imperative definition: 794}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a coupon' {unit: 4} {imperative definition: 836}</span>
<span class="plain-syntax"> SENTENCE_NT'the block giving rule is not listed in any rulebook' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {rule placement sense: negative} {special meaning: rule-listed-in}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'the block giving rule'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'in any rulebook'</span>
<span class="plain-syntax"> IMPERATIVE_NT'check giving something to someone ( this is the block player' {unit: 4} {imperative definition: 795}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a coupon when the person asked is n' {unit: 4} {imperative definition: 796}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after someone giving a coupon to vanessa' {unit: 4} {imperative definition: 797}</span>
<span class="plain-syntax"> IMPERATIVE_NT'check giving something to someone ( this is the block player' {unit: 4} {imperative definition: 837}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a coupon when the person asked is n' {unit: 4} {imperative definition: 838}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after someone giving a coupon to vanessa' {unit: 4} {imperative definition: 839}</span>
<span class="plain-syntax"> SENTENCE_NT'infection color is a kind of value' {unit: 4} {classified} {interpretation of subject: infs'coupon'}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'infection color' {refined} {creation: &lt;&lt; kind=infection color(x) &gt;&gt;} {refers: infs'object'-k} {eval: TEST_VALUE_NT} {created here}</span>
@ -699,7 +703,7 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> AND_NT',' {refined}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'saffron silk' {refined} {refers: infs'saffron silk'} {eval: CONSTANT_NT'saffron silk' {kind: infection color} {instance: I86'saffron silk'[infection color]} {enumeration: 25}} {created here}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'cookie dough cream' {refined} {refers: infs'cookie dough cream'} {eval: CONSTANT_NT'cookie dough cream' {kind: infection color} {instance: I87'cookie dough cream'[infection color]} {enumeration: 26}} {created here}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to say list of flavors' {unit: 4} {imperative definition: 798}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to say list of flavors' {unit: 4} {imperative definition: 840}</span>
<span class="plain-syntax"> SENTENCE_NT'understand "ask vanessa for [flavored ice cream]" as buying ' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'"ask vanessa for [flavored ice cream]"'</span>
@ -712,8 +716,8 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'buying the flavor'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to one infection color'</span>
<span class="plain-syntax"> IMPERATIVE_NT'check buying the flavor' {unit: 4} {imperative definition: 799}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out buying the flavor' {unit: 4} {imperative definition: 800}</span>
<span class="plain-syntax"> IMPERATIVE_NT'check buying the flavor' {unit: 4} {imperative definition: 841}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out buying the flavor' {unit: 4} {imperative definition: 842}</span>
<span class="plain-syntax"> SENTENCE_NT'understand "ice cream" or "cream" or "ice" or "sherbet" or "' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'"ice cream" or "cream" or "ice" or "sherbet" or "sorbet"'</span>
@ -747,12 +751,12 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'the infection color property'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'referring to an ice cream cone'</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving an ice cream cone' {unit: 4} {imperative definition: 801}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of someone eating a fresh ice cream cone' {unit: 4} {imperative definition: 802}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone eating an ice cream cone' {unit: 4} {imperative definition: 803}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of an ice cream cone' {unit: 4} {imperative definition: 804}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving an ice cream cone' {unit: 4} {imperative definition: 843}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of someone eating a fresh ice cream cone' {unit: 4} {imperative definition: 844}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone eating an ice cream cone' {unit: 4} {imperative definition: 845}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of an ice cream cone' {unit: 4} {imperative definition: 846}</span>
<span class="plain-syntax"> HEADING_NT'section 2 - infection rules' {heading 5} {under: H5'section 2 - infection rules'} {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'this is the infection rule' {unit: 4} {imperative definition: 805}</span>
<span class="plain-syntax"> IMPERATIVE_NT'this is the infection rule' {unit: 4} {imperative definition: 847}</span>
<span class="plain-syntax"> SENTENCE_NT'a person can be infected or clean' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'can be' {verb 'be able to be' s/p 3p act IS_TENSE +ve} {special meaning: can-be}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'a person' {refined} {refers: infs'person'} {creation: &lt;&lt; kind=person(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
@ -765,11 +769,11 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> COMMON_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'person'} {creation: &lt;&lt; kind=person(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> ALLOWED_NT'has' {refined}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'infection color' {indefinite 'an' n/m/f nom/acc s} {refined}</span>
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 806}</span>
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 807}</span>
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 808}</span>
<span class="plain-syntax"> IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 809}</span>
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 810}</span>
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 848}</span>
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 849}</span>
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 850}</span>
<span class="plain-syntax"> IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 851}</span>
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 852}</span>
<span class="plain-syntax"> SENTENCE_NT'understand "sneeze on [something]" as sneezing on' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'"sneeze on [something]"'</span>
@ -778,11 +782,11 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'sneezing on'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to one thing'</span>
<span class="plain-syntax"> IMPERATIVE_NT'check sneezing on' {unit: 4} {imperative definition: 811}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out sneezing on' {unit: 4} {imperative definition: 812}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone sneezing on' {unit: 4} {imperative definition: 813}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report sneezing on' {unit: 4} {imperative definition: 814}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone sneezing on' {unit: 4} {imperative definition: 815}</span>
<span class="plain-syntax"> IMPERATIVE_NT'check sneezing on' {unit: 4} {imperative definition: 853}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out sneezing on' {unit: 4} {imperative definition: 854}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone sneezing on' {unit: 4} {imperative definition: 855}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report sneezing on' {unit: 4} {imperative definition: 856}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone sneezing on' {unit: 4} {imperative definition: 857}</span>
<span class="plain-syntax"> SENTENCE_NT'understand "inject [someone] with [something]" as injecting ' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'"inject [someone] with [something]"'</span>
@ -803,10 +807,10 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'injecting it with'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to two things'</span>
<span class="plain-syntax"> IMPERATIVE_NT'check injecting it with' {unit: 4} {imperative definition: 816}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out injecting it with' {unit: 4} {imperative definition: 817}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after injecting the player with something' {unit: 4} {imperative definition: 818}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report injecting it with' {unit: 4} {imperative definition: 819}</span>
<span class="plain-syntax"> IMPERATIVE_NT'check injecting it with' {unit: 4} {imperative definition: 858}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out injecting it with' {unit: 4} {imperative definition: 859}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after injecting the player with something' {unit: 4} {imperative definition: 860}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report injecting it with' {unit: 4} {imperative definition: 861}</span>
<span class="plain-syntax"> HEADING_NT'section 3 - geography' {heading 5} {under: H5'section 3 - geography'} {unit: 4}</span>
<span class="plain-syntax"> INCLUSION_NT'include locksmith by emily short' {unit: 4}</span>
<span class="plain-syntax"> HEADING_NT'version 12 of locksmith by emily short begins here' {heading 0} {under: H0'version 12 of locksmith by emily short begins here'} {includes: Locksmith by Emily Short v12 } {unit: 3}</span>
@ -831,9 +835,9 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'going toward'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to one thing'</span>
<span class="plain-syntax"> IMPERATIVE_NT'check going toward' {unit: 4} {imperative definition: 857}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out going toward' {unit: 4} {imperative definition: 858}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of waiting when the destination of the player is not' {unit: 4} {imperative definition: 859}</span>
<span class="plain-syntax"> IMPERATIVE_NT'check going toward' {unit: 4} {imperative definition: 899}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out going toward' {unit: 4} {imperative definition: 900}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of waiting when the destination of the player is not' {unit: 4} {imperative definition: 901}</span>
<span class="plain-syntax"> SENTENCE_NT'understand "stop" or "cease" as stopping' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'"stop" or "cease"'</span>
@ -842,11 +846,11 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'stopping'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to nothing'</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out stopping' {unit: 4} {imperative definition: 860}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report stopping' {unit: 4} {imperative definition: 861}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after going to an air-conditioned room' {unit: 4} {imperative definition: 862}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after going from an air-conditioned room' {unit: 4} {imperative definition: 863}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of listening to an air-conditioned room' {unit: 4} {imperative definition: 864}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out stopping' {unit: 4} {imperative definition: 902}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report stopping' {unit: 4} {imperative definition: 903}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after going to an air-conditioned room' {unit: 4} {imperative definition: 904}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after going from an air-conditioned room' {unit: 4} {imperative definition: 905}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of listening to an air-conditioned room' {unit: 4} {imperative definition: 906}</span>
<span class="plain-syntax"> SENTENCE_NT'the alfred cralle pool hall is a room' {unit: 4} {classified} {interpretation of subject: infs'person'}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'alfred cralle pool hall' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'alfred cralle pool hall'} {eval: CONSTANT_NT'alfred cralle pool hall' {kind: object} {instance: I88'alfred cralle pool hall'} {enumeration: 0}} {created here}</span>
@ -888,7 +892,7 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> PROPER_NOUN_NT'felt door' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'felt door'} {eval: CONSTANT_NT'felt door' {kind: door} {instance: I90'felt door'} {enumeration: 0}}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'description' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'description'=text}}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'"It has a prominent lock, designed for an old-fashioned key.' {refined} {eval: CONSTANT_NT'"It has a prominent lock, designed for an old-fashioned key.' {kind: text}}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after locking a door with something in the presence of an ot' {unit: 4} {imperative definition: 865}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after locking a door with something in the presence of an ot' {unit: 4} {imperative definition: 907}</span>
<span class="plain-syntax"> SENTENCE_NT'nancy johnson memorial square is west of the felt door' {unit: 4} {classified} {interpretation of subject: infs'key to the city'}</span>
<span class="plain-syntax"> VERB_NT'is west of' {verb 'be' 3p s act IS_TENSE +ve} {prep1: west of}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'nancy johnson memorial square' {refined} {refers: infs'nancy johnson memorial square'} {eval: CONSTANT_NT'nancy johnson memorial square' {kind: object} {instance: I92'nancy johnson memorial square'} {enumeration: 0}} {created here}</span>
@ -950,8 +954,8 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'slot' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'slot'} {eval: CONSTANT_NT'slot' {kind: object} {instance: I97'slot'} {enumeration: 0}}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'container' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'container'} {creation: &lt;&lt; kind=container(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out inserting something into the slot' {unit: 4} {imperative definition: 866}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report inserting something into the slot' {unit: 4} {imperative definition: 867}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out inserting something into the slot' {unit: 4} {imperative definition: 908}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report inserting something into the slot' {unit: 4} {imperative definition: 909}</span>
<span class="plain-syntax"> SENTENCE_NT'hamwi street is northeast of an iron gate' {unit: 4} {classified} {interpretation of subject: infs'slot'}</span>
<span class="plain-syntax"> VERB_NT'is northeast of' {verb 'be' 3p s act IS_TENSE +ve} {prep1: northeast of}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'hamwi street' {refined} {refers: infs'hamwi street'} {eval: CONSTANT_NT'hamwi street' {kind: object} {instance: I98'hamwi street'} {enumeration: 0}} {created here}</span>
@ -975,7 +979,7 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> AND_NT'and' {refined}</span>
<span class="plain-syntax"> ADJECTIVE_NT'lockable' {refined} {predicate: lockable} {creation: &lt;&lt; lockable(x) ^ lockable(x) &gt;&gt;}</span>
<span class="plain-syntax"> ADJECTIVE_NT'unlocked' {refined} {predicate: unlocked} {creation: &lt;&lt; unlocked(x) ^ unlocked(x) &gt;&gt;}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of the iron gate while not opening ' {unit: 4} {imperative definition: 868}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of the iron gate while not opening ' {unit: 4} {imperative definition: 910}</span>
<span class="plain-syntax"> SENTENCE_NT'cold comfort ice cream is north of a metal door' {unit: 4} {classified} {interpretation of subject: infs'iron gate'}</span>
<span class="plain-syntax"> VERB_NT'is north of' {verb 'be' 3p s act IS_TENSE +ve} {prep1: north of}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'cold comfort ice cream' {refined} {refers: infs'cold comfort ice cream'} {eval: CONSTANT_NT'cold comfort ice cream' {kind: object} {instance: I100'cold comfort ice cream'} {enumeration: 0}} {created here}</span>
@ -1081,8 +1085,8 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'"glass"'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'the box'</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of attacking the closed emergency box' {unit: 4} {imperative definition: 869}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of attacking the open emergency box' {unit: 4} {imperative definition: 870}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of attacking the closed emergency box' {unit: 4} {imperative definition: 911}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of attacking the open emergency box' {unit: 4} {imperative definition: 912}</span>
<span class="plain-syntax"> SENTENCE_NT'the syringe is in the emergency box' {unit: 4} {classified} {interpretation of subject: infs'emergency box'}</span>
<span class="plain-syntax"> VERB_NT'is in' {verb 'be' 3p s act IS_TENSE +ve} {prep1: in}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'syringe' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'syringe'} {eval: CONSTANT_NT'syringe' {kind: object} {instance: I109'syringe'} {enumeration: 0}} {created here}</span>
@ -1185,8 +1189,8 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> SENTENCE_NT'use full-length room descriptions' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'use' {verb 'use' 3p p act IS_TENSE +ve} {special meaning: use}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'full-length room descriptions'</span>
<span class="plain-syntax"> IMPERATIVE_NT'after looking in an outdoors room' {unit: 4} {imperative definition: 871}</span>
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 872}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after looking in an outdoors room' {unit: 4} {imperative definition: 913}</span>
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 914}</span>
<span class="plain-syntax"> DEFN_CONT_NT'a door is proximate' {unit: 4}</span>
<span class="plain-syntax"> CODE_BLOCK_NT</span>
<span class="plain-syntax"> CODE_BLOCK_NT {control structure: IF}</span>
@ -1207,7 +1211,7 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> INVOCATION_NT'yes' {phrase invoked: &lt;no-inter-name&gt;}</span>
<span class="plain-syntax"> INVOCATION_LIST_NT'no' {unit: 4}</span>
<span class="plain-syntax"> INVOCATION_NT'no' {phrase invoked: &lt;no-inter-name&gt;}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before exiting when the player is in an indoors room' {unit: 4} {imperative definition: 873}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before exiting when the player is in an indoors room' {unit: 4} {imperative definition: 915}</span>
<span class="plain-syntax"> SENTENCE_NT'blank is a room' {unit: 4} {classified} {interpretation of subject: infs'key to the city'}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'blank' {refined} {refers: infs'blank'} {eval: CONSTANT_NT'blank' {kind: object} {instance: I113'blank'} {enumeration: 0}} {created here}</span>
@ -1433,15 +1437,15 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> PROPER_NOUN_NT'ned' {refined} {refers: infs'ned'} {eval: CONSTANT_NT'ned' {kind: man} {instance: I166'ned'} {enumeration: 0}}</span>
<span class="plain-syntax"> RELATIONSHIP_NT'owns' {meaning: ownership-r} {refined}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'movie rental' {definite 'the' n/m/f s/p nom/acc} {refined} {refers: infs'movie rental store'} {eval: CONSTANT_NT'movie rental store' {kind: object} {instance: I104'movie rental store'} {enumeration: 0}}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after printing the name of someone ( called target ) while l' {unit: 4} {imperative definition: 874}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after printing the name of someone ( called target ) while l' {unit: 4} {imperative definition: 916}</span>
<span class="plain-syntax"> SENTENCE_NT'the description of a person is usually "[The noun] [if the n' {unit: 4} {classified} {interpretation of subject: infs'ned'}</span>
<span class="plain-syntax"> VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> X_OF_Y_NT'description of a person' {definite 'the' n/m/f s/p nom/acc} {refined}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'person'} {creation: &lt;&lt; kind=person(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'description' {refined} {eval: CONSTANT_NT {kind: texts valued property} {property: 'description'=text}}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'"[The noun] [if the noun is clean]looks healthy[otherwise]is' {refined} {eval: CONSTANT_NT'"[The noun] [if the noun is clean]looks healthy[otherwise]is' {kind: text}}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after examining another person who is carrying something' {unit: 4} {imperative definition: 875}</span>
<span class="plain-syntax"> IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 876}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after examining another person who is carrying something' {unit: 4} {imperative definition: 917}</span>
<span class="plain-syntax"> IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 918}</span>
<span class="plain-syntax"> HEADING_NT'section 5 - conversation' {heading 5} {under: H5'section 5 - conversation'} {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'a person has a table name called conversation' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}</span>
@ -1450,8 +1454,8 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> PROPERTYCALLED_NT'called'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'table name' {indefinite 'a' n/m/f nom/acc s}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'conversation'</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of asking someone about something' {unit: 4} {imperative definition: 877}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of telling someone about something' {unit: 4} {imperative definition: 878}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of asking someone about something' {unit: 4} {imperative definition: 919}</span>
<span class="plain-syntax"> IMPERATIVE_NT'instead of telling someone about something' {unit: 4} {imperative definition: 920}</span>
<span class="plain-syntax"> SENTENCE_NT'understand "recap" or "recall" or "review" as recalling conv' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'understand' {verb 'understand' 3p p act IS_TENSE +ve} {prep2: as} {special meaning: understand-as}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'"recap" or "recall" or "review"'</span>
@ -1460,7 +1464,7 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve} {special meaning: new-action}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'recalling conversations'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'applying to nothing'</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out recalling conversations' {unit: 4} {imperative definition: 879}</span>
<span class="plain-syntax"> IMPERATIVE_NT'carry out recalling conversations' {unit: 4} {imperative definition: 921}</span>
<span class="plain-syntax"> SENTENCE_NT'the conversation of a person is usually table of general chi' {unit: 4} {classified} {interpretation of subject: infs'person'}</span>
<span class="plain-syntax"> VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> X_OF_Y_NT'conversation of a person' {definite 'the' n/m/f s/p nom/acc} {refined}</span>
@ -1475,7 +1479,7 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> PROPER_NOUN_NT'conversation' {refined} {eval: CONSTANT_NT {kind: table names valued property} {property: 'conversation'=table name}}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'table of vanessa chatter' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: CONSTANT_NT'table of vanessa chatter' {kind: table name} {table: table_data}{meaning: {table of vanessa chatter = TABLE_MC}}}</span>
<span class="plain-syntax"> TABLE_NT'table of vanessa chatter topic reply summary turn stamp char' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after reading a command' {unit: 4} {imperative definition: 880}</span>
<span class="plain-syntax"> IMPERATIVE_NT'after reading a command' {unit: 4} {imperative definition: 922}</span>
<span class="plain-syntax"> HEADING_NT'section 6 - movement description' {heading 5} {under: H5'section 6 - movement description'} {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'a person has some text called walk style' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}</span>
@ -1522,8 +1526,8 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> PROPER_NOUN_NT'"sashay"' {refined} {eval: CONSTANT_NT'"sashay"' {kind: text}}</span>
<span class="plain-syntax"> TABLE_NT'table of visible exits character second third heading chosen' {unit: 4}</span>
<span class="plain-syntax"> TABLE_NT'table of visible entrances character second third heading ch' {unit: 4}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to clear ( current table - a table name )' {unit: 4} {imperative definition: 881}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to tidy departures of ( current table - a table name )' {unit: 4} {imperative definition: 882}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to clear ( current table - a table name )' {unit: 4} {imperative definition: 923}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to tidy departures of ( current table - a table name )' {unit: 4} {imperative definition: 924}</span>
<span class="plain-syntax"> SENTENCE_NT'a door has a person called last opener' {unit: 4} {classified} {interpretation of subject: infs'person'}</span>
<span class="plain-syntax"> VERB_NT'has' {verb 'have' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'door' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'door'} {creation: &lt;&lt; kind=door(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
@ -1531,21 +1535,21 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> PROPERTYCALLED_NT'called'</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'person' {indefinite 'a' n/m/f nom/acc s}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'last opener'</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone opening a door' {unit: 4} {imperative definition: 883}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone going through a door ( called route )' {unit: 4} {imperative definition: 884}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone opening a door' {unit: 4} {imperative definition: 925}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone going through a door ( called route )' {unit: 4} {imperative definition: 926}</span>
<span class="plain-syntax"> SENTENCE_NT'the last thing named is a thing that varies' {unit: 4} {classified} {interpretation of subject: infs'door'}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'last thing named' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'last thing named' {nonlocal: 'last thing named'(var)thing}} {created here}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'thing that varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: &lt;&lt; kind=things variable-pointer(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of something ( called target ) whic' {unit: 4} {imperative definition: 885}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone going a direction' {unit: 4} {imperative definition: 886}</span>
<span class="plain-syntax"> IMPERATIVE_NT'this is the movement reporting rule' {unit: 4} {imperative definition: 887}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to generate descriptions from ( current table - a table name' {unit: 4} {imperative definition: 888}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of something ( called target ) whic' {unit: 4} {imperative definition: 927}</span>
<span class="plain-syntax"> IMPERATIVE_NT'report someone going a direction' {unit: 4} {imperative definition: 928}</span>
<span class="plain-syntax"> IMPERATIVE_NT'this is the movement reporting rule' {unit: 4} {imperative definition: 929}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to generate descriptions from ( current table - a table name' {unit: 4} {imperative definition: 930}</span>
<span class="plain-syntax"> SENTENCE_NT'the last person named is a person that varies' {unit: 4} {classified} {interpretation of subject: infs'door'}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'last person named' {definite 'the' n/m/f s/p nom/acc} {refined} {eval: NONLOCAL_VARIABLE_NT'last person named' {nonlocal: 'last person named'(var)person}} {created here}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'person that varies' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'values variable-pointer'-k} {creation: &lt;&lt; kind=people variable-pointer(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of a person ( called target )' {unit: 4} {imperative definition: 889}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of a person ( called target )' {unit: 4} {imperative definition: 931}</span>
<span class="plain-syntax"> SENTENCE_NT'group size is a number that varies' {unit: 4} {classified} {interpretation of subject: infs'door'}</span>
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'group size' {refined} {eval: NONLOCAL_VARIABLE_NT'group size' {nonlocal: 'group size'(var)number}} {created here}</span>
@ -1554,19 +1558,19 @@ that is, with the content of extensions excluded, and with the content of
<span class="plain-syntax"> VERB_NT'is' {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'group size' {refined} {eval: NONLOCAL_VARIABLE_NT'group size' {nonlocal: 'group size'(var)number}{meaning: {group size = VARIABLE_MC}}}</span>
<span class="plain-syntax"> PROPER_NOUN_NT'1' {refined} {eval: CONSTANT_NT'1' {kind: number} {explicit literal} {number: 1}}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to clear marked people' {unit: 4} {imperative definition: 890}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before listing nondescript items' {unit: 4} {imperative definition: 891}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to describe patients' {unit: 4} {imperative definition: 892}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to say ( named character - a man ) as pronoun' {unit: 4} {imperative definition: 893}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to say ( named character - a woman ) as pronoun' {unit: 4} {imperative definition: 894}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to say looks as though dipped in for ( index - a number )' {unit: 4} {imperative definition: 895}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to clear marked people' {unit: 4} {imperative definition: 932}</span>
<span class="plain-syntax"> IMPERATIVE_NT'before listing nondescript items' {unit: 4} {imperative definition: 933}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to describe patients' {unit: 4} {imperative definition: 934}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to say ( named character - a man ) as pronoun' {unit: 4} {imperative definition: 935}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to say ( named character - a woman ) as pronoun' {unit: 4} {imperative definition: 936}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to say looks as though dipped in for ( index - a number )' {unit: 4} {imperative definition: 937}</span>
<span class="plain-syntax"> TABLE_NT'table of dipping phrases dipping "looks as though dipped in"' {unit: 4}</span>
<span class="plain-syntax"> SENTENCE_NT'a door is usually scenery' {unit: 4} {classified} {interpretation of subject: infs'door'}</span>
<span class="plain-syntax"> VERB_NT'is usually' {certainty:likely} {verb 'be' 3p s act IS_TENSE +ve}</span>
<span class="plain-syntax"> COMMON_NOUN_NT'door' {indefinite 'a' n/m/f nom/acc s} {refined} {refers: infs'door'} {creation: &lt;&lt; kind=door(x) &gt;&gt;} {eval: TEST_VALUE_NT}</span>
<span class="plain-syntax"> ADJECTIVE_NT'scenery' {refined} {predicate: scenery} {creation: &lt;&lt; scenery(x) ^ scenery(x) &gt;&gt;}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to make delimiter ( index - a number ) of ( count - a number' {unit: 4} {imperative definition: 896}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to say optional comma' {unit: 4} {imperative definition: 897}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to make delimiter ( index - a number ) of ( count - a number' {unit: 4} {imperative definition: 938}</span>
<span class="plain-syntax"> IMPERATIVE_NT'to say optional comma' {unit: 4} {imperative definition: 939}</span>
<span class="plain-syntax"> SENTENCE_NT'test me with go to cold comfort / z / z / z / z / ask vaness' {unit: 4} {classified}</span>
<span class="plain-syntax"> VERB_NT'test' {verb 'test' 3p p act IS_TENSE +ve} {prep2: with} {special meaning: test-with}</span>
<span class="plain-syntax"> UNPARSED_NOUN_NT'me'</span>

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,26 +1,26 @@
100.0% in inform7 run
53.9% in compilation to Inter
54.1% in compilation to Inter
39.2% in //Sequence::undertake_queued_tasks//
3.4% in //MajorNodes::pre_pass//
2.5% in //MajorNodes::pass_1//
3.5% in //MajorNodes::pre_pass//
2.6% in //MajorNodes::pass_1//
1.5% in //RTPhrasebook::compile_entries//
1.2% in //ImperativeDefinitions::assess_all//
1.4% in //ImperativeDefinitions::assess_all//
1.1% in //RTKindConstructors::compile//
0.4% in //ImperativeDefinitions::compile_first_block//
0.4% in //MajorNodes::pass_2//
0.4% in //Sequence::undertake_queued_tasks//
0.4% in //World::stage_V//
0.2% in //ImperativeDefinitions::compile_first_block//
0.2% in //CompletionModule::compile//
0.2% in //Sequence::undertake_queued_tasks//
0.1% in //CompletionModule::compile//
0.1% in //InferenceSubjects::emit_all//
0.1% in //RTKindConstructors::compile_permissions//
0.1% in //Task::make_built_in_kind_constructors//
0.1% in //World::stages_II_and_III//
2.0% not specifically accounted for
1.8% not specifically accounted for
44.0% in running Inter pipeline
12.6% in step preparation
9.5% in inter step 7/16: consolidate-text
7.9% in inter step 16/16: generate inform6 -> auto.inf
12.3% in step preparation
9.8% in inter step 7/16: consolidate-text
7.7% in inter step 16/16: generate inform6 -> auto.inf
7.7% in inter step 2/16: link
1.5% in inter step 11/16: make-identifiers-unique
0.4% in inter step 12/16: reconcile-verbs
@ -32,6 +32,6 @@
0.1% in inter step 13/16: eliminate-redundant-labels
0.1% in inter step 4/16: parse-linked-matter
0.1% in inter step 5/16: resolve-conditional-compilation
2.3% not specifically accounted for
1.7% in supervisor
0.3% not specifically accounted for
2.7% not specifically accounted for
1.6% in supervisor
0.2% not specifically accounted for

View file

@ -78,6 +78,7 @@ i7process_t i7_new_process(void) {
proc.just_undid = 0;
proc.snapshot_pos = 0;
proc.receiver = i7_default_receiver;
proc.use_UTF8 = 1;
return proc;
}
@ -127,7 +128,7 @@ void i7_restore_snapshot_from(i7process_t *proc, i7snapshot *ss) {
}
void i7_default_receiver(int id, wchar_t c, char *style) {
if (id == 201) fputc(c, stdout);
if (id == I7_BODY_TEXT_ID) fputc(c, stdout);
}
int default_main(int argc, char **argv) {
@ -153,8 +154,9 @@ int i7_run_process(i7process_t *proc) {
}
return proc->termination_code;
}
void i7_set_process_receiver(i7process_t *proc, void (*receiver)(int id, wchar_t c, char *style)) {
void i7_set_process_receiver(i7process_t *proc, void (*receiver)(int id, wchar_t c, char *style), int UTF8) {
proc->receiver = receiver;
proc->use_UTF8 = UTF8;
}
void i7_fatal_exit(i7process_t *proc) {
@ -1083,10 +1085,31 @@ char *dqs[];
char *i7_text_of_string(i7val str) {
return dqs[str - I7VAL_STRINGS_BASE];
}
void i7_style(i7process_t *proc, int what) {
#define I7_MAX_STREAMS 128
i7_stream i7_memory_streams[I7_MAX_STREAMS];
void i7_style(i7process_t *proc, char *what) {
i7_stream *S = &(i7_memory_streams[proc->state.i7_str_id]);
if ((what == NULL) || (strlen(what) > 128)) {
fprintf(stderr, "Style name too long\n"); i7_fatal_exit(proc);
}
S->style = what;
sprintf(S->composite_style, "%s", S->style);
if (S->fixed_pitch) {
if (strlen(S->style) > 0) sprintf(S->composite_style + strlen(S->composite_style), ",");
sprintf(S->composite_style + strlen(S->composite_style), "fixedpitch");
}
}
void i7_font(i7process_t *proc, int what) {
i7_stream *S = &(i7_memory_streams[proc->state.i7_str_id]);
S->fixed_pitch = what;
sprintf(S->composite_style, "%s", S->style);
if (S->fixed_pitch) {
if (strlen(S->style) > 0) sprintf(S->composite_style + strlen(S->composite_style), ",");
sprintf(S->composite_style + strlen(S->composite_style), "fixedpitch");
}
}
i7_fileref filerefs[128 + 32];
@ -1171,19 +1194,15 @@ int i7_fgetc(i7process_t *proc, int id) {
return c;
}
#define I7_MAX_STREAMS 128
i7_stream i7_memory_streams[I7_MAX_STREAMS];
i7val i7_stdout_id = 0, i7_stderr_id = 1, i7_str_id = 0;
i7val i7_stdout_id = 0, i7_stderr_id = 1;
i7val i7_do_glk_stream_get_current(i7process_t *proc) {
return i7_str_id;
return proc->state.i7_str_id;
}
void i7_do_glk_stream_set_current(i7process_t *proc, i7val id) {
if ((id < 0) || (id >= I7_MAX_STREAMS)) { fprintf(stderr, "Stream ID %d out of range\n", id); i7_fatal_exit(proc); }
i7_str_id = id;
proc->state.i7_str_id = id;
}
i7_stream i7_new_stream(i7process_t *proc, FILE *F, int win_id) {
@ -1203,6 +1222,9 @@ i7_stream i7_new_stream(i7process_t *proc, FILE *F, int win_id) {
S.read_position = 0;
S.end_position = 0;
S.owned_by_window_id = win_id;
S.style = "";
S.fixed_pitch = 0;
S.composite_style[0] = 0;
return S;
}
void i7_initialise_streams(i7process_t *proc) {
@ -1221,7 +1243,7 @@ i7val i7_open_stream(i7process_t *proc, FILE *F, int win_id) {
if (i7_memory_streams[i].active == 0) {
i7_memory_streams[i] = i7_new_stream(proc, F, win_id);
i7_memory_streams[i].active = 1;
i7_memory_streams[i].previous_id = i7_str_id;
i7_memory_streams[i].previous_id = proc->state.i7_str_id;
return i;
}
fprintf(stderr, "Out of streams\n"); i7_fatal_exit(proc);
@ -1234,7 +1256,7 @@ i7val i7_do_glk_stream_open_memory(i7process_t *proc, i7val buffer, i7val len, i
i7_memory_streams[id].write_here_on_closure = buffer;
i7_memory_streams[id].write_limit = (size_t) len;
i7_memory_streams[id].char_size = 1;
i7_str_id = id;
proc->state.i7_str_id = id;
return id;
}
@ -1244,7 +1266,7 @@ i7val i7_do_glk_stream_open_memory_uni(i7process_t *proc, i7val buffer, i7val le
i7_memory_streams[id].write_here_on_closure = buffer;
i7_memory_streams[id].write_limit = (size_t) len;
i7_memory_streams[id].char_size = 4;
i7_str_id = id;
proc->state.i7_str_id = id;
return id;
}
@ -1287,7 +1309,7 @@ void i7_do_glk_stream_close(i7process_t *proc, i7val id, i7val result) {
if (id == 1) { fprintf(stderr, "Cannot close stderr\n"); i7_fatal_exit(proc); }
i7_stream *S = &(i7_memory_streams[id]);
if (S->active == 0) { fprintf(stderr, "Stream %d already closed\n", id); i7_fatal_exit(proc); }
if (i7_str_id == id) i7_str_id = S->previous_id;
if (proc->state.i7_str_id == id) proc->state.i7_str_id = S->previous_id;
if (S->write_here_on_closure != 0) {
if (S->char_size == 4) {
for (size_t i = 0; i < S->write_limit; i++)
@ -1340,8 +1362,9 @@ i7val i7_rock_of_window(i7process_t *proc, i7val id) {
}
void i7_to_receiver(i7process_t *proc, i7val rock, wchar_t c) {
i7_stream *S = &(i7_memory_streams[proc->state.i7_str_id]);
if (proc->receiver == NULL) fputc(c, stdout);
(proc->receiver)(rock, c, "");
(proc->receiver)(rock, c, S->composite_style);
}
void i7_do_glk_put_char_stream(i7process_t *proc, i7val stream_id, i7val x) {
@ -1351,7 +1374,7 @@ void i7_do_glk_put_char_stream(i7process_t *proc, i7val stream_id, i7val x) {
int rock = -1;
if (win_id >= 1) rock = i7_rock_of_window(proc, win_id);
unsigned int c = (unsigned int) x;
// if (S->encode_UTF8) {
if (proc->use_UTF8) {
if (c >= 0x800) {
i7_to_receiver(proc, rock, 0xE0 + (c >> 12));
i7_to_receiver(proc, rock, 0x80 + ((c >> 6) & 0x3f));
@ -1360,9 +1383,9 @@ void i7_do_glk_put_char_stream(i7process_t *proc, i7val stream_id, i7val x) {
i7_to_receiver(proc, rock, 0xC0 + (c >> 6));
i7_to_receiver(proc, rock, 0x80 + (c & 0x3f));
} else i7_to_receiver(proc, rock, (int) c);
// } else {
// i7_to_receiver(proc, rock, (int) c);
// }
} else {
i7_to_receiver(proc, rock, (int) c);
}
} else if (S->to_file_id >= 0) {
i7_fputc(proc, (int) x, S->to_file_id);
S->end_position++;
@ -1390,7 +1413,7 @@ i7val i7_do_glk_get_char_stream(i7process_t *proc, i7val stream_id) {
}
void i7_print_char(i7process_t *proc, i7val x) {
i7_do_glk_put_char_stream(proc, i7_str_id, x);
i7_do_glk_put_char_stream(proc, proc->state.i7_str_id, x);
}
void i7_print_C_string(i7process_t *proc, char *c_string) {

View file

@ -30,6 +30,7 @@ typedef struct i7state {
i7val *i7_object_tree_sibling;
i7val *variables;
i7val tmp;
i7val i7_str_id;
} i7state;
typedef struct i7snapshot {
@ -48,6 +49,7 @@ typedef struct i7process_t {
int termination_code;
int just_undid;
void (*receiver)(int id, wchar_t c, char *style);
int use_UTF8;
} i7process_t;
i7state i7_new_state(void);
@ -59,7 +61,7 @@ void i7_restore_snapshot(i7process_t *proc);
void i7_restore_snapshot_from(i7process_t *proc, i7snapshot *ss);
void i7_destroy_latest_snapshot(i7process_t *proc);
int i7_run_process(i7process_t *proc);
void i7_set_process_receiver(i7process_t *proc, void (*receiver)(int id, wchar_t c, char *style));
void i7_set_process_receiver(i7process_t *proc, void (*receiver)(int id, wchar_t c, char *style), int UTF8);
void i7_initializer(i7process_t *proc);
void i7_fatal_exit(i7process_t *proc);
void i7_destroy_state(i7process_t *proc, i7state *s);
@ -193,11 +195,11 @@ i7val i7_gen_call(i7process_t *proc, i7val fn_ref, i7val *args, int argc);
void glulx_call(i7process_t *proc, i7val fn_ref, i7val varargc, i7val *z);
void i7_print_dword(i7process_t *proc, i7val at);
char *i7_text_of_string(i7val str);
#define i7_bold 1
#define i7_roman 2
#define i7_underline 3
#define i7_reverse 4
void i7_style(i7process_t *proc, int what);
#define I7_BODY_TEXT_ID 201
#define I7_STATUS_TEXT_ID 202
#define I7_BOX_TEXT_ID 203
void i7_style(i7process_t *proc, char *what);
void i7_font(i7process_t *proc, int what);
#define fileusage_Data (0x00)
@ -246,6 +248,9 @@ typedef struct i7_stream {
int read_position;
int end_position;
int owned_by_window_id;
int fixed_pitch;
char *style;
char composite_style[256];
} i7_stream;
i7val i7_do_glk_stream_get_current(i7process_t *proc);
i7_stream i7_new_stream(i7process_t *proc, FILE *F, int win_id);

View file

@ -229,3 +229,60 @@ int main(int argc, char **argv) {
=
Example 2 is in fact so simple that it is impossible for the exit code to be
other than 0, but checking the exit code is good practice.
@h Example 3: HTML Receiver.
This third example demonstrates a "receiver" function. The text printed by
Inform 7 can be captured, processed, and in general handled however the C
program would like. This is done by assigning a receiver to the process,
after it is created, but before it is run:
= (text as C)
i7process_t proc = i7_new_process();
i7_set_process_receiver(&proc, my_receiver, 1);
=
Here |my_receiver| is a function. The default receiver looks like this:
= (text as C)
void i7_default_receiver(int id, wchar_t c, char *style) {
if (id == I7_BODY_TEXT_ID) fputc(c, stdout);
}
=
This receives the text printed by the Inform process, one character at a time.
(*) The |id| is a "window ID", a detail which doesn't matter to a Basic Inform
project -- it will always in fact be |I7_BODY_TEXT_ID|. For a full Inform project
such as an IF work, it might be any of three possibilities:
(-*) |I7_BODY_TEXT_ID|, the main transcript of text in the story;
(-*) |I7_STATUS_TEXT_ID|, the "status line" header at the top of a traditional
Terminal-window-style presentation of this text;
(-*) |I7_BOX_TEXT_ID|, a quotation printed in a box which overlies the main text.
(*) The |style| is a stylistic markup. It will always be a valid C string, of
length at most 256, but is often the empty C string and of length 0, meaning
"this is plain text with no styling applied".
(-*) The three main styles are |italic|, |bold|, |reverse| and |fixedpitch|.
(-*) Plain styling and these three can all be combined with a "fixed-pitch type"
request, thus: |fixedpitch|, |italic,fixedpitch|, |bold,fixedpitch|, |reverse,fixedpitch|.
As can be seen, the default receiver ignores all text not sent to the main window,
and ignores all styling even on that.
The significance of the 1 in the call |i7_set_process_receiver(&proc, my_receiver, 1)|
is that it asked for text to be sent to the receiver encoded as UTF-8. This in fact
is the default receiver's arrangement, too. Call |i7_set_process_receiver(&proc, my_receiver, 0)|
to have the characters arrive raw as a series of unencoded Unicode code-points.
In Example 3, the Inform source is:
= (text as Inform 7)
To begin:
say "Hello & [italic type]welcome[roman type] from <Inform code>!"
=
The example receiver function converts this to HTML:
= (text)
<html><body>
Hello &amp; <span class="italic">welcome</span> from &lt;Inform code&gt;!
</html></body>
=
The word "welcome" here was printed with the style |"italic"|; all else was
plain.
This example just prints the result, of course, but a receiver function could
equally opt to bottle up the text for use later on.

View file

@ -1,17 +1,17 @@
#include "inform7_clib.h"
char *current_201_style = "";
char current_201_style[256];
void HTML_begin(void) {
current_201_style = "";
current_201_style[0] = 0;
printf("<html><body>\n");
}
void HTML_styling_receiver(int id, wchar_t c, char *style) {
if (id == 201) {
if (id == I7_BODY_TEXT_ID) {
if (strcmp(style, current_201_style) != 0) {
if (current_201_style) printf("</span>");
current_201_style = style;
if (style) printf("<span class=\"%s\">", style);
if (current_201_style[0]) printf("</span>");
strcpy(current_201_style, style);
if (style[0]) printf("<span class=\"%s\">", style);
}
if (c == '&') printf("&amp;");
else if (c == '<') printf("&lt;");
@ -21,14 +21,13 @@ void HTML_styling_receiver(int id, wchar_t c, char *style) {
}
void HTML_end(void) {
if (current_201_style) printf("</span>");
if (current_201_style[0]) printf("</span>");
printf("</html></body>\n");
}
int main(int argc, char **argv) {
printf("Hello from the C source code.\n");
i7process_t proc = i7_new_process();
i7_set_process_receiver(&proc, HTML_styling_receiver);
i7_set_process_receiver(&proc, HTML_styling_receiver, 1);
HTML_begin();
int exit_code = i7_run_process(&proc);
HTML_end();

View file

@ -0,0 +1,3 @@
<html><body>
Hello &amp; <span class="italic">welcome</span> from &lt;Inform code&gt;!
</html></body>

View file

@ -25,10 +25,10 @@ int CInputOutputModel::compile_primitive(code_generation *gen, inter_ti bip, int
switch (bip) {
case SPACES_BIP: WRITE("for (int j = "); INV_A1; WRITE("; j > 0; j--) i7_print_char(proc, 32);"); break;
case FONT_BIP: WRITE("i7_font(proc, "); INV_A1; WRITE(")"); break;
case STYLEROMAN_BIP: WRITE("i7_style(proc, i7_roman)"); break;
case STYLEBOLD_BIP: WRITE("i7_style(proc, i7_bold)"); break;
case STYLEUNDERLINE_BIP: WRITE("i7_style(proc, i7_underline)"); break;
case STYLEREVERSE_BIP: WRITE("i7_style(proc, i7_reverse)"); break;
case STYLEROMAN_BIP: WRITE("i7_style(proc, \"\")"); break;
case STYLEBOLD_BIP: WRITE("i7_style(proc, \"bold\")"); break;
case STYLEUNDERLINE_BIP: WRITE("i7_style(proc, \"italic\")"); break;
case STYLEREVERSE_BIP: WRITE("i7_style(proc, \"reverse\")"); break;
case PRINT_BIP: WRITE("i7_print_C_string(proc, "); INV_A1_PRINTMODE; WRITE(")"); break;
case PRINTCHAR_BIP: WRITE("i7_print_char(proc, "); INV_A1; WRITE(")"); break;
case PRINTOBJ_BIP: WRITE("i7_print_object(proc, "); INV_A1; WRITE(")"); break;
@ -43,11 +43,11 @@ int CInputOutputModel::compile_primitive(code_generation *gen, inter_ti bip, int
@
= (text to inform7_clib.h)
#define i7_bold 1
#define i7_roman 2
#define i7_underline 3
#define i7_reverse 4
void i7_style(i7process_t *proc, int what);
#define I7_BODY_TEXT_ID 201
#define I7_STATUS_TEXT_ID 202
#define I7_BOX_TEXT_ID 203
void i7_style(i7process_t *proc, char *what);
void i7_font(i7process_t *proc, int what);
#define fileusage_Data (0x00)
@ -96,16 +96,40 @@ typedef struct i7_stream {
int read_position;
int end_position;
int owned_by_window_id;
int fixed_pitch;
char *style;
char composite_style[256];
} i7_stream;
i7val i7_do_glk_stream_get_current(i7process_t *proc);
i7_stream i7_new_stream(i7process_t *proc, FILE *F, int win_id);
=
= (text to inform7_clib.c)
void i7_style(i7process_t *proc, int what) {
#define I7_MAX_STREAMS 128
i7_stream i7_memory_streams[I7_MAX_STREAMS];
void i7_style(i7process_t *proc, char *what) {
i7_stream *S = &(i7_memory_streams[proc->state.i7_str_id]);
if ((what == NULL) || (strlen(what) > 128)) {
fprintf(stderr, "Style name too long\n"); i7_fatal_exit(proc);
}
S->style = what;
sprintf(S->composite_style, "%s", S->style);
if (S->fixed_pitch) {
if (strlen(S->style) > 0) sprintf(S->composite_style + strlen(S->composite_style), ",");
sprintf(S->composite_style + strlen(S->composite_style), "fixedpitch");
}
}
void i7_font(i7process_t *proc, int what) {
i7_stream *S = &(i7_memory_streams[proc->state.i7_str_id]);
S->fixed_pitch = what;
sprintf(S->composite_style, "%s", S->style);
if (S->fixed_pitch) {
if (strlen(S->style) > 0) sprintf(S->composite_style + strlen(S->composite_style), ",");
sprintf(S->composite_style + strlen(S->composite_style), "fixedpitch");
}
}
i7_fileref filerefs[128 + 32];
@ -190,19 +214,15 @@ int i7_fgetc(i7process_t *proc, int id) {
return c;
}
#define I7_MAX_STREAMS 128
i7_stream i7_memory_streams[I7_MAX_STREAMS];
i7val i7_stdout_id = 0, i7_stderr_id = 1, i7_str_id = 0;
i7val i7_stdout_id = 0, i7_stderr_id = 1;
i7val i7_do_glk_stream_get_current(i7process_t *proc) {
return i7_str_id;
return proc->state.i7_str_id;
}
void i7_do_glk_stream_set_current(i7process_t *proc, i7val id) {
if ((id < 0) || (id >= I7_MAX_STREAMS)) { fprintf(stderr, "Stream ID %d out of range\n", id); i7_fatal_exit(proc); }
i7_str_id = id;
proc->state.i7_str_id = id;
}
i7_stream i7_new_stream(i7process_t *proc, FILE *F, int win_id) {
@ -222,6 +242,9 @@ i7_stream i7_new_stream(i7process_t *proc, FILE *F, int win_id) {
S.read_position = 0;
S.end_position = 0;
S.owned_by_window_id = win_id;
S.style = "";
S.fixed_pitch = 0;
S.composite_style[0] = 0;
return S;
}
=
@ -274,7 +297,7 @@ i7val i7_open_stream(i7process_t *proc, FILE *F, int win_id) {
if (i7_memory_streams[i].active == 0) {
i7_memory_streams[i] = i7_new_stream(proc, F, win_id);
i7_memory_streams[i].active = 1;
i7_memory_streams[i].previous_id = i7_str_id;
i7_memory_streams[i].previous_id = proc->state.i7_str_id;
return i;
}
fprintf(stderr, "Out of streams\n"); i7_fatal_exit(proc);
@ -287,7 +310,7 @@ i7val i7_do_glk_stream_open_memory(i7process_t *proc, i7val buffer, i7val len, i
i7_memory_streams[id].write_here_on_closure = buffer;
i7_memory_streams[id].write_limit = (size_t) len;
i7_memory_streams[id].char_size = 1;
i7_str_id = id;
proc->state.i7_str_id = id;
return id;
}
@ -297,7 +320,7 @@ i7val i7_do_glk_stream_open_memory_uni(i7process_t *proc, i7val buffer, i7val le
i7_memory_streams[id].write_here_on_closure = buffer;
i7_memory_streams[id].write_limit = (size_t) len;
i7_memory_streams[id].char_size = 4;
i7_str_id = id;
proc->state.i7_str_id = id;
return id;
}
@ -340,7 +363,7 @@ void i7_do_glk_stream_close(i7process_t *proc, i7val id, i7val result) {
if (id == 1) { fprintf(stderr, "Cannot close stderr\n"); i7_fatal_exit(proc); }
i7_stream *S = &(i7_memory_streams[id]);
if (S->active == 0) { fprintf(stderr, "Stream %d already closed\n", id); i7_fatal_exit(proc); }
if (i7_str_id == id) i7_str_id = S->previous_id;
if (proc->state.i7_str_id == id) proc->state.i7_str_id = S->previous_id;
if (S->write_here_on_closure != 0) {
if (S->char_size == 4) {
for (size_t i = 0; i < S->write_limit; i++)
@ -393,8 +416,9 @@ i7val i7_rock_of_window(i7process_t *proc, i7val id) {
}
void i7_to_receiver(i7process_t *proc, i7val rock, wchar_t c) {
i7_stream *S = &(i7_memory_streams[proc->state.i7_str_id]);
if (proc->receiver == NULL) fputc(c, stdout);
(proc->receiver)(rock, c, "");
(proc->receiver)(rock, c, S->composite_style);
}
void i7_do_glk_put_char_stream(i7process_t *proc, i7val stream_id, i7val x) {
@ -404,7 +428,7 @@ void i7_do_glk_put_char_stream(i7process_t *proc, i7val stream_id, i7val x) {
int rock = -1;
if (win_id >= 1) rock = i7_rock_of_window(proc, win_id);
unsigned int c = (unsigned int) x;
// if (S->encode_UTF8) {
if (proc->use_UTF8) {
if (c >= 0x800) {
i7_to_receiver(proc, rock, 0xE0 + (c >> 12));
i7_to_receiver(proc, rock, 0x80 + ((c >> 6) & 0x3f));
@ -413,9 +437,9 @@ void i7_do_glk_put_char_stream(i7process_t *proc, i7val stream_id, i7val x) {
i7_to_receiver(proc, rock, 0xC0 + (c >> 6));
i7_to_receiver(proc, rock, 0x80 + (c & 0x3f));
} else i7_to_receiver(proc, rock, (int) c);
// } else {
// i7_to_receiver(proc, rock, (int) c);
// }
} else {
i7_to_receiver(proc, rock, (int) c);
}
} else if (S->to_file_id >= 0) {
i7_fputc(proc, (int) x, S->to_file_id);
S->end_position++;
@ -443,7 +467,7 @@ i7val i7_do_glk_get_char_stream(i7process_t *proc, i7val stream_id) {
}
void i7_print_char(i7process_t *proc, i7val x) {
i7_do_glk_put_char_stream(proc, i7_str_id, x);
i7_do_glk_put_char_stream(proc, proc->state.i7_str_id, x);
}
void i7_print_C_string(i7process_t *proc, char *c_string) {

View file

@ -73,6 +73,7 @@ typedef struct i7state {
i7val *i7_object_tree_sibling;
i7val *variables;
i7val tmp;
i7val i7_str_id;
} i7state;
typedef struct i7snapshot {
@ -91,6 +92,7 @@ typedef struct i7process_t {
int termination_code;
int just_undid;
void (*receiver)(int id, wchar_t c, char *style);
int use_UTF8;
} i7process_t;
i7state i7_new_state(void);
@ -102,7 +104,7 @@ void i7_restore_snapshot(i7process_t *proc);
void i7_restore_snapshot_from(i7process_t *proc, i7snapshot *ss);
void i7_destroy_latest_snapshot(i7process_t *proc);
int i7_run_process(i7process_t *proc);
void i7_set_process_receiver(i7process_t *proc, void (*receiver)(int id, wchar_t c, char *style));
void i7_set_process_receiver(i7process_t *proc, void (*receiver)(int id, wchar_t c, char *style), int UTF8);
void i7_initializer(i7process_t *proc);
void i7_fatal_exit(i7process_t *proc);
void i7_destroy_state(i7process_t *proc, i7state *s);
@ -192,6 +194,7 @@ i7process_t i7_new_process(void) {
proc.just_undid = 0;
proc.snapshot_pos = 0;
proc.receiver = i7_default_receiver;
proc.use_UTF8 = 1;
return proc;
}
@ -241,7 +244,7 @@ void i7_restore_snapshot_from(i7process_t *proc, i7snapshot *ss) {
}
void i7_default_receiver(int id, wchar_t c, char *style) {
if (id == 201) fputc(c, stdout);
if (id == I7_BODY_TEXT_ID) fputc(c, stdout);
}
int default_main(int argc, char **argv) {
@ -267,8 +270,9 @@ int i7_run_process(i7process_t *proc) {
}
return proc->termination_code;
}
void i7_set_process_receiver(i7process_t *proc, void (*receiver)(int id, wchar_t c, char *style)) {
void i7_set_process_receiver(i7process_t *proc, void (*receiver)(int id, wchar_t c, char *style), int UTF8) {
proc->receiver = receiver;
proc->use_UTF8 = UTF8;
}
void i7_fatal_exit(i7process_t *proc) {