mirror of
https://github.com/ganelson/inform.git
synced 2024-07-01 06:24:58 +03:00
Added stylist and glk_implementation to C
This commit is contained in:
parent
0bd08a362a
commit
d7db94a1e4
|
@ -454,7 +454,7 @@ uncertainty range all of this becomes more explicable, but still.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-cas.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresscurrent">car</li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-cpc.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-cas.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresscurrent">car</li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cmn.html">cmn</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-cpc.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -947,7 +947,7 @@ or not the interpreter can perform certain tasks.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-cmm.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresscurrent">cas</li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-car.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-cmm.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresscurrent">cas</li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cmn.html">cmn</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-car.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -227,7 +227,7 @@ the latter would be universally true, which is useless.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ccn.html#SP2">§2</a> (three times).</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-cpc.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresscurrent">ccn</li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-clt.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-cpc.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresscurrent">ccn</li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cmn.html">cmn</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-clt.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -848,7 +848,7 @@ actual work.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-com.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresscurrent">cfm</li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-cim.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-com.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresscurrent">cfm</li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cmn.html">cmn</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-cim.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -253,7 +253,7 @@ newly-starting process.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-crf.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresscurrent">cgv</li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-cmm.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-crf.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresscurrent">cgv</li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cmn.html">cmn</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-cmm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -91,469 +91,61 @@ function togglePopup(material_id) {
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CInputOutputModel::end</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">CInputOutputModel::end</span></span>:<br/>Final C - <a href="5-fnc.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">code_generation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gen</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>By input/output, we mean printing text, receiving textual commands, or reading
|
||||
or writing files. Inter can do this in one of two ways: either
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(a) With one of the following primitives, or
|
||||
</li><li>(b) With an assembly-language opcode, and in particular <span class="extract"><span class="extract-syntax">@glk</span></span>.
|
||||
</li></ul>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">CInputOutputModel::invoke_primitive</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">CInputOutputModel::invoke_primitive</span></span>:<br/>C Program Control - <a href="5-cpc.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">code_generation</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">bip</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax"> = </span><a href="2-cg.html#SP12" class="function-link"><span class="function-syntax">CodeGen::current</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">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">VNODE_1C</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"; j > 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">VNODE_1C</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">STYLE_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="constant-syntax">VNODE_1C</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">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><a href="2-cg.html#SP5" class="function-link"><span class="function-syntax">CodeGen::lt_mode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_LTM</span><span class="plain-syntax">); </span><span class="constant-syntax">VNODE_1C</span><span class="plain-syntax">; </span><a href="2-cg.html#SP5" class="function-link"><span class="function-syntax">CodeGen::lt_mode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="constant-syntax">REGULAR_LTM</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">VNODE_1C</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">PRINTNL_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, '\\n')"</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">VNODE_1C</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">PRINTNUMBER_BIP:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_print_decimal(proc, "</span><span class="plain-syntax">); </span><span class="constant-syntax">VNODE_1C</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">PRINTSTRING_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, i7_text_to_C_string("</span><span class="plain-syntax">); </span><span class="constant-syntax">VNODE_1C</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">PRINTDWORD_BIP:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_print_dword(proc, "</span><span class="plain-syntax">); </span><span class="constant-syntax">VNODE_1C</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">BOX_BIP:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_print_box(proc, "</span><span class="plain-syntax">); </span><a href="2-cg.html#SP5" class="function-link"><span class="function-syntax">CodeGen::lt_mode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="constant-syntax">BOX_LTM</span><span class="plain-syntax">); </span><span class="constant-syntax">VNODE_1C</span><span class="plain-syntax">; </span><a href="2-cg.html#SP5" class="function-link"><span class="function-syntax">CodeGen::lt_mode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="constant-syntax">REGULAR_LTM</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="identifier-syntax">default:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NOT_APPLICABLE</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">VNODE_1C</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"; j > 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_styling(proc, 1, "</span><span class="plain-syntax">); </span><span class="constant-syntax">VNODE_1C</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">STYLE_BIP:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_styling(proc, 2, "</span><span class="plain-syntax">); </span><span class="constant-syntax">VNODE_1C</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">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="plain-syntax"> </span><a href="2-cg.html#SP5" class="function-link"><span class="function-syntax">CodeGen::lt_mode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="constant-syntax">PRINTING_LTM</span><span class="plain-syntax">); </span><span class="constant-syntax">VNODE_1C</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP5" class="function-link"><span class="function-syntax">CodeGen::lt_mode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="constant-syntax">REGULAR_LTM</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">VNODE_1C</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">PRINTNL_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, '\\n')"</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">VNODE_1C</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">PRINTNUMBER_BIP:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_print_decimal(proc, "</span><span class="plain-syntax">); </span><span class="constant-syntax">VNODE_1C</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">PRINTSTRING_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, i7_text_to_C_string("</span><span class="plain-syntax">); </span><span class="constant-syntax">VNODE_1C</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"))"</span><span class="plain-syntax">); </span><span class="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">PRINTDWORD_BIP:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_print_dword(proc, "</span><span class="plain-syntax">); </span><span class="constant-syntax">VNODE_1C</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">BOX_BIP:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_print_box(proc, "</span><span class="plain-syntax">); </span><a href="2-cg.html#SP5" class="function-link"><span class="function-syntax">CodeGen::lt_mode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="constant-syntax">BOX_LTM</span><span class="plain-syntax">); </span><span class="constant-syntax">VNODE_1C</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP5" class="function-link"><span class="function-syntax">CodeGen::lt_mode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="constant-syntax">REGULAR_LTM</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="identifier-syntax">default:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NOT_APPLICABLE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>See <a href="5-clt.html" class="internal">C Literals</a> for the implementation of <span class="extract"><span class="extract-syntax">i7_print_dword</span></span>: it funnels
|
||||
through to <span class="extract"><span class="extract-syntax">i7_print_char</span></span>, and so do all of these:
|
||||
</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_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">i7word_t</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>
|
||||
<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_SavedGame</span><span class="Extracts-plain-syntax"> (0</span><span class="Extracts-identifier-syntax">x01</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_Transcript</span><span class="Extracts-plain-syntax"> (0</span><span class="Extracts-identifier-syntax">x02</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_InputRecord</span><span class="Extracts-plain-syntax"> (0</span><span class="Extracts-identifier-syntax">x03</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_TypeMask</span><span class="Extracts-plain-syntax"> (0</span><span class="Extracts-identifier-syntax">x0f</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_TextMode</span><span class="Extracts-plain-syntax"> (0</span><span class="Extracts-identifier-syntax">x100</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_BinaryMode</span><span class="Extracts-plain-syntax"> (0</span><span class="Extracts-identifier-syntax">x000</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">filemode_Write</span><span class="Extracts-plain-syntax"> (0</span><span class="Extracts-identifier-syntax">x01</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">filemode_Read</span><span class="Extracts-plain-syntax"> (0</span><span class="Extracts-identifier-syntax">x02</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">filemode_ReadWrite</span><span class="Extracts-plain-syntax"> (0</span><span class="Extracts-identifier-syntax">x03</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">filemode_WriteAppend</span><span class="Extracts-plain-syntax"> (0</span><span class="Extracts-identifier-syntax">x05</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">i7_fileref</span><span class="Extracts-plain-syntax"> {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">usage</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">name</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rock</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">leafname</span><span class="Extracts-plain-syntax">[128];</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">handle</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_fileref_create_by_name</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">usage</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</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">i7word_t</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">i7_fseek</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">id</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">pos</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">origin</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_ftell</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">id</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_fopen</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">id</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">mode</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_fclose</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">id</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_fileref_does_file_exist</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">i7word_t</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">void</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">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">c</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">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_fgetc</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">id</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">i7_stream</span><span class="Extracts-plain-syntax"> {</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">to_file</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </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">wchar_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">to_memory</span><span class="Extracts-plain-syntax">;</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">memory_used</span><span class="Extracts-plain-syntax">;</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">memory_capacity</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </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">i7word_t</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-plain-syntax"> </span><span class="Extracts-identifier-syntax">size_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">write_limit</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">active</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">encode_UTF8</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">char_size</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">chars_read</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">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">[128];</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">[300];</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">i7word_t</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-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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fn_i7_mgl_TEXT_TY_CharacterLength</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_txt</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_ch</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_i</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_dsize</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_p</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_cp</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_r</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fn_i7_mgl_BlkValueRead</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_from</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_pos</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_do_not_indirect</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_long_block</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_chunk_size_in_bytes</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_header_size_in_bytes</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_flags</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_entry_size_in_bytes</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_seek_byte_position</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">what_v</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"> = &(</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">-></span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_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">[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">switch</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">what_v</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</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">sprintf</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-identifier-syntax">bold</span><span class="Extracts-plain-syntax">"); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</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">sprintf</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-identifier-syntax">italic</span><span class="Extracts-plain-syntax">"); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</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">sprintf</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-identifier-syntax">reverse</span><span class="Extracts-plain-syntax">"); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">default</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">L</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">fn_i7_mgl_TEXT_TY_CharacterLength</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">what_v</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</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">L</span><span class="Extracts-plain-syntax"> > </span><span class="Extracts-constant-syntax">127</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">L</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">127</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">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax">=0; </span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax"><</span><span class="Extracts-identifier-syntax">L</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">S</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">i</span><span class="Extracts-plain-syntax">] = </span><span class="Extracts-identifier-syntax">fn_i7_mgl_BlkValueRead</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">what_v</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-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</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">style</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">L</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-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">-></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">-></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">-></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">-></span><span class="Extracts-identifier-syntax">style</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">sprintf</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"> + </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">-></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">-></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">-></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"> = &(</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">-></span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_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">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">-></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">-></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">-></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">-></span><span class="Extracts-identifier-syntax">style</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">sprintf</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"> + </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">-></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">-></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">-></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>
|
||||
<span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_no_filerefs</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_fileref_create_by_name</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">usage</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rock</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_no_filerefs</span><span class="Extracts-plain-syntax"> >= </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">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>
|
||||
<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">id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_no_filerefs</span><span class="Extracts-plain-syntax">++;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">filerefs</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">usage</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">usage</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">filerefs</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">name</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">name</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">filerefs</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">rock</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">rock</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">filerefs</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">handle</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">NULL</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">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax">=0; </span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax"><128; </span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax">++) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7byte_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">i7_read_byte</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">name</span><span class="Extracts-plain-syntax">+1+</span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">filerefs</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">leafname</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">c</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"> == </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> }</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">filerefs</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">leafname</span><span class="Extracts-plain-syntax">[127] = </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">sprintf</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">filerefs</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">leafname</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">filerefs</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">leafname</span><span class="Extracts-plain-syntax">), ".</span><span class="Extracts-identifier-syntax">glkdata</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>
|
||||
|
||||
<span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_fseek</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">id</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">pos</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">origin</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">0</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">128</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">Too</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">many</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">files</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">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">filerefs</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">handle</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">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">File</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">not</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">open</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">return</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fseek</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">filerefs</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">handle</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">pos</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">origin</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">i7_ftell</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">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"> < </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"> >= </span><span class="Extracts-constant-syntax">128</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">Too</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">many</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">files</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">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">filerefs</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">handle</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">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">File</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">not</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">open</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">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">t</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">ftell</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">filerefs</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">handle</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">t</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">i7_fopen</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">id</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">mode</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">0</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">128</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">Too</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">many</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">files</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">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">filerefs</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">handle</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">File</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">open</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">char</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">c_mode</span><span class="Extracts-plain-syntax"> = "</span><span class="Extracts-identifier-syntax">r</span><span class="Extracts-plain-syntax">";</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">switch</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">mode</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">filemode_Write</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">c_mode</span><span class="Extracts-plain-syntax"> = "</span><span class="Extracts-identifier-syntax">w</span><span class="Extracts-plain-syntax">"; </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">filemode_Read</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">c_mode</span><span class="Extracts-plain-syntax"> = "</span><span class="Extracts-identifier-syntax">r</span><span class="Extracts-plain-syntax">"; </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">filemode_ReadWrite</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">c_mode</span><span class="Extracts-plain-syntax"> = "</span><span class="Extracts-identifier-syntax">r</span><span class="Extracts-plain-syntax">+"; </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">filemode_WriteAppend</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">c_mode</span><span class="Extracts-plain-syntax"> = "</span><span class="Extracts-identifier-syntax">r</span><span class="Extracts-plain-syntax">+"; </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> }</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">h</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">fopen</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">filerefs</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">leafname</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">c_mode</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">h</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">return</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">filerefs</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">handle</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">h</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">mode</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-identifier-syntax">filemode_WriteAppend</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">i7_fseek</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">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">SEEK_END</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-constant-syntax">1</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_fclose</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">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"> < </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"> >= </span><span class="Extracts-constant-syntax">128</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">Too</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">many</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">files</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">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">filerefs</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">handle</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">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">File</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">not</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">open</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">fclose</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">filerefs</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">handle</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">filerefs</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">handle</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">NULL</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_fileref_does_file_exist</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">i7word_t</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"> < </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"> >= </span><span class="Extracts-constant-syntax">128</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">Too</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">many</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">files</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">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">filerefs</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">handle</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">return</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">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">i7_fopen</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">id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">filemode_Read</span><span class="Extracts-plain-syntax">)) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_fclose</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">id</span><span class="Extracts-plain-syntax">); </span><span class="Extracts-identifier-syntax">return</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-plain-syntax"> </span><span class="Extracts-identifier-syntax">return</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">void</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">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">c</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-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">0</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">128</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">Too</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">many</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">files</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">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">filerefs</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">handle</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">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">File</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">not</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">open</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">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">filerefs</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">handle</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">i7_fgetc</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">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"> < </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"> >= </span><span class="Extracts-constant-syntax">128</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">Too</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">many</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">files</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">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">filerefs</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">handle</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">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">File</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">not</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">open</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">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">fgetc</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">filerefs</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">handle</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">c</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7word_t</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">i7word_t</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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_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">i7word_t</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"> < </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"> >= </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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_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>
|
||||
<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">;</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">to_file</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">F</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">to_file_id</span><span class="Extracts-plain-syntax"> = -1;</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">to_memory</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">NULL</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">memory_used</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">memory_capacity</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">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">S</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">write_limit</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">previous_id</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">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">S</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">encode_UTF8</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">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">S</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">chars_read</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">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">[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">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>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b></p>
|
||||
|
||||
<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_initialise_streams</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_open_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>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_stream_open_memory</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">buffer</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">len</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fmode</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_stream_open_memory_uni</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">buffer</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">len</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fmode</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_stream_open_file</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fileref</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">usage</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rock</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">seekmode_Start</span><span class="Extracts-plain-syntax"> (0)</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">seekmode_Current</span><span class="Extracts-plain-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">seekmode_End</span><span class="Extracts-plain-syntax"> (2)</span>
|
||||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_stream_set_position</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">i7word_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">pos</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">seekmode</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_stream_get_position</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">i7word_t</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">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_stream_close</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">i7word_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">result</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">i7_winref</span><span class="Extracts-plain-syntax"> {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">type</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">stream_id</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rock</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax">} </span><span class="Extracts-identifier-syntax">i7_winref</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_window_open</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">split</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">method</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">size</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">wintype</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_stream_of_window</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">i7word_t</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">i7word_t</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">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">i7word_t</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">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">i7word_t</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-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">i7word_t</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">i7word_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_get_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">i7word_t</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">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">i7word_t</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">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>
|
||||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_print_decimal</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">i7word_t</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">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_print_object</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">i7word_t</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">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_print_box</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">x</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_initialise_streams</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">for</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">i</span><span class="Extracts-plain-syntax">=0; </span><span class="Extracts-identifier-syntax">i</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">i</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">NULL</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">i7_stdout_id</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">stdout</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">i7_stdout_id</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">i7_stdout_id</span><span class="Extracts-plain-syntax">].</span><span class="Extracts-identifier-syntax">encode_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">i7_memory_streams</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-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">stderr</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">i7_stderr_id</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">i7_stderr_id</span><span class="Extracts-plain-syntax">].</span><span class="Extracts-identifier-syntax">encode_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">i7_do_glk_stream_set_current</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_stdout_id</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_open_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>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">for</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">i</span><span class="Extracts-plain-syntax">=0; </span><span class="Extracts-identifier-syntax">i</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">i</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_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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_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>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">return</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_stream_open_memory</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">buffer</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">len</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fmode</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rock</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">fmode</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">Only</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">mode</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">supported</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">not</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">n</span><span class="Extracts-plain-syntax">", </span><span class="Extracts-identifier-syntax">fmode</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">i7word_t</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_open_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">NULL</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">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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_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>
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_stream_open_memory_uni</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">buffer</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">len</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fmode</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rock</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">fmode</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">Only</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">mode</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">supported</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">not</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">n</span><span class="Extracts-plain-syntax">", </span><span class="Extracts-identifier-syntax">fmode</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">i7word_t</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_open_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">NULL</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">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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_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>
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_stream_open_file</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fileref</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">usage</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rock</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</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_open_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">NULL</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">id</span><span class="Extracts-plain-syntax">].</span><span class="Extracts-identifier-syntax">to_file_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">fileref</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_fopen</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">fileref</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">usage</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">return</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">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>
|
||||
|
||||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_stream_set_position</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">i7word_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">pos</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">seekmode</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">0</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_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_stream</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">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">-></span><span class="Extracts-identifier-syntax">to_file_id</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">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">origin</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">switch</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">seekmode</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">seekmode_Start</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">origin</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">SEEK_SET</span><span class="Extracts-plain-syntax">; </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">seekmode_Current</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">origin</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">SEEK_CUR</span><span class="Extracts-plain-syntax">; </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">seekmode_End</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">origin</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">SEEK_END</span><span class="Extracts-plain-syntax">; </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">default</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">Unknown</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">seekmode</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">i7_fseek</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">S</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">to_file_id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">pos</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">origin</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">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">glk_stream_set_position</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">supported</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">only</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">file</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>
|
||||
<span class="Extracts-plain-syntax"> }</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_stream_get_position</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">i7word_t</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"> < </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"> >= </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_stream</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">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">-></span><span class="Extracts-identifier-syntax">to_file_id</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">return</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">i7_ftell</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">S</span><span class="Extracts-plain-syntax">-></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-plain-syntax"> </span><span class="Extracts-identifier-syntax">return</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">i7word_t</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">memory_used</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_close</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">i7word_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">result</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">0</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_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">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">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">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">stdout</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">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"> = &(</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">-></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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_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">-></span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_ID</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">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">-></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">-></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"> < </span><span class="Extracts-identifier-syntax">S</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">i</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">i</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">memory_used</span><span class="Extracts-plain-syntax">)</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_write_word</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">S</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">i</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">to_memory</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-identifier-syntax">else</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_write_word</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">S</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">i</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">else</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"> < </span><span class="Extracts-identifier-syntax">S</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">i</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">i</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">memory_used</span><span class="Extracts-plain-syntax">)</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_write_byte</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">S</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">i</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">to_memory</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-identifier-syntax">else</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_write_byte</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">S</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">i</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-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">result</span><span class="Extracts-plain-syntax"> == -1) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_push</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">S</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">chars_read</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_push</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">S</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">memory_used</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">result</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_write_word</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">result</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">S</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">chars_read</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_write_word</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">result</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">S</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">memory_used</span><span class="Extracts-plain-syntax">);</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">-></span><span class="Extracts-identifier-syntax">to_file_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_fclose</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">S</span><span class="Extracts-plain-syntax">-></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">-></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">S</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">memory_used</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_winref</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">winrefs</span><span class="Extracts-plain-syntax">[128];</span>
|
||||
<span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_no_winrefs</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_window_open</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">split</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">method</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">size</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">wintype</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rock</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_no_winrefs</span><span class="Extracts-plain-syntax"> >= </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">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">windows</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">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">i7_no_winrefs</span><span class="Extracts-plain-syntax">++;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">winrefs</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">type</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">wintype</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">winrefs</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">stream_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_open_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">stdout</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">winrefs</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">rock</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">rock</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>
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_stream_of_window</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">i7word_t</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"> < </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"> >= </span><span class="Extracts-identifier-syntax">i7_no_winrefs</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">Window</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">return</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">winrefs</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">stream_id</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7word_t</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">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">i7word_t</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"> < </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"> >= </span><span class="Extracts-identifier-syntax">i7_no_winrefs</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">Window</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">return</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">winrefs</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">rock</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_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">i7word_t</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"> = &(</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">-></span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_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">-></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">-></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">-></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">i7word_t</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">i7word_t</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_stream</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">i7_memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">stream_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">-></span><span class="Extracts-identifier-syntax">to_file</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">win_id</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-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"> >= </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">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-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"> >= </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"> >> </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"> >> </span><span class="Extracts-constant-syntax">6</span><span class="Extracts-plain-syntax">) & </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">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"> & </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">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">c</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-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"> >> </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"> & </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-identifier-syntax">if</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">to_file_id</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_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">-></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">-></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">else</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">-></span><span class="Extracts-identifier-syntax">memory_used</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">memory_capacity</span><span class="Extracts-plain-syntax">) {</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">needed</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">4</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">memory_capacity</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">needed</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">needed</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">1024</span><span class="Extracts-plain-syntax">;</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">new_data</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">calloc</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">needed</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">sizeof</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">wchar_t</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">new_data</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">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">memory</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">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">=0; </span><span class="Extracts-identifier-syntax">i</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">memory_used</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">new_data</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">S</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">to_memory</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-identifier-syntax">free</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">to_memory</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">to_memory</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">new_data</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">-></span><span class="Extracts-identifier-syntax">to_memory</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">memory_used</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">x</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> }</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_get_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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">stream_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">S</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">stream_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">-></span><span class="Extracts-identifier-syntax">to_file_id</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">chars_read</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_fgetc</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">S</span><span class="Extracts-plain-syntax">-></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-plain-syntax"> </span><span class="Extracts-identifier-syntax">return</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">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">i7word_t</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">x</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-constant-syntax">13</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">x</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">10</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">-></span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_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>
|
||||
<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_string</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">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax">=0; </span><span class="Extracts-identifier-syntax">c_string</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">i</span><span class="Extracts-plain-syntax">++)</span>
|
||||
|
@ -565,30 +157,72 @@ function togglePopup(material_id) {
|
|||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">sprintf</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">room</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">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">i7_print_C_string</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">room</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_object</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">i7word_t</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_print_decimal</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">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_box</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">i7word_t</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">printf</span><span class="Extracts-plain-syntax">("</span><span class="Extracts-identifier-syntax">Unimplemented</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">i7_print_box</span><span class="Extracts-plain-syntax">.\</span><span class="Extracts-identifier-syntax">n</span><span class="Extracts-plain-syntax">");</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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
|
||||
<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">evtype_None</span><span class="Extracts-plain-syntax"> (0)</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">evtype_Timer</span><span class="Extracts-plain-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">evtype_CharInput</span><span class="Extracts-plain-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">evtype_LineInput</span><span class="Extracts-plain-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">evtype_MouseInput</span><span class="Extracts-plain-syntax"> (4)</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">evtype_Arrange</span><span class="Extracts-plain-syntax"> (5)</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">evtype_Redraw</span><span class="Extracts-plain-syntax"> (6)</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">evtype_SoundNotify</span><span class="Extracts-plain-syntax"> (7)</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">evtype_Hyperlink</span><span class="Extracts-plain-syntax"> (8)</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">evtype_VolumeNotify</span><span class="Extracts-plain-syntax"> (9)</span>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>Which in turn uses the <span class="extract"><span class="Extracts-extract-syntax">@glk</span></span> opcode:
|
||||
</p>
|
||||
|
||||
<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">i7_glk_event</span><span class="Extracts-plain-syntax"> {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">type</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">val1</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">val2</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax">} </span><span class="Extracts-identifier-syntax">i7_glk_event</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-identifier-syntax">i7_glk_event</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">i7_next_event</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_make_event</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_glk_event</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">e</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_select</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">structure</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_request_line_event</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">window_id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">buffer</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">max_len</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">init_len</span><span class="Extracts-plain-syntax">);</span>
|
||||
<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_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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">x</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_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">i7word_t</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">x</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-constant-syntax">13</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">x</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">10</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_push</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">x</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">current</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_opcode_glk</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_glk_stream_get_current</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">current</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_push</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">current</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_opcode_glk</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_glk_put_char_stream</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">NULL</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>At this point, then, all of our I/O needs will be handled if we can just
|
||||
define two functions: <span class="extract"><span class="Extracts-extract-syntax">i7_styling</span></span>, for setting the font style, and <span class="extract"><span class="Extracts-extract-syntax">i7_opcode_glk</span></span>.
|
||||
So we're nearly done, right? Right?
|
||||
</p>
|
||||
|
||||
<p class="commentary">But in fact we route both of these functions through hooks which the user can
|
||||
provide, so that the user can change the entire I/O model (if she is willing to
|
||||
code up an alternative):
|
||||
</p>
|
||||
|
||||
<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_styling</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">which</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</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_default_stylist</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">which</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</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_opcode_glk</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">glk_api_selector</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">varargc</span><span class="Extracts-plain-syntax">,</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">z</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_default_glk</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">glk_api_selector</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">varargc</span><span class="Extracts-plain-syntax">,</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">z</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_styling</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">which</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">stylist</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">which</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">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_opcode_glk</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">glk_api_selector</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">varargc</span><span class="Extracts-plain-syntax">,</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">z</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">glk_implementation</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">glk_api_selector</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">varargc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">z</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>What makes this more burdensome is that <span class="extract"><span class="Extracts-extract-syntax">@glk</span></span> is not so much a single opcode
|
||||
as an entire instruction set: it is an compendium of over 120 disparate operations.
|
||||
Indeed, the <span class="extract"><span class="Extracts-extract-syntax">glk_api_selector</span></span> argument to <span class="extract"><span class="Extracts-extract-syntax">i7_opcode_glk</span></span> chooses which one is
|
||||
being used. For convenience, we define a set of names for them all — which does
|
||||
not imply any commitment to implement them all.
|
||||
</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_glk_exit</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x0001</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_glk_set_interrupt_handler</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x0002</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_glk_tick</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x0003</span>
|
||||
|
@ -712,187 +346,68 @@ function togglePopup(material_id) {
|
|||
<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_glk_date_to_time_local</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x016D</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_glk_date_to_simple_time_utc</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x016E</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_glk_date_to_simple_time_local</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x016F</span>
|
||||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_opcode_glk</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">glk_api_selector</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">varargc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">z</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fn_i7_mgl_IndefArt</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_obj</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_i</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fn_i7_mgl_DefArt</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_obj</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_i</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fn_i7_mgl_CIndefArt</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_obj</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_i</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fn_i7_mgl_CDefArt</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_obj</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_i</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fn_i7_mgl_PrintShortName</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_obj</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_i</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_name</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">i7word_t</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">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_print_object</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">i7word_t</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">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_print_box</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">i7word_t</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">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_read</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">x</span><span class="Extracts-plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.h.</li></ul>
|
||||
<p class="commentary">A few other constants will also be useful. These are the window IDs for the
|
||||
three Glk windows used by the standard Inform 7 kits: <span class="extract"><span class="Extracts-extract-syntax">I7_BODY_TEXT_ID</span></span> is
|
||||
where text is regularly printed; <span class="extract"><span class="Extracts-extract-syntax">I7_STATUS_TEXT_ID</span></span> is for the "status line"
|
||||
at the top of a traditional interactive fiction display, but can simply be
|
||||
ignored for non-IF purposes; and <span class="extract"><span class="Extracts-extract-syntax">I7_BOX_TEXT_ID</span></span> is where box quotations
|
||||
would be displayed over the top of text, though C projects probably should
|
||||
not use this, and the default Glk implementation here ignores it.
|
||||
</p>
|
||||
|
||||
<pre class="Extracts-displayed-code all-displayed-code code-font">
|
||||
<span class="Extracts-identifier-syntax">i7_glk_event</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_events_ring_buffer</span><span class="Extracts-plain-syntax">[32];</span>
|
||||
<span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_rb_back</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_rb_front</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_glk_event</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">i7_next_event</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">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">i7_rb_front</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-identifier-syntax">i7_rb_back</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">NULL</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_event</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">e</span><span class="Extracts-plain-syntax"> = &(</span><span class="Extracts-identifier-syntax">i7_events_ring_buffer</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">i7_rb_back</span><span class="Extracts-plain-syntax">]);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_rb_back</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_rb_back</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-constant-syntax">32</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">i7_rb_back</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">return</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">e</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_make_event</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_glk_event</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">e</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_events_ring_buffer</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">i7_rb_front</span><span class="Extracts-plain-syntax">] = </span><span class="Extracts-identifier-syntax">e</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_rb_front</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_rb_front</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-constant-syntax">32</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">i7_rb_front</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_select</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">structure</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_event</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">e</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_next_event</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">e</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-identifier-syntax">NULL</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">No</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">events</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">available</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">to</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">select</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">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">structure</span><span class="Extracts-plain-syntax"> == -1) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_push</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">e</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">type</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_push</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">e</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_push</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">e</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">val1</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_push</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">e</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">val2</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">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">structure</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_write_word</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">structure</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">e</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">type</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_write_word</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">structure</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">e</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_write_word</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">structure</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">e</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">val1</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_write_word</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">structure</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">e</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">val2</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> }</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-constant-syntax">0</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">i7_no_lr</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_request_line_event</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">window_id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">buffer</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">max_len</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">init_len</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_event</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">e</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">e</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">type</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">evtype_LineInput</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">e</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">win_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">window_id</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">e</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">val1</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">e</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">val2</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">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">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">pos</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">init_len</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">-></span><span class="Extracts-identifier-syntax">sender</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">i7_benign_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">char</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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">sender</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">send_count</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">i</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">while</span><span class="Extracts-plain-syntax"> (1) {</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">[</span><span class="Extracts-identifier-syntax">i</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"> == </span><span class="Extracts-identifier-syntax">EOF</span><span class="Extracts-plain-syntax">) || (</span><span class="Extracts-identifier-syntax">c</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">c</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">c</span><span class="Extracts-plain-syntax"> == '\</span><span class="Extracts-identifier-syntax">r</span><span class="Extracts-plain-syntax">')) </span><span class="Extracts-identifier-syntax">break</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">pos</span><span class="Extracts-plain-syntax"> < </span><span class="Extracts-identifier-syntax">max_len</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">i7_write_byte</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">buffer</span><span class="Extracts-plain-syntax"> + </span><span class="Extracts-identifier-syntax">pos</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">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">pos</span><span class="Extracts-plain-syntax"> < </span><span class="Extracts-identifier-syntax">max_len</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">i7_write_byte</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">buffer</span><span class="Extracts-plain-syntax"> + </span><span class="Extracts-identifier-syntax">pos</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">else</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_write_byte</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">buffer</span><span class="Extracts-plain-syntax"> + </span><span class="Extracts-identifier-syntax">max_len</span><span class="Extracts-plain-syntax">-1, </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">e</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">val1</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">pos</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_make_event</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">e</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_no_lr</span><span class="Extracts-plain-syntax">++ == </span><span class="Extracts-constant-syntax">1000</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">stdout</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">many</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">line</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">events</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">terminating</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">to</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">prevent</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">hang</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">exit</span><span class="Extracts-plain-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-constant-syntax">0</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_opcode_glk</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">glk_api_selector</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">varargc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">z</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_debug_stack</span><span class="Extracts-plain-syntax">("</span><span class="Extracts-identifier-syntax">i7_opcode_glk</span><span class="Extracts-plain-syntax">");</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[5] = { </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</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">argc</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">while</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">varargc</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">v</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_pull</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">argc</span><span class="Extracts-plain-syntax"> < </span><span class="Extracts-constant-syntax">5</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">args</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">v</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">varargc</span><span class="Extracts-plain-syntax">--;</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">rv</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">switch</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">glk_api_selector</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_gestalt</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_window_iterate</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_window_open</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_do_glk_window_open</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">args</span><span class="Extracts-plain-syntax">[0], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[1], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[2], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[3], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[4]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_set_window</span><span class="Extracts-plain-syntax">:</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">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7_stream_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">args</span><span class="Extracts-plain-syntax">[0])); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_stream_iterate</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_fileref_iterate</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_stylehint_set</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_schannel_iterate</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_schannel_create</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_set_style</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_window_move_cursor</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_stream_get_position</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_do_glk_stream_get_position</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">args</span><span class="Extracts-plain-syntax">[0]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_window_get_size</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">args</span><span class="Extracts-plain-syntax">[0]) </span><span class="Extracts-identifier-syntax">i7_write_word</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">args</span><span class="Extracts-plain-syntax">[0], </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">80</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">args</span><span class="Extracts-plain-syntax">[1]) </span><span class="Extracts-identifier-syntax">i7_write_word</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">args</span><span class="Extracts-plain-syntax">[1], </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">8</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_request_line_event</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_do_glk_request_line_event</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">args</span><span class="Extracts-plain-syntax">[0], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[1], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[2], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[3]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_select</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_do_glk_select</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">args</span><span class="Extracts-plain-syntax">[0]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_stream_close</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_stream_close</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">args</span><span class="Extracts-plain-syntax">[0], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[1]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_stream_set_current</span><span class="Extracts-plain-syntax">:</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">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[0]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_stream_get_current</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">proc</span><span class="Extracts-plain-syntax">); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_stream_open_memory</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_do_glk_stream_open_memory</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">args</span><span class="Extracts-plain-syntax">[0], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[1], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[2], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[3]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_stream_open_memory_uni</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_do_glk_stream_open_memory_uni</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">args</span><span class="Extracts-plain-syntax">[0], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[1], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[2], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[3]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_fileref_create_by_name</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_do_glk_fileref_create_by_name</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">args</span><span class="Extracts-plain-syntax">[0], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[1], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[2]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_fileref_does_file_exist</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_do_glk_fileref_does_file_exist</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">args</span><span class="Extracts-plain-syntax">[0]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_stream_open_file</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_do_glk_stream_open_file</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">args</span><span class="Extracts-plain-syntax">[0], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[1], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[2]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_fileref_destroy</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_char_to_lower</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[0];</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">rv</span><span class="Extracts-plain-syntax"> >= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x41</span><span class="Extracts-plain-syntax">) && (</span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> <= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x5A</span><span class="Extracts-plain-syntax">)) ||</span>
|
||||
<span class="Extracts-plain-syntax"> ((</span><span class="Extracts-identifier-syntax">rv</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">rv</span><span class="Extracts-plain-syntax"> <= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">xD6</span><span class="Extracts-plain-syntax">)) ||</span>
|
||||
<span class="Extracts-plain-syntax"> ((</span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> >= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">xD8</span><span class="Extracts-plain-syntax">) && (</span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> <= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">xDE</span><span class="Extracts-plain-syntax">))) </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> += </span><span class="Extracts-constant-syntax">32</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_char_to_upper</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[0];</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">rv</span><span class="Extracts-plain-syntax"> >= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x61</span><span class="Extracts-plain-syntax">) && (</span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> <= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x7A</span><span class="Extracts-plain-syntax">)) ||</span>
|
||||
<span class="Extracts-plain-syntax"> ((</span><span class="Extracts-identifier-syntax">rv</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">rv</span><span class="Extracts-plain-syntax"> <= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">xF6</span><span class="Extracts-plain-syntax">)) ||</span>
|
||||
<span class="Extracts-plain-syntax"> ((</span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> >= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">xF8</span><span class="Extracts-plain-syntax">) && (</span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> <= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">xFE</span><span class="Extracts-plain-syntax">))) </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> -= </span><span class="Extracts-constant-syntax">32</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_stream_set_position</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_do_glk_stream_set_position</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">args</span><span class="Extracts-plain-syntax">[0], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[1], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[2]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_put_char_stream</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">args</span><span class="Extracts-plain-syntax">[0], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[1]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_get_char_stream</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_do_glk_get_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">args</span><span class="Extracts-plain-syntax">[0]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">default</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">printf</span><span class="Extracts-plain-syntax">("</span><span class="Extracts-identifier-syntax">Unimplemented</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">i7_opcode_glk</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">n</span><span class="Extracts-plain-syntax">", </span><span class="Extracts-identifier-syntax">glk_api_selector</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">break</span><span class="Extracts-plain-syntax">;</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">z</span><span class="Extracts-plain-syntax">) *</span><span class="Extracts-identifier-syntax">z</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">rv</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_name</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">i7word_t</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">fn_i7_mgl_PrintShortName</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">x</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">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_print_object</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">i7word_t</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_print_decimal</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">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_box</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">i7word_t</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">printf</span><span class="Extracts-plain-syntax">("</span><span class="Extracts-identifier-syntax">Unimplemented</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">i7_print_box</span><span class="Extracts-plain-syntax">.\</span><span class="Extracts-identifier-syntax">n</span><span class="Extracts-plain-syntax">");</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fn_i7_mgl_pending_boxed_quotation</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-constant-syntax">0</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_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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.h.</li></ul>
|
||||
<p class="commentary">These are needed for different forms of file I/O:
|
||||
</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_fileusage_Data</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x00</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_fileusage_SavedGame</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x01</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_fileusage_Transcript</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x02</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_fileusage_InputRecord</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x03</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_fileusage_TypeMask</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x0f</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_fileusage_TextMode</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x100</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_fileusage_BinaryMode</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x000</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_filemode_Write</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x01</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_filemode_Read</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x02</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_filemode_ReadWrite</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x03</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_filemode_WriteAppend</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x05</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.h.</li></ul>
|
||||
<p class="commentary">And these are modes for seeking a position in a file:
|
||||
</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">seekmode_Start</span><span class="Extracts-plain-syntax"> (0)</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">seekmode_Current</span><span class="Extracts-plain-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">seekmode_End</span><span class="Extracts-plain-syntax"> (2)</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.h.</li></ul>
|
||||
<p class="commentary">And these are "event types":
|
||||
</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_evtype_None</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">define</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_evtype_Timer</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_evtype_CharInput</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_evtype_LineInput</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_evtype_MouseInput</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">4</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_evtype_Arrange</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">5</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_evtype_Redraw</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">6</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_evtype_SoundNotify</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">7</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_evtype_Hyperlink</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">8</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_evtype_VolumeNotify</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">9</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.h.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-cfm.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresscurrent">cim</li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-cuf.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-cfm.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresscurrent">cim</li><li class="progresssection"><a href="5-cmn.html">cmn</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-cmn.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -387,7 +387,7 @@ so there is very little to do:
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ccn.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresscurrent">clt</li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-com.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ccn.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresscurrent">clt</li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cmn.html">cmn</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-com.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -724,7 +724,7 @@ then possible to restore again to go back another step, and so on:
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-cgv.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresscurrent">cmm</li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-cas.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-cgv.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresscurrent">cmm</li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cmn.html">cmn</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-cas.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
724
docs/final-module/5-cmn.html
Normal file
724
docs/final-module/5-cmn.html
Normal file
|
@ -0,0 +1,724 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>C Miniglk</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Extracts-Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="../core-module/index.html">core</a></li>
|
||||
<li><a href="../assertions-module/index.html">assertions</a></li>
|
||||
<li><a href="../values-module/index.html">values</a></li>
|
||||
<li><a href="../knowledge-module/index.html">knowledge</a></li>
|
||||
<li><a href="../imperative-module/index.html">imperative</a></li>
|
||||
<li><a href="../runtime-module/index.html">runtime</a></li>
|
||||
<li><a href="../if-module/index.html">if</a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="../index-module/index.html">index</a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../bytecode-module/index.html">bytecode</a></li>
|
||||
<li><a href="../building-module/index.html">building</a></li>
|
||||
<li><a href="../pipeline-module/index.html">pipeline</a></li>
|
||||
<li><a href="index.html"><span class="selectedlink">final</span></a></li>
|
||||
</ul><h2>Services</h2><ul>
|
||||
<li><a href="../arch-module/index.html">arch</a></li>
|
||||
<li><a href="../calculus-module/index.html">calculus</a></li>
|
||||
<li><a href="../html-module/index.html">html</a></li>
|
||||
<li><a href="../inflections-module/index.html">inflections</a></li>
|
||||
<li><a href="../kinds-module/index.html">kinds</a></li>
|
||||
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
||||
<li><a href="../problems-module/index.html">problems</a></li>
|
||||
<li><a href="../syntax-module/index.html">syntax</a></li>
|
||||
<li><a href="../words-module/index.html">words</a></li>
|
||||
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'C Miniglk' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inter Modules</a></li><li><a href="index.html">final</a></li><li><a href="index.html#5">Chapter 5: C</a></li><li><b>C Miniglk</b></li></ul></div>
|
||||
<p class="purpose">Just enough of the Glk input/output interface to allow simple console text in and out, and no more.</p>
|
||||
|
||||
<ul class="toc"><li><a href="5-cmn.html#SP1">§1. Glk - an apology</a></li><li><a href="5-cmn.html#SP2">§2. Miniglk</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Glk - an apology. </b>The code below is in no way a proper implementation of the Glk input/output
|
||||
system, which was developed as an interactive fiction standard by Andrew Plotkin,
|
||||
and which has served us well and will continue to do so. It is not even a full
|
||||
implementation of basic console I/O via Glk, for which see the <span class="extract"><span class="extract-syntax">cheapglk</span></span>
|
||||
C library.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Instead, our aim is to do the absolute minimum possible in simple self-contained
|
||||
C code, and to impose as few restrictions as possible beyond that. The flip side
|
||||
of Glk's gilt-edged engineering quality is that it can be a gilded cage: for some
|
||||
imaginable uses of Inform 7-via-C, say based on Unity or in an iOS app, strict
|
||||
use of Glk would be constraining.
|
||||
</p>
|
||||
|
||||
<p class="commentary">In an attempt to have the best of both worlds, the code below is only the
|
||||
default Glk implementation for an Inform 7-via-C project, and the user can
|
||||
duck out of it by providing an implementation of her own. (Indeed, this could
|
||||
even be <span class="extract"><span class="extract-syntax">cheapglk</span></span>, as mentioned above.)
|
||||
</p>
|
||||
|
||||
<p class="commentary">This section of code therefore defines just two functions, <span class="extract"><span class="extract-syntax">i7_default_stylist</span></span>
|
||||
and <span class="extract"><span class="extract-syntax">i7_default_glk</span></span>, plus their supporting code — which turns out to be quite
|
||||
a lot, but there are only those two points of entry.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Miniglk. </b>Each process needs to keep track of its own files, streams, windows and events,
|
||||
which are wrapped up in a <span class="extract"><span class="extract-syntax">miniglk_data</span></span> structure as follows:
|
||||
</p>
|
||||
|
||||
<pre class="Extracts-displayed-code all-displayed-code code-font">
|
||||
<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">i7_mg_file_t</span><span class="Extracts-plain-syntax"> {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">usage</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">name</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rock</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">leafname</span><span class="Extracts-plain-syntax">[128];</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">handle</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax">} </span><span class="Extracts-identifier-syntax">i7_mg_file_t</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">i7_mg_stream_t</span><span class="Extracts-plain-syntax"> {</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">to_file</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </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">wchar_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">to_memory</span><span class="Extracts-plain-syntax">;</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">memory_used</span><span class="Extracts-plain-syntax">;</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">memory_capacity</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </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">i7word_t</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-plain-syntax"> </span><span class="Extracts-identifier-syntax">size_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">write_limit</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">active</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">encode_UTF8</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">char_size</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">chars_read</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">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">[128];</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">[300];</span>
|
||||
<span class="Extracts-plain-syntax">} </span><span class="Extracts-identifier-syntax">i7_mg_stream_t</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">i7_mg_window_t</span><span class="Extracts-plain-syntax"> {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">type</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">stream_id</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rock</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax">} </span><span class="Extracts-identifier-syntax">i7_mg_window_t</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">i7_mg_event_t</span><span class="Extracts-plain-syntax"> {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">type</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">val1</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">val2</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax">} </span><span class="Extracts-identifier-syntax">i7_mg_event_t</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_MINIGLK_MAX_STREAMS</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">128</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_MINIGLK_MAX_WINDOWS</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">128</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_MINIGLK_RING_BUFFER_SIZE</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-constant-syntax">32</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">miniglk_data</span><span class="Extracts-plain-syntax"> {</span>
|
||||
<span class="Extracts-plain-syntax"> /* </span><span class="Extracts-identifier-syntax">streams</span><span class="Extracts-plain-syntax"> */</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mg_stream_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">I7_MINIGLK_MAX_STREAMS</span><span class="Extracts-plain-syntax">];</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">stdout_stream_id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">stderr_stream_id</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> /* </span><span class="Extracts-identifier-syntax">files</span><span class="Extracts-plain-syntax"> */</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mg_file_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">files</span><span class="Extracts-plain-syntax">[128 + </span><span class="Extracts-constant-syntax">32</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">no_files</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> /* </span><span class="Extracts-identifier-syntax">windows</span><span class="Extracts-plain-syntax"> */</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mg_window_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">windows</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">I7_MINIGLK_MAX_WINDOWS</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">no_windows</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> /* </span><span class="Extracts-identifier-syntax">events</span><span class="Extracts-plain-syntax"> */</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mg_event_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">events_ring_buffer</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">I7_MINIGLK_RING_BUFFER_SIZE</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">rb_back</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">rb_front</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">no_lr</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax">} </span><span class="Extracts-identifier-syntax">miniglk_data</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_initialise_miniglk_data</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>
|
||||
</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_initialise_miniglk_data</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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">malloc</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">sizeof</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">miniglk_data</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">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-identifier-syntax">NULL</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">printf</span><span class="Extracts-plain-syntax">("</span><span class="Extracts-identifier-syntax">Memory</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">allocation</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">failed</span><span class="Extracts-plain-syntax">\</span><span class="Extracts-identifier-syntax">n</span><span class="Extracts-plain-syntax">");</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">exit</span><span class="Extracts-plain-syntax">(1);</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">no_files</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">stdout_stream_id</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">stderr_stream_id</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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">no_windows</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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">rb_back</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">rb_front</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">no_lr</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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b></p>
|
||||
|
||||
<pre class="Extracts-displayed-code all-displayed-code code-font">
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_fileref_create_by_name</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">usage</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</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">i7word_t</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">i7_fseek</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">id</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">pos</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">origin</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_ftell</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">id</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_fopen</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">id</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">mode</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_fclose</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">id</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_fileref_does_file_exist</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">i7word_t</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">void</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">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">c</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">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_fgetc</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">id</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_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_mg_stream_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fn_i7_mgl_TEXT_TY_CharacterLength</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_txt</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_ch</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_i</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_dsize</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_p</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_cp</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_r</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fn_i7_mgl_BlkValueRead</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_from</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_pos</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_do_not_indirect</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_long_block</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_chunk_size_in_bytes</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_header_size_in_bytes</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_flags</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_entry_size_in_bytes</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_seek_byte_position</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_default_stylist</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">which</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</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">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">which</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_mg_stream_t</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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">memory_streams</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">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_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">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">-></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">-></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">-></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">-></span><span class="Extracts-identifier-syntax">style</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">sprintf</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"> + </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">-></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">-></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">-></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">else</span><span class="Extracts-plain-syntax"> {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mg_stream_t</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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">memory_streams</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">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_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">[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">switch</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">case</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</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">sprintf</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-identifier-syntax">bold</span><span class="Extracts-plain-syntax">"); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</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">sprintf</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-identifier-syntax">italic</span><span class="Extracts-plain-syntax">"); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</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">sprintf</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-identifier-syntax">reverse</span><span class="Extracts-plain-syntax">"); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">default</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">L</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">fn_i7_mgl_TEXT_TY_CharacterLength</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">what</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</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">L</span><span class="Extracts-plain-syntax"> > </span><span class="Extracts-constant-syntax">127</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">L</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">127</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">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax">=0; </span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax"><</span><span class="Extracts-identifier-syntax">L</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">S</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">i</span><span class="Extracts-plain-syntax">] = </span><span class="Extracts-identifier-syntax">fn_i7_mgl_BlkValueRead</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">what</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-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</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">style</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">L</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-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">-></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">-></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">-></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">-></span><span class="Extracts-identifier-syntax">style</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">sprintf</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"> + </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">-></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">-></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">-></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-plain-syntax">}</span>
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_fileref_create_by_name</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">usage</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rock</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">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">no_files</span><span class="Extracts-plain-syntax"> >= </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">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>
|
||||
<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">id</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">no_files</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">usage</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">usage</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">name</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">name</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">rock</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">rock</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">handle</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">NULL</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">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax">=0; </span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax"><128; </span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax">++) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7byte_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">i7_read_byte</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">name</span><span class="Extracts-plain-syntax">+1+</span><span class="Extracts-identifier-syntax">i</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">leafname</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">c</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"> == </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">leafname</span><span class="Extracts-plain-syntax">[127] = </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">sprintf</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">leafname</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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">leafname</span><span class="Extracts-plain-syntax">), ".</span><span class="Extracts-identifier-syntax">glkdata</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>
|
||||
|
||||
<span class="Extracts-identifier-syntax">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_fseek</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">id</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">pos</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">origin</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">0</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">128</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">Too</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">many</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">files</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">if</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">handle</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">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">File</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">not</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">open</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">return</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fseek</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">handle</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">pos</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">origin</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">i7_ftell</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">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"> < </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"> >= </span><span class="Extracts-constant-syntax">128</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">Too</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">many</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">files</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">if</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">handle</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">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">File</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">not</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">open</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">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">t</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">ftell</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">handle</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">t</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">i7_fopen</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">id</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">mode</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">0</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">128</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">Too</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">many</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">files</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">if</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">handle</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">File</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">open</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">char</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">c_mode</span><span class="Extracts-plain-syntax"> = "</span><span class="Extracts-identifier-syntax">r</span><span class="Extracts-plain-syntax">";</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">switch</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">mode</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_filemode_Write</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">c_mode</span><span class="Extracts-plain-syntax"> = "</span><span class="Extracts-identifier-syntax">w</span><span class="Extracts-plain-syntax">"; </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_filemode_Read</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">c_mode</span><span class="Extracts-plain-syntax"> = "</span><span class="Extracts-identifier-syntax">r</span><span class="Extracts-plain-syntax">"; </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_filemode_ReadWrite</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">c_mode</span><span class="Extracts-plain-syntax"> = "</span><span class="Extracts-identifier-syntax">r</span><span class="Extracts-plain-syntax">+"; </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_filemode_WriteAppend</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">c_mode</span><span class="Extracts-plain-syntax"> = "</span><span class="Extracts-identifier-syntax">r</span><span class="Extracts-plain-syntax">+"; </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> }</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">h</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">fopen</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">leafname</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">c_mode</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">h</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">return</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">handle</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">h</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">mode</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-identifier-syntax">i7_filemode_WriteAppend</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">i7_fseek</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">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">SEEK_END</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-constant-syntax">1</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_fclose</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">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"> < </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"> >= </span><span class="Extracts-constant-syntax">128</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">Too</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">many</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">files</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">if</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">handle</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">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">File</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">not</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">open</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">fclose</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">handle</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">handle</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">NULL</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_fileref_does_file_exist</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">i7word_t</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"> < </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"> >= </span><span class="Extracts-constant-syntax">128</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">Too</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">many</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">files</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">if</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">handle</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">return</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">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">i7_fopen</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">id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7_filemode_Read</span><span class="Extracts-plain-syntax">)) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_fclose</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">id</span><span class="Extracts-plain-syntax">); </span><span class="Extracts-identifier-syntax">return</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-plain-syntax"> </span><span class="Extracts-identifier-syntax">return</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">void</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">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">c</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-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">0</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">128</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">Too</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">many</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">files</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">if</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">handle</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">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">File</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">not</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">open</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">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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">handle</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">i7_fgetc</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">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"> < </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"> >= </span><span class="Extracts-constant-syntax">128</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">Too</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">many</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">files</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">if</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">handle</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">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">File</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">not</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">open</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">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">fgetc</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">files</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">handle</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">c</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_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_miniglk_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">i7word_t</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"> < </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"> >= </span><span class="Extracts-identifier-syntax">I7_MINIGLK_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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_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_mg_stream_t</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>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mg_stream_t</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><span class="Extracts-identifier-syntax">S</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">to_file</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">F</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">to_file_id</span><span class="Extracts-plain-syntax"> = -1;</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">to_memory</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">NULL</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">memory_used</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">memory_capacity</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">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">S</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">write_limit</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">previous_id</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">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">S</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">encode_UTF8</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">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">S</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">chars_read</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">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">[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">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>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b></p>
|
||||
|
||||
<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_initialise_streams</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_open_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>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_stream_open_memory</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">buffer</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">len</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fmode</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_stream_open_memory_uni</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">buffer</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">len</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fmode</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_stream_open_file</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fileref</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">usage</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</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">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_stream_set_position</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">i7word_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">pos</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">seekmode</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_stream_get_position</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">i7word_t</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">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_stream_close</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">i7word_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">result</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_window_open</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">split</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">method</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">size</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">wintype</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_stream_of_window</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">i7word_t</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">i7word_t</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">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">i7word_t</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">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">i7word_t</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-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_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">i7word_t</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">i7word_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_get_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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">stream_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_initialise_streams</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">for</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">i</span><span class="Extracts-plain-syntax">=0; </span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax"><</span><span class="Extracts-identifier-syntax">I7_MINIGLK_MAX_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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">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">NULL</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">memory_streams</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">stdout_stream_id</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">stdout</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">memory_streams</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">stdout_stream_id</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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">memory_streams</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">stdout_stream_id</span><span class="Extracts-plain-syntax">].</span><span class="Extracts-identifier-syntax">encode_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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">memory_streams</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">stderr_stream_id</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">stderr</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">memory_streams</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">stderr_stream_id</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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">memory_streams</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">stderr_stream_id</span><span class="Extracts-plain-syntax">].</span><span class="Extracts-identifier-syntax">encode_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">i7_miniglk_stream_set_current</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">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">stdout_stream_id</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_open_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>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">for</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">i</span><span class="Extracts-plain-syntax">=0; </span><span class="Extracts-identifier-syntax">i</span><span class="Extracts-plain-syntax"><</span><span class="Extracts-identifier-syntax">I7_MINIGLK_MAX_STREAMS</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-identifier-syntax">if</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">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">-></span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_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>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">return</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_stream_open_memory</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">buffer</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">len</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fmode</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rock</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">fmode</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">Only</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">mode</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">supported</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">not</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">n</span><span class="Extracts-plain-syntax">", </span><span class="Extracts-identifier-syntax">fmode</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">i7word_t</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_open_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">NULL</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_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>
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_stream_open_memory_uni</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">buffer</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">len</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fmode</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rock</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">fmode</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">Only</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">mode</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">supported</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">not</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">n</span><span class="Extracts-plain-syntax">", </span><span class="Extracts-identifier-syntax">fmode</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">i7word_t</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_open_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">NULL</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_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>
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_stream_open_file</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fileref</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">usage</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rock</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</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_open_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">NULL</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">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">to_file_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">fileref</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_fopen</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">fileref</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">usage</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">return</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">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>
|
||||
|
||||
<span class="Extracts-identifier-syntax">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_stream_set_position</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">i7word_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">pos</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">seekmode</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">0</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_MINIGLK_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_mg_stream_t</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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">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">-></span><span class="Extracts-identifier-syntax">to_file_id</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">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">origin</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">switch</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">seekmode</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">seekmode_Start</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">origin</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">SEEK_SET</span><span class="Extracts-plain-syntax">; </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">seekmode_Current</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">origin</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">SEEK_CUR</span><span class="Extracts-plain-syntax">; </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">seekmode_End</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">origin</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">SEEK_END</span><span class="Extracts-plain-syntax">; </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">default</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">Unknown</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">seekmode</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">i7_fseek</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">S</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">to_file_id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">pos</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">origin</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">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">glk_stream_set_position</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">supported</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">only</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">file</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>
|
||||
<span class="Extracts-plain-syntax"> }</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_stream_get_position</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">i7word_t</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"> < </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"> >= </span><span class="Extracts-identifier-syntax">I7_MINIGLK_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_mg_stream_t</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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">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">-></span><span class="Extracts-identifier-syntax">to_file_id</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">return</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">i7_ftell</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">S</span><span class="Extracts-plain-syntax">-></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-plain-syntax"> </span><span class="Extracts-identifier-syntax">return</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">i7word_t</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">memory_used</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_miniglk_stream_close</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">i7word_t</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">result</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">0</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_MINIGLK_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">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">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">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">stdout</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">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_mg_stream_t</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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">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">-></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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_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">-></span><span class="Extracts-identifier-syntax">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_ID</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">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">-></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">-></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"> < </span><span class="Extracts-identifier-syntax">S</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">i</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">i</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">memory_used</span><span class="Extracts-plain-syntax">)</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_write_word</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">S</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">i</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">to_memory</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-identifier-syntax">else</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_write_word</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">S</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">i</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">else</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"> < </span><span class="Extracts-identifier-syntax">S</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">i</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">i</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">memory_used</span><span class="Extracts-plain-syntax">)</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_write_byte</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">S</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">i</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">to_memory</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-identifier-syntax">else</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_write_byte</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">S</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">i</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-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">result</span><span class="Extracts-plain-syntax"> == -1) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_push</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">S</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">chars_read</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_push</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">S</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">memory_used</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">result</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_write_word</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">result</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">S</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">chars_read</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_write_word</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">result</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">S</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">memory_used</span><span class="Extracts-plain-syntax">);</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">-></span><span class="Extracts-identifier-syntax">to_file_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_fclose</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">S</span><span class="Extracts-plain-syntax">-></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">-></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">S</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">memory_used</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_window_open</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">split</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">method</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">size</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">wintype</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rock</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">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">no_windows</span><span class="Extracts-plain-syntax"> >= </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">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">windows</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">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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">no_windows</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">windows</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">type</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">wintype</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">windows</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">stream_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_open_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">stdout</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">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">windows</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">rock</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">rock</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>
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_stream_of_window</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">i7word_t</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"> < </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"> >= </span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">no_windows</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">Window</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">return</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">windows</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">stream_id</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7word_t</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">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">i7word_t</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"> < </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"> >= </span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">no_windows</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">Window</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">return</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">windows</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">rock</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_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">i7word_t</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_mg_stream_t</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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">memory_streams</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">state</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">current_output_stream_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">-></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">-></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">-></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_miniglk_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">i7word_t</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">i7word_t</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_mg_stream_t</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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">stream_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">-></span><span class="Extracts-identifier-syntax">to_file</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">win_id</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-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"> >= </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">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-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"> >= </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"> >> </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"> >> </span><span class="Extracts-constant-syntax">6</span><span class="Extracts-plain-syntax">) & </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">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"> & </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">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">c</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-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"> >> </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"> & </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-identifier-syntax">if</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">to_file_id</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_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">-></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">-></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">else</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">-></span><span class="Extracts-identifier-syntax">memory_used</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">memory_capacity</span><span class="Extracts-plain-syntax">) {</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">needed</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">4</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">memory_capacity</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">needed</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">needed</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-constant-syntax">1024</span><span class="Extracts-plain-syntax">;</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">new_data</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">calloc</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">needed</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">sizeof</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">wchar_t</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">new_data</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">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">memory</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">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">=0; </span><span class="Extracts-identifier-syntax">i</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">memory_used</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">new_data</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">S</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">to_memory</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-identifier-syntax">free</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">to_memory</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">to_memory</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">new_data</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">-></span><span class="Extracts-identifier-syntax">to_memory</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">memory_used</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">x</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> }</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_get_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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">stream_id</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mg_stream_t</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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">memory_streams</span><span class="Extracts-plain-syntax">[</span><span class="Extracts-identifier-syntax">stream_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">-></span><span class="Extracts-identifier-syntax">to_file_id</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">chars_read</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_fgetc</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">S</span><span class="Extracts-plain-syntax">-></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-plain-syntax"> </span><span class="Extracts-identifier-syntax">return</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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
|
||||
<pre class="Extracts-displayed-code all-displayed-code code-font">
|
||||
<span class="Extracts-identifier-syntax">i7_mg_event_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">i7_next_event</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_make_event</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_mg_event_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">e</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_select</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">structure</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_request_line_event</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">window_id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">buffer</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">max_len</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">init_len</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fn_i7_mgl_IndefArt</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_obj</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_i</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fn_i7_mgl_DefArt</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_obj</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_i</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fn_i7_mgl_CIndefArt</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_obj</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_i</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fn_i7_mgl_CDefArt</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_obj</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_i</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fn_i7_mgl_PrintShortName</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_obj</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mgl_local_i</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_name</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">i7word_t</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">void</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_read</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">x</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">i7_mg_event_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">i7_next_event</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">if</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">rb_front</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">rb_back</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">NULL</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mg_event_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">e</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">events_ring_buffer</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">rb_back</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">rb_back</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">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">rb_back</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-identifier-syntax">I7_MINIGLK_RING_BUFFER_SIZE</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">rb_back</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">return</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">e</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_make_event</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_mg_event_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">e</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">events_ring_buffer</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">rb_front</span><span class="Extracts-plain-syntax">] = </span><span class="Extracts-identifier-syntax">e</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">rb_front</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">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">rb_front</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-identifier-syntax">I7_MINIGLK_RING_BUFFER_SIZE</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">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">rb_front</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_select</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">structure</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mg_event_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">e</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_next_event</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">e</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-identifier-syntax">NULL</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">No</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">events</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">available</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">to</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">select</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">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">structure</span><span class="Extracts-plain-syntax"> == -1) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_push</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">e</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">type</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_push</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">e</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_push</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">e</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">val1</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_push</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">e</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">val2</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">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">structure</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_write_word</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">structure</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">e</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">type</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_write_word</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">structure</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">e</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_write_word</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">structure</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">e</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">val1</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_write_word</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">structure</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">e</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">val2</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> }</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-constant-syntax">0</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
|
||||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_request_line_event</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">window_id</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">buffer</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">max_len</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">init_len</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_mg_event_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">e</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">e</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">type</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_evtype_LineInput</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">e</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">win_id</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">window_id</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">e</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">val1</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">e</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">val2</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">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">int</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">pos</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">init_len</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">-></span><span class="Extracts-identifier-syntax">sender</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">i7_benign_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">char</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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">sender</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">send_count</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">i</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">while</span><span class="Extracts-plain-syntax"> (1) {</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">[</span><span class="Extracts-identifier-syntax">i</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"> == </span><span class="Extracts-identifier-syntax">EOF</span><span class="Extracts-plain-syntax">) || (</span><span class="Extracts-identifier-syntax">c</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">c</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">c</span><span class="Extracts-plain-syntax"> == '\</span><span class="Extracts-identifier-syntax">r</span><span class="Extracts-plain-syntax">')) </span><span class="Extracts-identifier-syntax">break</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">pos</span><span class="Extracts-plain-syntax"> < </span><span class="Extracts-identifier-syntax">max_len</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">i7_write_byte</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">buffer</span><span class="Extracts-plain-syntax"> + </span><span class="Extracts-identifier-syntax">pos</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">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">pos</span><span class="Extracts-plain-syntax"> < </span><span class="Extracts-identifier-syntax">max_len</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">i7_write_byte</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">buffer</span><span class="Extracts-plain-syntax"> + </span><span class="Extracts-identifier-syntax">pos</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">else</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_write_byte</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">buffer</span><span class="Extracts-plain-syntax"> + </span><span class="Extracts-identifier-syntax">max_len</span><span class="Extracts-plain-syntax">-1, </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">e</span><span class="Extracts-plain-syntax">.</span><span class="Extracts-identifier-syntax">val1</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">pos</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_make_event</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">e</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">-></span><span class="Extracts-identifier-syntax">miniglk</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">no_lr</span><span class="Extracts-plain-syntax">++ == </span><span class="Extracts-constant-syntax">1000</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">stdout</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">many</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">line</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">events</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">terminating</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">to</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">prevent</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">hang</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">exit</span><span class="Extracts-plain-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-constant-syntax">0</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_default_glk</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">glk_api_selector</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">varargc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">z</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_debug_stack</span><span class="Extracts-plain-syntax">("</span><span class="Extracts-identifier-syntax">i7_opcode_glk</span><span class="Extracts-plain-syntax">");</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[5] = { </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">0</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">argc</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">while</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">varargc</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">v</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_pull</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">argc</span><span class="Extracts-plain-syntax"> < </span><span class="Extracts-constant-syntax">5</span><span class="Extracts-plain-syntax">) </span><span class="Extracts-identifier-syntax">args</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">v</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">varargc</span><span class="Extracts-plain-syntax">--;</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">rv</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">switch</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">glk_api_selector</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_gestalt</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_window_iterate</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_window_open</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_miniglk_window_open</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">args</span><span class="Extracts-plain-syntax">[0], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[1], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[2], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[3], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[4]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_set_window</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_stream_set_current</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_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">args</span><span class="Extracts-plain-syntax">[0])); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_stream_iterate</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_fileref_iterate</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_stylehint_set</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_schannel_iterate</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_schannel_create</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_set_style</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_window_move_cursor</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_stream_get_position</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_miniglk_stream_get_position</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">args</span><span class="Extracts-plain-syntax">[0]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_window_get_size</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">args</span><span class="Extracts-plain-syntax">[0]) </span><span class="Extracts-identifier-syntax">i7_write_word</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">args</span><span class="Extracts-plain-syntax">[0], </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">80</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">args</span><span class="Extracts-plain-syntax">[1]) </span><span class="Extracts-identifier-syntax">i7_write_word</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">args</span><span class="Extracts-plain-syntax">[1], </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">8</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_request_line_event</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_miniglk_request_line_event</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">args</span><span class="Extracts-plain-syntax">[0], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[1], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[2], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[3]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_select</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_miniglk_select</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">args</span><span class="Extracts-plain-syntax">[0]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_stream_close</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_stream_close</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">args</span><span class="Extracts-plain-syntax">[0], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[1]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_stream_set_current</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_stream_set_current</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">args</span><span class="Extracts-plain-syntax">[0]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_stream_get_current</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_miniglk_stream_get_current</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_stream_open_memory</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_miniglk_stream_open_memory</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">args</span><span class="Extracts-plain-syntax">[0], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[1], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[2], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[3]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_stream_open_memory_uni</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_miniglk_stream_open_memory_uni</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">args</span><span class="Extracts-plain-syntax">[0], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[1], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[2], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[3]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_fileref_create_by_name</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_miniglk_fileref_create_by_name</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">args</span><span class="Extracts-plain-syntax">[0], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[1], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[2]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_fileref_does_file_exist</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_miniglk_fileref_does_file_exist</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">args</span><span class="Extracts-plain-syntax">[0]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_stream_open_file</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_miniglk_stream_open_file</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">args</span><span class="Extracts-plain-syntax">[0], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[1], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[2]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_fileref_destroy</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_char_to_lower</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[0];</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">rv</span><span class="Extracts-plain-syntax"> >= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x41</span><span class="Extracts-plain-syntax">) && (</span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> <= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x5A</span><span class="Extracts-plain-syntax">)) ||</span>
|
||||
<span class="Extracts-plain-syntax"> ((</span><span class="Extracts-identifier-syntax">rv</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">rv</span><span class="Extracts-plain-syntax"> <= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">xD6</span><span class="Extracts-plain-syntax">)) ||</span>
|
||||
<span class="Extracts-plain-syntax"> ((</span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> >= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">xD8</span><span class="Extracts-plain-syntax">) && (</span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> <= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">xDE</span><span class="Extracts-plain-syntax">))) </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> += </span><span class="Extracts-constant-syntax">32</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_char_to_upper</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[0];</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">rv</span><span class="Extracts-plain-syntax"> >= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x61</span><span class="Extracts-plain-syntax">) && (</span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> <= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">x7A</span><span class="Extracts-plain-syntax">)) ||</span>
|
||||
<span class="Extracts-plain-syntax"> ((</span><span class="Extracts-identifier-syntax">rv</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">rv</span><span class="Extracts-plain-syntax"> <= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">xF6</span><span class="Extracts-plain-syntax">)) ||</span>
|
||||
<span class="Extracts-plain-syntax"> ((</span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> >= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">xF8</span><span class="Extracts-plain-syntax">) && (</span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> <= </span><span class="Extracts-constant-syntax">0</span><span class="Extracts-identifier-syntax">xFE</span><span class="Extracts-plain-syntax">))) </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> -= </span><span class="Extracts-constant-syntax">32</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_stream_set_position</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_stream_set_position</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">args</span><span class="Extracts-plain-syntax">[0], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[1], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[2]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_put_char_stream</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_miniglk_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">args</span><span class="Extracts-plain-syntax">[0], </span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">[1]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">case</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_glk_get_char_stream</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">rv</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_miniglk_get_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">args</span><span class="Extracts-plain-syntax">[0]); </span><span class="Extracts-identifier-syntax">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">default</span><span class="Extracts-plain-syntax">:</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">printf</span><span class="Extracts-plain-syntax">("</span><span class="Extracts-identifier-syntax">Unimplemented</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">i7_opcode_glk</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">n</span><span class="Extracts-plain-syntax">", </span><span class="Extracts-identifier-syntax">glk_api_selector</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">break</span><span class="Extracts-plain-syntax">;</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">z</span><span class="Extracts-plain-syntax">) *</span><span class="Extracts-identifier-syntax">z</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">rv</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_name</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">i7word_t</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">fn_i7_mgl_PrintShortName</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">x</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fn_i7_mgl_pending_boxed_quotation</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-constant-syntax">0</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-cim.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresscurrent">cmn</li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-cuf.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -233,7 +233,7 @@ but with their names of course mangled.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-fnc.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresscurrent">cnm</li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-crf.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-fnc.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresscurrent">cnm</li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cmn.html">cmn</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-crf.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -1277,7 +1277,7 @@ to the user, who should call only these:
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-clt.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresscurrent">com</li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-cfm.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-clt.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresscurrent">com</li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cmn.html">cmn</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-cfm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -320,7 +320,7 @@ have to recurse downwards through the possibilities and preface each one by
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-cpc.html#SP2">§2</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-car.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresscurrent">cpc</li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-ccn.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-car.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresscurrent">cpc</li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cmn.html">cmn</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-ccn.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -222,7 +222,7 @@ calling functions.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-crf.html#SP2_1">§2.1</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-cnm.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresscurrent">crf</li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-cgv.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-cnm.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresscurrent">crf</li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cmn.html">cmn</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-cgv.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -193,7 +193,7 @@ or vice versa. The following functions must be perfect inverses of each other.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-cim.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresscurrent">cuf</li><li class="progressnextoff">❯</li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-cmn.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-fnc.html">fnc</a></li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cmn.html">cmn</a></li><li class="progresscurrent">cuf</li><li class="progressnextoff">❯</li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -531,7 +531,10 @@ was at one time part of a snapshot.
|
|||
<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">send_count</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">sender</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">count</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> (*</span><span class="Extracts-identifier-syntax">communicator</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">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">id</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">i7word_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">args</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">stylist</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">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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">which</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</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">void</span><span class="Extracts-plain-syntax"> (*</span><span class="Extracts-identifier-syntax">glk_implementation</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">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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">glk_api_selector</span><span class="Extracts-plain-syntax">,</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">varargc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">z</span><span class="Extracts-plain-syntax">);</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">miniglk_data</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">miniglk</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>
|
||||
</pre>
|
||||
|
@ -575,7 +578,10 @@ so it initially consumes very little memory.
|
|||
<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">send_count</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">sender</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_default_sender</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">stylist</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_default_stylist</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">glk_implementation</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_default_glk</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">i7_initialise_miniglk_data</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">proc</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -587,7 +593,6 @@ a new process, so we must define those:
|
|||
<pre class="Extracts-displayed-code all-displayed-code code-font">
|
||||
<span class="Extracts-identifier-syntax">char</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">i7_default_sender</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">count</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_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-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_default_communicator</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">id</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">i7word_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">args</span><span class="Extracts-plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.h.</li></ul>
|
||||
<p class="commentary">The receiver and sender functions allow our textual I/O to be managed by external
|
||||
|
@ -665,6 +670,30 @@ but may in between the two supply its own receiver or sender:
|
|||
<span class="Extracts-plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
|
||||
<p class="commentary">Similarly, ambitious projects which want their own complete I/O systems can
|
||||
set the following:
|
||||
</p>
|
||||
|
||||
<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_set_process_stylist</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">void</span><span class="Extracts-plain-syntax"> (*</span><span class="Extracts-identifier-syntax">stylist</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">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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">which</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</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_set_process_glk_implementation</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">void</span><span class="Extracts-plain-syntax"> (*</span><span class="Extracts-identifier-syntax">glk_implementation</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">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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">glk_api_selector</span><span class="Extracts-plain-syntax">,</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">varargc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">z</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_set_process_stylist</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">void</span><span class="Extracts-plain-syntax"> (*</span><span class="Extracts-identifier-syntax">stylist</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">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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">which</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</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">proc</span><span class="Extracts-plain-syntax">-></span><span class="Extracts-identifier-syntax">stylist</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">stylist</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_glk_implementation</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">void</span><span class="Extracts-plain-syntax"> (*</span><span class="Extracts-identifier-syntax">glk_implementation</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">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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">glk_api_selector</span><span class="Extracts-plain-syntax">,</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">varargc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> *</span><span class="Extracts-identifier-syntax">z</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">glk_implementation</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">glk_implementation</span><span class="Extracts-plain-syntax">;</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
|
||||
<p class="commentary">In all cases, execution is kicked off when <span class="extract"><span class="Extracts-extract-syntax">i7_run_process</span></span> is called on a process.
|
||||
Ordinarily, that will execute the entire Inform 7 program and then come back to us;
|
||||
but we need to cope with a sudden halt during execution, either through a fatal
|
||||
|
@ -722,7 +751,7 @@ like these other functions: see <a href="5-com.html" class="internal">C Object M
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.c.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-i6c2.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresscurrent">fnc</li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-cnm.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-i6c2.html">❮</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-cg.html">2</a></li><li class="progresschapter"><a href="3-fti.html">3</a></li><li class="progresschapter"><a href="4-fi6.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresscurrent">fnc</li><li class="progresssection"><a href="5-cnm.html">cnm</a></li><li class="progresssection"><a href="5-crf.html">crf</a></li><li class="progresssection"><a href="5-cgv.html">cgv</a></li><li class="progresssection"><a href="5-cmm.html">cmm</a></li><li class="progresssection"><a href="5-cas.html">cas</a></li><li class="progresssection"><a href="5-car.html">car</a></li><li class="progresssection"><a href="5-cpc.html">cpc</a></li><li class="progresssection"><a href="5-ccn.html">ccn</a></li><li class="progresssection"><a href="5-clt.html">clt</a></li><li class="progresssection"><a href="5-com.html">com</a></li><li class="progresssection"><a href="5-cfm.html">cfm</a></li><li class="progresssection"><a href="5-cim.html">cim</a></li><li class="progresssection"><a href="5-cmn.html">cmn</a></li><li class="progresssection"><a href="5-cuf.html">cuf</a></li><li class="progressnext"><a href="5-cnm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -241,6 +241,11 @@
|
|||
<spon class="sectiontitle">C Input-Output Model</span></a> -
|
||||
<span class="sectionpurpose">How C programs print text out, really.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="5-cmn.html">
|
||||
<spon class="sectiontitle">C Miniglk</span></a> -
|
||||
<span class="sectionpurpose">Just enough of the Glk input/output interface to allow simple console text in and out, and no more.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="5-cuf.html">
|
||||
<spon class="sectiontitle">C Utility Functions</span></a> -
|
||||
|
|
|
@ -426,8 +426,8 @@ in I6 the only legal uses of <span class="extract"><span class="extract-syntax">
|
|||
legal way for <span class="extract"><span class="extract-syntax">style</span></span> to be followed by an arbitrary value, as it is here. But
|
||||
Inform 6 will not be compiling this: Inform will convert <span class="extract"><span class="extract-syntax">style V;</span></span> directly to
|
||||
the Inter statement <span class="extract"><span class="extract-syntax">!style V</span></span>, which will then be translated to C as the function
|
||||
call <span class="extract"><span class="extract-syntax">i7_style(proc, V)</span></span> — and that function, in our library of C code supporting
|
||||
Inform, can handle any textual value of <span class="extract"><span class="extract-syntax">V</span></span>.
|
||||
call <span class="extract"><span class="extract-syntax">i7_styling(proc, 2, V)</span></span> — and that function, in our library of C code
|
||||
supporting Inform, can handle any textual value of <span class="extract"><span class="extract-syntax">V</span></span>.
|
||||
</p>
|
||||
|
||||
<p class="commentary">With that bit of fancy footwork out of the way, we can make a pair of text
|
||||
|
|
|
@ -84,30 +84,30 @@ 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"> 54.5% 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.3% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pre_pass</a>
|
||||
<span class="plain-syntax"> 2.5% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pass_1</a>
|
||||
<span class="plain-syntax"> 1.9% 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"> 54.8% in compilation to Inter</span>
|
||||
<span class="plain-syntax"> 39.7% 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.4% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pass_1</a>
|
||||
<span class="plain-syntax"> 2.0% in </span><a href="../runtime-module/6-pi.html#SP1" class="internal">RTPhrasebook::compile_entries</a>
|
||||
<span class="plain-syntax"> 1.3% 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="../runtime-module/3-cm.html#SP1" class="internal">CompletionModule::compile</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.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="../runtime-module/3-cm.html#SP1" class="internal">CompletionModule::compile</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"> 1.7% not specifically accounted for</span>
|
||||
<span class="plain-syntax"> 43.4% in running Inter pipeline</span>
|
||||
<span class="plain-syntax"> 12.4% in step preparation</span>
|
||||
<span class="plain-syntax"> 9.4% in inter step 7/16: consolidate-text</span>
|
||||
<span class="plain-syntax"> 7.7% in inter step 16/16: generate inform6 -> 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"> 1.9% not specifically accounted for</span>
|
||||
<span class="plain-syntax"> 43.2% in running Inter pipeline</span>
|
||||
<span class="plain-syntax"> 12.9% in step preparation</span>
|
||||
<span class="plain-syntax"> 9.5% in inter step 7/16: consolidate-text</span>
|
||||
<span class="plain-syntax"> 7.9% in inter step 2/16: link</span>
|
||||
<span class="plain-syntax"> 6.7% in inter step 16/16: generate inform6 -> auto.inf</span>
|
||||
<span class="plain-syntax"> 1.4% 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>
|
||||
<span class="plain-syntax"> 0.2% in inter step 6/16: assimilate</span>
|
||||
|
@ -117,7 +117,7 @@ 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"> 2.5% not specifically accounted for</span>
|
||||
<span class="plain-syntax"> 1.6% in supervisor</span>
|
||||
<span class="plain-syntax"> 0.3% not specifically accounted for</span>
|
||||
</pre>
|
||||
|
@ -128,50 +128,51 @@ 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 394747K = 385 MB</span>
|
||||
<span class="plain-syntax">Total memory consumption was 399937K = 391 MB</span>
|
||||
|
||||
<span class="plain-syntax">60.7% was used for 1997368 objects, in 371210 frames in 300 x 800K = 240000K = 234 MB:</span>
|
||||
<span class="plain-syntax">61.0% was used for 2018780 objects, in 379611 frames in 305 x 800K = 244000K = 238 MB:</span>
|
||||
|
||||
<span class="plain-syntax"> 10.3% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes</span>
|
||||
<span class="plain-syntax"> 7.1% text_stream_array 5146 x 100 = 514600 objects, 28982272 bytes</span>
|
||||
<span class="plain-syntax"> 4.2% linked_list 30852 objects, 17277120 bytes</span>
|
||||
<span class="plain-syntax"> 3.9% inter_symbol_array 139 x 1024 = 142336 objects, 15946080 bytes</span>
|
||||
<span class="plain-syntax"> 2.5% parse_node 129365 objects, 10349200 bytes</span>
|
||||
<span class="plain-syntax"> 10.2% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes</span>
|
||||
<span class="plain-syntax"> 7.2% text_stream_array 5254 x 100 = 525400 objects, 29590528 bytes</span>
|
||||
<span class="plain-syntax"> 4.7% linked_list 34681 objects, 19421360 bytes</span>
|
||||
<span class="plain-syntax"> 3.9% inter_symbol_array 140 x 1024 = 143360 objects, 16060800 bytes</span>
|
||||
<span class="plain-syntax"> 2.5% parse_node 129462 objects, 10356960 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 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 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 13475 objects, 1940400 bytes</span>
|
||||
<span class="plain-syntax"> 0.4% inter_package 26570 objects, 1913040 bytes</span>
|
||||
<span class="plain-syntax"> 0.4% package_request 21136 objects, 1859968 bytes</span>
|
||||
<span class="plain-syntax"> 0.4% inter_schema_token 13926 objects, 2005344 bytes</span>
|
||||
<span class="plain-syntax"> 0.4% inter_package 26566 objects, 1912752 bytes</span>
|
||||
<span class="plain-syntax"> 0.4% package_request 21139 objects, 1860232 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 26570 objects, 1700480 bytes</span>
|
||||
<span class="plain-syntax"> 0.3% dictionary 33267 objects, 1596816 bytes</span>
|
||||
<span class="plain-syntax"> 0.4% inter_symbols_table 26566 objects, 1700224 bytes</span>
|
||||
<span class="plain-syntax"> 0.3% dictionary 33302 objects, 1598496 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 393 x 100 = 39300 objects, 1270176 bytes</span>
|
||||
<span class="plain-syntax"> 0.3% dict_entry_array 396 x 100 = 39600 objects, 1279872 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% map_data 670 objects, 1125600 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% id_body 940 objects, 1075360 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% id_body 941 objects, 1076504 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% excerpt_meaning 3100 objects, 967200 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 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.2% inter_schema_node 8891 objects, 853536 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 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"> ---- verb_usage 1128 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 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"> ---- vanilla_function 3678 objects, 235392 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_annotation_array 1 x 8192 objects, 196640 bytes</span>
|
||||
<span class="plain-syntax"> ---- hierarchy_location 1118 objects, 169936 bytes</span>
|
||||
<span class="plain-syntax"> ---- hierarchy_location 1117 objects, 169784 bytes</span>
|
||||
<span class="plain-syntax"> ---- binary_predicate 321 objects, 169488 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>
|
||||
|
@ -179,8 +180,8 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- nascent_array 2124 objects, 135936 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, 98400 bytes</span>
|
||||
<span class="plain-syntax"> ---- imperative_defn 1377 objects, 99144 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_tree 6 objects, 98448 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"> ---- preposition 273 objects, 87360 bytes</span>
|
||||
|
@ -193,8 +194,8 @@ represent less than 1/1000th of the total.
|
|||
<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"> ---- actions_rcd_data 1882 objects, 60224 bytes</span>
|
||||
<span class="plain-syntax"> ---- scenes_rcd_data 1882 objects, 60224 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"> ---- table 7 objects, 56672 bytes</span>
|
||||
|
@ -204,17 +205,18 @@ 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 767 objects, 42952 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_node_list 768 objects, 43008 bytes</span>
|
||||
<span class="plain-syntax"> ---- text_substitution 436 objects, 41856 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"> ---- to_family_data 497 objects, 39760 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"> ---- 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>
|
||||
<span class="plain-syntax"> ---- counting_data 670 objects, 32160 bytes</span>
|
||||
<span class="plain-syntax"> ---- linked_list_item_array 2 x 1000 = 2000 objects, 32064 bytes</span>
|
||||
<span class="plain-syntax"> ---- HTML_tag_array 1 x 1000 objects, 32032 bytes</span>
|
||||
<span class="plain-syntax"> ---- property_permission 96 objects, 31488 bytes</span>
|
||||
<span class="plain-syntax"> ---- stack_frame_box 304 objects, 29184 bytes</span>
|
||||
|
@ -226,37 +228,37 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- nonlocal_variable 93 objects, 20088 bytes</span>
|
||||
<span class="plain-syntax"> ---- property 146 objects, 19856 bytes</span>
|
||||
<span class="plain-syntax"> ---- timed_rules_rfd_data 400 objects, 19200 bytes</span>
|
||||
<span class="plain-syntax"> ---- method 395 objects, 18960 bytes</span>
|
||||
<span class="plain-syntax"> ---- method 374 objects, 17952 bytes</span>
|
||||
<span class="plain-syntax"> ---- pcalc_prop_deferral 86 objects, 17888 bytes</span>
|
||||
<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"> ---- to_phrase_request 59 objects, 16048 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 137 objects, 15344 bytes</span>
|
||||
<span class="plain-syntax"> ---- generated_segment 14 objects, 14784 bytes</span>
|
||||
<span class="plain-syntax"> ---- booking_list 407 objects, 13024 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 456 objects, 10944 bytes</span>
|
||||
<span class="plain-syntax"> ---- stopwatch_timer 114 objects, 9120 bytes</span>
|
||||
<span class="plain-syntax"> ---- uniqueness_count 451 objects, 10824 bytes</span>
|
||||
<span class="plain-syntax"> ---- stopwatch_timer 113 objects, 9040 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>
|
||||
<span class="plain-syntax"> ---- determiner 22 objects, 7216 bytes</span>
|
||||
<span class="plain-syntax"> ---- text_literal_holder 161 objects, 6440 bytes</span>
|
||||
<span class="plain-syntax"> ---- verb 108 objects, 6048 bytes</span>
|
||||
<span class="plain-syntax"> ---- text_literal_holder 144 objects, 5760 bytes</span>
|
||||
<span class="plain-syntax"> ---- heading_tree 20 objects, 5440 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_work 77 objects, 4928 bytes</span>
|
||||
<span class="plain-syntax"> ---- explicit_action_array 1 x 100 objects, 4832 bytes</span>
|
||||
<span class="plain-syntax"> ---- value_property_data 84 objects, 4704 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_vertex 39 objects, 4680 bytes</span>
|
||||
<span class="plain-syntax"> ---- parsing_pp_data 96 objects, 4608 bytes</span>
|
||||
<span class="plain-syntax"> ---- activity 35 objects, 3920 bytes</span>
|
||||
<span class="plain-syntax"> ---- command_line_switch 49 objects, 3920 bytes</span>
|
||||
<span class="plain-syntax"> ---- activity 35 objects, 3920 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_edition 53 objects, 3816 bytes</span>
|
||||
<span class="plain-syntax"> ---- submodule_request 94 objects, 3760 bytes</span>
|
||||
<span class="plain-syntax"> ---- parse_node_annotation_type 114 objects, 3648 bytes</span>
|
||||
|
@ -269,14 +271,14 @@ represent less than 1/1000th of the total.
|
|||
<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"> ---- use_option 29 objects, 2552 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"> ---- part_of_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"> ---- equation_symbol 30 objects, 2400 bytes</span>
|
||||
<span class="plain-syntax"> ---- pipeline_step 16 objects, 2304 bytes</span>
|
||||
<span class="plain-syntax"> ---- semver_range 22 objects, 2288 bytes</span>
|
||||
<span class="plain-syntax"> ---- pipeline_step 16 objects, 2176 bytes</span>
|
||||
<span class="plain-syntax"> ---- scene 1 object, 2096 bytes</span>
|
||||
<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>
|
||||
|
@ -284,10 +286,10 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- cached_kind_declaration 38 objects, 1520 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"> ---- inter_annotation_form 33 objects, 1320 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"> ---- table_column 16 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>
|
||||
|
@ -296,11 +298,9 @@ represent less than 1/1000th of the total.
|
|||
<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, 896 bytes</span>
|
||||
<span class="plain-syntax"> ---- named_rulebook_outcome 15 objects, 960 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_requirement 22 objects, 880 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>
|
||||
|
@ -310,83 +310,83 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- I6T_intervention 8 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"> ---- code_generation 1 object, 616 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"> ---- implication 13 objects, 520 bytes</span>
|
||||
<span class="plain-syntax"> ---- equation 4 objects, 480 bytes</span>
|
||||
<span class="plain-syntax"> ---- i6_memory_setting 14 objects, 448 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>
|
||||
<span class="plain-syntax"> ---- bp_family 12 objects, 384 bytes</span>
|
||||
<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"> ---- grammatical_category 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"> ---- pronoun 8 objects, 320 bytes</span>
|
||||
<span class="plain-syntax"> ---- tree_inventory 1 object, 312 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"> ---- 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"> ---- contents_entry 7 objects, 280 bytes</span>
|
||||
<span class="plain-syntax"> ---- explicit_bp_data 5 objects, 280 bytes</span>
|
||||
<span class="plain-syntax"> ---- compilation_unit 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>
|
||||
<span class="plain-syntax"> ---- release_instructions 1 object, 208 bytes</span>
|
||||
<span class="plain-syntax"> ---- code_generation_target 5 objects, 200 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_skill 5 objects, 200 bytes</span>
|
||||
<span class="plain-syntax"> ---- inform_project 1 object, 192 bytes</span>
|
||||
<span class="plain-syntax"> ---- plural_dictionary_entry 4 objects, 192 bytes</span>
|
||||
<span class="plain-syntax"> ---- kit_dependency 4 objects, 192 bytes</span>
|
||||
<span class="plain-syntax"> ---- code_generator 5 objects, 200 bytes</span>
|
||||
<span class="plain-syntax"> ---- inform_pipeline 3 objects, 192 bytes</span>
|
||||
<span class="plain-syntax"> ---- kov_value_stick 3 objects, 168 bytes</span>
|
||||
<span class="plain-syntax"> ---- plural_dictionary_entry 4 objects, 192 bytes</span>
|
||||
<span class="plain-syntax"> ---- inform_project 1 object, 192 bytes</span>
|
||||
<span class="plain-syntax"> ---- kit_dependency 4 objects, 192 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"> ---- inference_subject_family 5 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"> ---- 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>
|
||||
<span class="plain-syntax"> ---- local_block_value 2 objects, 112 bytes</span>
|
||||
<span class="plain-syntax"> ---- inform_kit_ittt 2 objects, 96 bytes</span>
|
||||
<span class="plain-syntax"> ---- article 2 objects, 80 bytes</span>
|
||||
<span class="plain-syntax"> ---- compile_task_data 1 object, 80 bytes</span>
|
||||
<span class="plain-syntax"> ---- group_together_function 2 objects, 80 bytes</span>
|
||||
<span class="plain-syntax"> ---- article 2 objects, 80 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_warehouse 1 object, 56 bytes</span>
|
||||
<span class="plain-syntax"> ---- figures_data 1 object, 56 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_methodology 1 object, 56 bytes</span>
|
||||
<span class="plain-syntax"> ---- HTML_file_state 1 object, 48 bytes</span>
|
||||
<span class="plain-syntax"> ---- star_invention 1 object, 48 bytes</span>
|
||||
<span class="plain-syntax"> ---- by_function_bp_data 1 object, 40 bytes</span>
|
||||
<span class="plain-syntax"> ---- kind_template_definition 1 object, 40 bytes</span>
|
||||
<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"> ---- I6_generation_data 1 object, 40 bytes</span>
|
||||
<span class="plain-syntax"> ---- kind_template_definition 1 object, 40 bytes</span>
|
||||
|
||||
<span class="plain-syntax">39.2% was used for memory not allocated for objects:</span>
|
||||
<span class="plain-syntax">38.9% was used for memory not allocated for objects:</span>
|
||||
|
||||
<span class="plain-syntax"> 20.4% text stream storage 82587264 bytes in 532785 claims</span>
|
||||
<span class="plain-syntax"> 4.4% dictionary storage 18176000 bytes in 33267 claims</span>
|
||||
<span class="plain-syntax"> ---- sorting 744 bytes in 3 claims</span>
|
||||
<span class="plain-syntax"> 20.4% text stream storage 83669748 bytes in 543391 claims</span>
|
||||
<span class="plain-syntax"> 4.4% dictionary storage 18323456 bytes in 33302 claims</span>
|
||||
<span class="plain-syntax"> ---- sorting 736 bytes in 3 claims</span>
|
||||
<span class="plain-syntax"> 1.7% source text 7200000 bytes in 3 claims</span>
|
||||
<span class="plain-syntax"> 2.6% 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 4175216 bytes in 27681 claims</span>
|
||||
<span class="plain-syntax"> 4.1% inter bytecode storage 16802804 bytes in 14 claims</span>
|
||||
<span class="plain-syntax"> 4.0% inter links storage 16174208 bytes in 266 claims</span>
|
||||
<span class="plain-syntax"> 1.0% inter symbols storage 4171728 bytes in 27671 claims</span>
|
||||
<span class="plain-syntax"> 4.1% inter bytecode storage 16802732 bytes in 14 claims</span>
|
||||
<span class="plain-syntax"> 3.9% 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 9624 bytes in 9 claims</span>
|
||||
<span class="plain-syntax"> ---- code generation workspace for objects 1336 bytes in 4 claims</span>
|
||||
<span class="plain-syntax"> ---- emitter array storage 161792 bytes in 2062 claims</span>
|
||||
|
||||
<span class="plain-syntax">18.7% was overhead - 75829912 bytes = 74052K = 72 MB</span>
|
||||
<span class="plain-syntax">18.7% was overhead - 76687488 bytes = 74890K = 73 MB</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§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
|
||||
|
@ -395,7 +395,7 @@ 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"><s-literal> hits 2097/23838 nti 14 constraint (none) extremes [1, infinity)</span>
|
||||
<span class="plain-syntax"><s-literal> hits 2097/23834 nti 14 constraint (none) extremes [1, infinity)</span>
|
||||
<span class="plain-syntax"> English:</span>
|
||||
<span class="plain-syntax"> (@1)<cardinal-number>=1 </span>
|
||||
<span class="plain-syntax"> (hits 171/171) (matched: '100') constraint CS = {r0} extremes [1, 1]</span>
|
||||
|
@ -409,17 +409,17 @@ sample, showing the nonterminal used to parse literals in Inform 7 source text:
|
|||
<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"> <s-literal-real-number>=1 </span>
|
||||
<span class="plain-syntax"> (hits 11/9911) (matched: 'plus infinity') constraint (none) extremes [1, infinity)</span>
|
||||
<span class="plain-syntax"> (hits 11/9909) (matched: 'plus infinity') constraint (none) extremes [1, infinity)</span>
|
||||
<span class="plain-syntax"> (@1)<s-literal-truth-state>=1 </span>
|
||||
<span class="plain-syntax"> (hits 78/196) (matched: 'false') constraint CS = {8} extremes [1, 1]</span>
|
||||
<span class="plain-syntax"> <s-literal-list>=1 </span>
|
||||
<span class="plain-syntax"> (hits 0/3281) constraint DS = {10} extremes [2, infinity)</span>
|
||||
<span class="plain-syntax"> (hits 0/3275) constraint DS = {10} extremes [2, infinity)</span>
|
||||
<span class="plain-syntax"> (@1)unicode <s-unicode-character>=1 </span>
|
||||
<span class="plain-syntax"> (hits 0/4183) constraint DS = {14} extremes [2, infinity)</span>
|
||||
<span class="plain-syntax"> (hits 0/4180) constraint DS = {14} extremes [2, infinity)</span>
|
||||
<span class="plain-syntax"> <s-literal-time>=1 </span>
|
||||
<span class="plain-syntax"> (hits 0/3738) constraint DW = {11, 12, 13} extremes [2, 5]</span>
|
||||
<span class="plain-syntax"> (hits 0/3737) constraint DW = {11, 12, 13} extremes [2, 5]</span>
|
||||
<span class="plain-syntax"> <s-literal-unit-notation>=1 </span>
|
||||
<span class="plain-syntax"> (hits 0/9822) constraint (none) extremes [1, infinity)</span>
|
||||
<span class="plain-syntax"> (hits 0/9820) constraint (none) extremes [1, infinity)</span>
|
||||
</pre>
|
||||
<p class="commentary">The unabridged grammar is here:
|
||||
</p>
|
||||
|
@ -429,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, 391.1kB)
|
||||
Download <b>preform-diagnostics.txt</b> (Preform diagnostics file, 391.2kB)
|
||||
</button>
|
||||
</a>
|
||||
</p>
|
||||
|
@ -474,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: 798}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 799}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out asking for information' {unit: 4} {imperative definition: 799}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 800}</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>
|
||||
|
@ -485,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: << kind=people variable-pointer(x) >>} {eval: TEST_VALUE_NT}</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"> IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 802}</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: << kind=person(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
|
@ -502,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: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}</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'the first 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'a character movement rule' {unit: 4} {imperative definition: 805}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to decide whether movement has not yet occurred' {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"> 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: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}</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"> IMPERATIVE_NT'a shopowner rule' {unit: 4} {imperative definition: 809}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone closing a door when the person asked owns the' {unit: 4} {imperative definition: 810}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report vanessa closing the metal door when the metal door is' {unit: 4} {imperative definition: 811}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'a shopowner rule' {unit: 4} {imperative definition: 812}</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: 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"> IMPERATIVE_NT'before someone filing something which is not carried by the ' {unit: 4} {imperative definition: 813}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone filing' {unit: 4} {imperative definition: 814}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone filing' {unit: 4} {imperative definition: 815}</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: << kind=rulebook(x) >>} {eval: TEST_VALUE_NT}</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"> IMPERATIVE_NT'a shopper rule' {unit: 4} {imperative definition: 817}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 818}</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>
|
||||
|
@ -587,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: << kind=artwork(x) >>} {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: << kind=thing(x) >>} {eval: TEST_VALUE_NT}</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"> IMPERATIVE_NT'before printing the name of an artwork' {unit: 4} {imperative definition: 819}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after printing the name of an artwork' {unit: 4} {imperative definition: 820}</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: << kind=artwork(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
|
@ -601,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: << kind=book(x) >>} {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: << kind=artwork(x) >>} {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: 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"> IMPERATIVE_NT'before someone resolving a book when the person asked is not' {unit: 4} {imperative definition: 821}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a book' {unit: 4} {imperative definition: 822}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone resolving a book' {unit: 4} {imperative definition: 823}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before listing contents' {unit: 4} {imperative definition: 824}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before grouping together books' {unit: 4} {imperative definition: 825}</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: << kind=stamped envelope(x) >>} {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: << kind=thing(x) >>} {eval: TEST_VALUE_NT}</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"> IMPERATIVE_NT'before someone resolving a stamped envelope when the person ' {unit: 4} {imperative definition: 826}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a stamped envelope' {unit: 4} {imperative definition: 827}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone resolving a stamped envelope' {unit: 4} {imperative definition: 828}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of someone resolving a stamped envelope when the per' {unit: 4} {imperative definition: 829}</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: << kind=dvd(x) >>} {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: << kind=artwork(x) >>} {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: 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"> IMPERATIVE_NT'before someone resolving a dvd when the person asked is not ' {unit: 4} {imperative definition: 830}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a dvd' {unit: 4} {imperative definition: 831}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone resolving a dvd' {unit: 4} {imperative definition: 832}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of someone resolving a dvd when the person asked car' {unit: 4} {imperative definition: 833}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before listing contents' {unit: 4} {imperative definition: 834}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before grouping together dvds' {unit: 4} {imperative definition: 835}</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: 835}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone approaching' {unit: 4} {imperative definition: 836}</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: << kind=coupon(x) >>} {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: << kind=thing(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a coupon' {unit: 4} {imperative definition: 836}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone resolving a coupon' {unit: 4} {imperative definition: 837}</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: 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"> IMPERATIVE_NT'check giving something to someone ( this is the block player' {unit: 4} {imperative definition: 838}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before someone resolving a coupon when the person asked is n' {unit: 4} {imperative definition: 839}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after someone giving a coupon to vanessa' {unit: 4} {imperative definition: 840}</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: << kind=infection color(x) >>} {refers: infs'object'-k} {eval: TEST_VALUE_NT} {created here}</span>
|
||||
|
@ -703,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: 840}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to say list of flavors' {unit: 4} {imperative definition: 841}</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>
|
||||
|
@ -716,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: 841}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out buying the flavor' {unit: 4} {imperative definition: 842}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'check buying the flavor' {unit: 4} {imperative definition: 842}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out buying the flavor' {unit: 4} {imperative definition: 843}</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>
|
||||
|
@ -751,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: 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"> IMPERATIVE_NT'carry out someone resolving an ice cream cone' {unit: 4} {imperative definition: 844}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of someone eating a fresh ice cream cone' {unit: 4} {imperative definition: 845}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone eating an ice cream cone' {unit: 4} {imperative definition: 846}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before printing the name of an ice cream cone' {unit: 4} {imperative definition: 847}</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: 847}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'this is the infection rule' {unit: 4} {imperative definition: 848}</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: << kind=person(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
|
@ -769,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: << kind=person(x) >>} {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: 848}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 849}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {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"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 851}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 852}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'every turn' {unit: 4} {imperative definition: 853}</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>
|
||||
|
@ -782,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: 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"> IMPERATIVE_NT'check sneezing on' {unit: 4} {imperative definition: 854}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out sneezing on' {unit: 4} {imperative definition: 855}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out someone sneezing on' {unit: 4} {imperative definition: 856}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report sneezing on' {unit: 4} {imperative definition: 857}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone sneezing on' {unit: 4} {imperative definition: 858}</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>
|
||||
|
@ -807,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: 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"> IMPERATIVE_NT'check injecting it with' {unit: 4} {imperative definition: 859}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out injecting it with' {unit: 4} {imperative definition: 860}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after injecting the player with something' {unit: 4} {imperative definition: 861}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report injecting it with' {unit: 4} {imperative definition: 862}</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>
|
||||
|
@ -835,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: 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"> IMPERATIVE_NT'check going toward' {unit: 4} {imperative definition: 900}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out going toward' {unit: 4} {imperative definition: 901}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of waiting when the destination of the player is not' {unit: 4} {imperative definition: 902}</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>
|
||||
|
@ -846,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: 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"> IMPERATIVE_NT'carry out stopping' {unit: 4} {imperative definition: 903}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report stopping' {unit: 4} {imperative definition: 904}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after going to an air-conditioned room' {unit: 4} {imperative definition: 905}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after going from an air-conditioned room' {unit: 4} {imperative definition: 906}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of listening to an air-conditioned room' {unit: 4} {imperative definition: 907}</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>
|
||||
|
@ -892,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: 907}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after locking a door with something in the presence of an ot' {unit: 4} {imperative definition: 908}</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>
|
||||
|
@ -954,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: << kind=container(x) >>} {eval: TEST_VALUE_NT}</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"> IMPERATIVE_NT'carry out inserting something into the slot' {unit: 4} {imperative definition: 909}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report inserting something into the slot' {unit: 4} {imperative definition: 910}</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>
|
||||
|
@ -979,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: << lockable(x) ^ lockable(x) >>}</span>
|
||||
<span class="plain-syntax"> ADJECTIVE_NT'unlocked' {refined} {predicate: unlocked} {creation: << unlocked(x) ^ unlocked(x) >>}</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"> IMPERATIVE_NT'before printing the name of the iron gate while not opening ' {unit: 4} {imperative definition: 911}</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>
|
||||
|
@ -1085,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: 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"> IMPERATIVE_NT'instead of attacking the closed emergency box' {unit: 4} {imperative definition: 912}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of attacking the open emergency box' {unit: 4} {imperative definition: 913}</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>
|
||||
|
@ -1189,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: 913}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 914}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after looking in an outdoors room' {unit: 4} {imperative definition: 914}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'definition' {unit: 4} {imperative definition: 915}</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>
|
||||
|
@ -1211,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: <no-inter-name>}</span>
|
||||
<span class="plain-syntax"> INVOCATION_LIST_NT'no' {unit: 4}</span>
|
||||
<span class="plain-syntax"> INVOCATION_NT'no' {phrase invoked: <no-inter-name>}</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"> IMPERATIVE_NT'before exiting when the player is in an indoors room' {unit: 4} {imperative definition: 916}</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>
|
||||
|
@ -1437,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: 916}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after printing the name of someone ( called target ) while l' {unit: 4} {imperative definition: 917}</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: << kind=person(x) >>} {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: 917}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 918}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after examining another person who is carrying something' {unit: 4} {imperative definition: 918}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'when play begins' {unit: 4} {imperative definition: 919}</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>
|
||||
|
@ -1454,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: 919}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of telling someone about something' {unit: 4} {imperative definition: 920}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of asking someone about something' {unit: 4} {imperative definition: 920}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'instead of telling someone about something' {unit: 4} {imperative definition: 921}</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>
|
||||
|
@ -1464,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: 921}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'carry out recalling conversations' {unit: 4} {imperative definition: 922}</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>
|
||||
|
@ -1479,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: 922}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'after reading a command' {unit: 4} {imperative definition: 923}</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>
|
||||
|
@ -1526,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: 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"> IMPERATIVE_NT'to clear ( current table - a table name )' {unit: 4} {imperative definition: 924}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to tidy departures of ( current table - a table name )' {unit: 4} {imperative definition: 925}</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: << kind=door(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
|
@ -1535,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: 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"> IMPERATIVE_NT'report someone opening a door' {unit: 4} {imperative definition: 926}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone going through a door ( called route )' {unit: 4} {imperative definition: 927}</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: << kind=things variable-pointer(x) >>} {eval: TEST_VALUE_NT}</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"> IMPERATIVE_NT'before printing the name of something ( called target ) whic' {unit: 4} {imperative definition: 928}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'report someone going a direction' {unit: 4} {imperative definition: 929}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'this is the movement reporting rule' {unit: 4} {imperative definition: 930}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to generate descriptions from ( current table - a table name' {unit: 4} {imperative definition: 931}</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: << kind=people variable-pointer(x) >>} {eval: TEST_VALUE_NT}</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"> IMPERATIVE_NT'before printing the name of a person ( called target )' {unit: 4} {imperative definition: 932}</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>
|
||||
|
@ -1558,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: 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"> IMPERATIVE_NT'to clear marked people' {unit: 4} {imperative definition: 933}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'before listing nondescript items' {unit: 4} {imperative definition: 934}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to describe patients' {unit: 4} {imperative definition: 935}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to say ( named character - a man ) as pronoun' {unit: 4} {imperative definition: 936}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to say ( named character - a woman ) as pronoun' {unit: 4} {imperative definition: 937}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to say looks as though dipped in for ( index - a number )' {unit: 4} {imperative definition: 938}</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: << kind=door(x) >>} {eval: TEST_VALUE_NT}</span>
|
||||
<span class="plain-syntax"> ADJECTIVE_NT'scenery' {refined} {predicate: scenery} {creation: << scenery(x) ^ scenery(x) >>}</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"> IMPERATIVE_NT'to make delimiter ( index - a number ) of ( count - a number' {unit: 4} {imperative definition: 939}</span>
|
||||
<span class="plain-syntax"> IMPERATIVE_NT'to say optional comma' {unit: 4} {imperative definition: 940}</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
|
@ -1,8 +1,8 @@
|
|||
100.0% in inform7 run
|
||||
54.4% in compilation to Inter
|
||||
39.2% in //Sequence::undertake_queued_tasks//
|
||||
3.4% in //MajorNodes::pre_pass//
|
||||
2.5% in //MajorNodes::pass_1//
|
||||
54.8% in compilation to Inter
|
||||
39.7% in //Sequence::undertake_queued_tasks//
|
||||
3.5% in //MajorNodes::pre_pass//
|
||||
2.4% in //MajorNodes::pass_1//
|
||||
2.0% in //RTPhrasebook::compile_entries//
|
||||
1.3% in //ImperativeDefinitions::assess_all//
|
||||
1.1% in //RTKindConstructors::compile//
|
||||
|
@ -17,21 +17,21 @@
|
|||
0.1% in //Task::make_built_in_kind_constructors//
|
||||
0.1% in //World::stages_II_and_III//
|
||||
1.9% not specifically accounted for
|
||||
43.7% in running Inter pipeline
|
||||
13.1% in step preparation
|
||||
10.1% in inter step 7/16: consolidate-text
|
||||
43.2% in running Inter pipeline
|
||||
12.9% in step preparation
|
||||
9.5% in inter step 7/16: consolidate-text
|
||||
7.9% in inter step 2/16: link
|
||||
6.4% in inter step 16/16: generate inform6 -> auto.inf
|
||||
1.6% in inter step 11/16: make-identifiers-unique
|
||||
6.7% in inter step 16/16: generate inform6 -> auto.inf
|
||||
1.4% in inter step 11/16: make-identifiers-unique
|
||||
0.4% in inter step 12/16: reconcile-verbs
|
||||
0.2% in inter step 10/16: detect-indirect-calls
|
||||
0.2% in inter step 14/16: eliminate-redundant-operations
|
||||
0.2% in inter step 6/16: assimilate
|
||||
0.2% in inter step 8/16: resolve-external-symbols
|
||||
0.2% in inter step 9/16: inspect-plugs
|
||||
0.1% in inter step 10/16: detect-indirect-calls
|
||||
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.1% not specifically accounted for
|
||||
2.5% not specifically accounted for
|
||||
1.6% in supervisor
|
||||
0.2% not specifically accounted for
|
||||
0.3% not specifically accounted for
|
||||
|
|
|
@ -29,7 +29,10 @@ i7process_t i7_new_process(void) {
|
|||
proc.receiver = i7_default_receiver;
|
||||
proc.send_count = 0;
|
||||
proc.sender = i7_default_sender;
|
||||
proc.stylist = i7_default_stylist;
|
||||
proc.glk_implementation = i7_default_glk;
|
||||
proc.use_UTF8 = 1;
|
||||
i7_initialise_miniglk_data(&proc);
|
||||
return proc;
|
||||
}
|
||||
void i7_default_receiver(int id, wchar_t c, char *style) {
|
||||
|
@ -64,6 +67,15 @@ void i7_set_process_receiver(i7process_t *proc,
|
|||
void i7_set_process_sender(i7process_t *proc, char *(*sender)(int count)) {
|
||||
proc->sender = sender;
|
||||
}
|
||||
void i7_set_process_stylist(i7process_t *proc,
|
||||
void (*stylist)(struct i7process_t *proc, i7word_t which, i7word_t what)) {
|
||||
proc->stylist = stylist;
|
||||
}
|
||||
void i7_set_process_glk_implementation(i7process_t *proc,
|
||||
void (*glk_implementation)(struct i7process_t *proc, i7word_t glk_api_selector,
|
||||
i7word_t varargc, i7word_t *z)) {
|
||||
proc->glk_implementation = glk_implementation;
|
||||
}
|
||||
i7word_t fn_i7_mgl_Main(i7process_t *proc);
|
||||
int i7_run_process(i7process_t *proc) {
|
||||
int tc = setjmp(proc->execution_env);
|
||||
|
@ -1075,108 +1087,150 @@ i7word_t i7_mcall_3(i7process_t *proc, i7word_t to, i7word_t prop, i7word_t v,
|
|||
proc->state.variables[i7_var_self] = saved;
|
||||
return rv;
|
||||
}
|
||||
#define I7_MAX_STREAMS 128
|
||||
void i7_print_C_string(i7process_t *proc, char *c_string) {
|
||||
if (c_string)
|
||||
for (int i=0; c_string[i]; i++)
|
||||
i7_print_char(proc, (i7word_t) c_string[i]);
|
||||
}
|
||||
|
||||
i7_stream i7_memory_streams[I7_MAX_STREAMS];
|
||||
void i7_print_decimal(i7process_t *proc, i7word_t x) {
|
||||
char room[32];
|
||||
sprintf(room, "%d", (int) x);
|
||||
i7_print_C_string(proc, room);
|
||||
}
|
||||
|
||||
void i7_print_object(i7process_t *proc, i7word_t x) {
|
||||
i7_print_decimal(proc, x);
|
||||
}
|
||||
|
||||
void i7_print_box(i7process_t *proc, i7word_t x) {
|
||||
printf("Unimplemented: i7_print_box.\n");
|
||||
i7_fatal_exit(proc);
|
||||
}
|
||||
void i7_print_char(i7process_t *proc, i7word_t x) {
|
||||
if (x == 13) x = 10;
|
||||
i7_push(proc, x);
|
||||
i7word_t current = 0;
|
||||
i7_opcode_glk(proc, i7_glk_stream_get_current, 0, ¤t);
|
||||
i7_push(proc, current);
|
||||
i7_opcode_glk(proc, i7_glk_put_char_stream, 2, NULL);
|
||||
}
|
||||
void i7_styling(i7process_t *proc, i7word_t which, i7word_t what) {
|
||||
(proc->stylist)(proc, which, what);
|
||||
}
|
||||
void i7_opcode_glk(i7process_t *proc, i7word_t glk_api_selector, i7word_t varargc,
|
||||
i7word_t *z) {
|
||||
(proc->glk_implementation)(proc, glk_api_selector, varargc, z);
|
||||
}
|
||||
void i7_initialise_miniglk_data(i7process_t *proc) {
|
||||
proc->miniglk = malloc(sizeof(miniglk_data));
|
||||
if (proc->miniglk == NULL) {
|
||||
printf("Memory allocation failed\n");
|
||||
exit(1);
|
||||
}
|
||||
proc->miniglk->no_files = 0;
|
||||
proc->miniglk->stdout_stream_id = 0;
|
||||
proc->miniglk->stderr_stream_id = 1;
|
||||
proc->miniglk->no_windows = 1;
|
||||
proc->miniglk->rb_back = 0;
|
||||
proc->miniglk->rb_front = 0;
|
||||
proc->miniglk->no_lr = 0;
|
||||
}
|
||||
i7word_t fn_i7_mgl_TEXT_TY_CharacterLength(i7process_t *proc, i7word_t i7_mgl_local_txt, i7word_t i7_mgl_local_ch, i7word_t i7_mgl_local_i, i7word_t i7_mgl_local_dsize, i7word_t i7_mgl_local_p, i7word_t i7_mgl_local_cp, i7word_t i7_mgl_local_r);
|
||||
i7word_t fn_i7_mgl_BlkValueRead(i7process_t *proc, i7word_t i7_mgl_local_from, i7word_t i7_mgl_local_pos, i7word_t i7_mgl_local_do_not_indirect, i7word_t i7_mgl_local_long_block, i7word_t i7_mgl_local_chunk_size_in_bytes, i7word_t i7_mgl_local_header_size_in_bytes, i7word_t i7_mgl_local_flags, i7word_t i7_mgl_local_entry_size_in_bytes, i7word_t i7_mgl_local_seek_byte_position);
|
||||
void i7_style(i7process_t *proc, i7word_t what_v) {
|
||||
i7_stream *S = &(i7_memory_streams[proc->state.current_output_stream_ID]);
|
||||
S->style[0] = 0;
|
||||
switch (what_v) {
|
||||
case 0: break;
|
||||
case 1: sprintf(S->style, "bold"); break;
|
||||
case 2: sprintf(S->style, "italic"); break;
|
||||
case 3: sprintf(S->style, "reverse"); break;
|
||||
default: {
|
||||
int L = fn_i7_mgl_TEXT_TY_CharacterLength(proc, what_v, 0, 0, 0, 0, 0, 0);
|
||||
if (L > 127) L = 127;
|
||||
for (int i=0; i<L; i++) S->style[i] = fn_i7_mgl_BlkValueRead(proc, what_v, i, 0, 0, 0, 0, 0, 0, 0);
|
||||
S->style[L] = 0;
|
||||
void i7_default_stylist(i7process_t *proc, i7word_t which, i7word_t what) {
|
||||
if (which == 1) {
|
||||
i7_mg_stream_t *S = &(proc->miniglk->memory_streams[proc->state.current_output_stream_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");
|
||||
}
|
||||
} else {
|
||||
i7_mg_stream_t *S = &(proc->miniglk->memory_streams[proc->state.current_output_stream_ID]);
|
||||
S->style[0] = 0;
|
||||
switch (what) {
|
||||
case 0: break;
|
||||
case 1: sprintf(S->style, "bold"); break;
|
||||
case 2: sprintf(S->style, "italic"); break;
|
||||
case 3: sprintf(S->style, "reverse"); break;
|
||||
default: {
|
||||
int L = fn_i7_mgl_TEXT_TY_CharacterLength(proc, what, 0, 0, 0, 0, 0, 0);
|
||||
if (L > 127) L = 127;
|
||||
for (int i=0; i<L; i++) S->style[i] = fn_i7_mgl_BlkValueRead(proc, what, i, 0, 0, 0, 0, 0, 0, 0);
|
||||
S->style[L] = 0;
|
||||
}
|
||||
}
|
||||
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");
|
||||
}
|
||||
}
|
||||
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.current_output_stream_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];
|
||||
int i7_no_filerefs = 0;
|
||||
|
||||
i7word_t i7_do_glk_fileref_create_by_name(i7process_t *proc, i7word_t usage, i7word_t name, i7word_t rock) {
|
||||
if (i7_no_filerefs >= 128) {
|
||||
i7word_t i7_miniglk_fileref_create_by_name(i7process_t *proc, i7word_t usage, i7word_t name, i7word_t rock) {
|
||||
if (proc->miniglk->no_files >= 128) {
|
||||
fprintf(stderr, "Out of streams\n"); i7_fatal_exit(proc);
|
||||
}
|
||||
int id = i7_no_filerefs++;
|
||||
filerefs[id].usage = usage;
|
||||
filerefs[id].name = name;
|
||||
filerefs[id].rock = rock;
|
||||
filerefs[id].handle = NULL;
|
||||
int id = proc->miniglk->no_files++;
|
||||
proc->miniglk->files[id].usage = usage;
|
||||
proc->miniglk->files[id].name = name;
|
||||
proc->miniglk->files[id].rock = rock;
|
||||
proc->miniglk->files[id].handle = NULL;
|
||||
for (int i=0; i<128; i++) {
|
||||
i7byte_t c = i7_read_byte(proc, name+1+i);
|
||||
filerefs[id].leafname[i] = c;
|
||||
proc->miniglk->files[id].leafname[i] = c;
|
||||
if (c == 0) break;
|
||||
}
|
||||
filerefs[id].leafname[127] = 0;
|
||||
sprintf(filerefs[id].leafname + strlen(filerefs[id].leafname), ".glkdata");
|
||||
proc->miniglk->files[id].leafname[127] = 0;
|
||||
sprintf(proc->miniglk->files[id].leafname + strlen(proc->miniglk->files[id].leafname), ".glkdata");
|
||||
return id;
|
||||
}
|
||||
|
||||
int i7_fseek(i7process_t *proc, int id, int pos, int origin) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (filerefs[id].handle == NULL) { fprintf(stderr, "File not open\n"); i7_fatal_exit(proc); }
|
||||
return fseek(filerefs[id].handle, pos, origin);
|
||||
if (proc->miniglk->files[id].handle == NULL) { fprintf(stderr, "File not open\n"); i7_fatal_exit(proc); }
|
||||
return fseek(proc->miniglk->files[id].handle, pos, origin);
|
||||
}
|
||||
|
||||
int i7_ftell(i7process_t *proc, int id) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (filerefs[id].handle == NULL) { fprintf(stderr, "File not open\n"); i7_fatal_exit(proc); }
|
||||
int t = ftell(filerefs[id].handle);
|
||||
if (proc->miniglk->files[id].handle == NULL) { fprintf(stderr, "File not open\n"); i7_fatal_exit(proc); }
|
||||
int t = ftell(proc->miniglk->files[id].handle);
|
||||
return t;
|
||||
}
|
||||
|
||||
int i7_fopen(i7process_t *proc, int id, int mode) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (filerefs[id].handle) { fprintf(stderr, "File already open\n"); i7_fatal_exit(proc); }
|
||||
if (proc->miniglk->files[id].handle) { fprintf(stderr, "File already open\n"); i7_fatal_exit(proc); }
|
||||
char *c_mode = "r";
|
||||
switch (mode) {
|
||||
case filemode_Write: c_mode = "w"; break;
|
||||
case filemode_Read: c_mode = "r"; break;
|
||||
case filemode_ReadWrite: c_mode = "r+"; break;
|
||||
case filemode_WriteAppend: c_mode = "r+"; break;
|
||||
case i7_filemode_Write: c_mode = "w"; break;
|
||||
case i7_filemode_Read: c_mode = "r"; break;
|
||||
case i7_filemode_ReadWrite: c_mode = "r+"; break;
|
||||
case i7_filemode_WriteAppend: c_mode = "r+"; break;
|
||||
}
|
||||
FILE *h = fopen(filerefs[id].leafname, c_mode);
|
||||
FILE *h = fopen(proc->miniglk->files[id].leafname, c_mode);
|
||||
if (h == NULL) return 0;
|
||||
filerefs[id].handle = h;
|
||||
if (mode == filemode_WriteAppend) i7_fseek(proc, id, 0, SEEK_END);
|
||||
proc->miniglk->files[id].handle = h;
|
||||
if (mode == i7_filemode_WriteAppend) i7_fseek(proc, id, 0, SEEK_END);
|
||||
return 1;
|
||||
}
|
||||
|
||||
void i7_fclose(i7process_t *proc, int id) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (filerefs[id].handle == NULL) { fprintf(stderr, "File not open\n"); i7_fatal_exit(proc); }
|
||||
fclose(filerefs[id].handle);
|
||||
filerefs[id].handle = NULL;
|
||||
if (proc->miniglk->files[id].handle == NULL) { fprintf(stderr, "File not open\n"); i7_fatal_exit(proc); }
|
||||
fclose(proc->miniglk->files[id].handle);
|
||||
proc->miniglk->files[id].handle = NULL;
|
||||
}
|
||||
|
||||
|
||||
i7word_t i7_do_glk_fileref_does_file_exist(i7process_t *proc, i7word_t id) {
|
||||
i7word_t i7_miniglk_fileref_does_file_exist(i7process_t *proc, i7word_t id) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (filerefs[id].handle) return 1;
|
||||
if (i7_fopen(proc, id, filemode_Read)) {
|
||||
if (proc->miniglk->files[id].handle) return 1;
|
||||
if (i7_fopen(proc, id, i7_filemode_Read)) {
|
||||
i7_fclose(proc, id); return 1;
|
||||
}
|
||||
return 0;
|
||||
|
@ -1184,30 +1238,29 @@ i7word_t i7_do_glk_fileref_does_file_exist(i7process_t *proc, i7word_t id) {
|
|||
|
||||
void i7_fputc(i7process_t *proc, int c, int id) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (filerefs[id].handle == NULL) { fprintf(stderr, "File not open\n"); i7_fatal_exit(proc); }
|
||||
fputc(c, filerefs[id].handle);
|
||||
if (proc->miniglk->files[id].handle == NULL) { fprintf(stderr, "File not open\n"); i7_fatal_exit(proc); }
|
||||
fputc(c, proc->miniglk->files[id].handle);
|
||||
}
|
||||
|
||||
int i7_fgetc(i7process_t *proc, int id) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (filerefs[id].handle == NULL) { fprintf(stderr, "File not open\n"); i7_fatal_exit(proc); }
|
||||
int c = fgetc(filerefs[id].handle);
|
||||
if (proc->miniglk->files[id].handle == NULL) { fprintf(stderr, "File not open\n"); i7_fatal_exit(proc); }
|
||||
int c = fgetc(proc->miniglk->files[id].handle);
|
||||
return c;
|
||||
}
|
||||
|
||||
i7word_t i7_stdout_id = 0, i7_stderr_id = 1;
|
||||
|
||||
i7word_t i7_do_glk_stream_get_current(i7process_t *proc) {
|
||||
i7word_t i7_miniglk_stream_get_current(i7process_t *proc) {
|
||||
return proc->state.current_output_stream_ID;
|
||||
}
|
||||
|
||||
void i7_do_glk_stream_set_current(i7process_t *proc, i7word_t id) {
|
||||
if ((id < 0) || (id >= I7_MAX_STREAMS)) { fprintf(stderr, "Stream ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
void i7_miniglk_stream_set_current(i7process_t *proc, i7word_t id) {
|
||||
if ((id < 0) || (id >= I7_MINIGLK_MAX_STREAMS)) { fprintf(stderr, "Stream ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
proc->state.current_output_stream_ID = id;
|
||||
}
|
||||
|
||||
i7_stream i7_new_stream(i7process_t *proc, FILE *F, int win_id) {
|
||||
i7_stream S;
|
||||
i7_mg_stream_t i7_new_stream(i7process_t *proc, FILE *F, int win_id) {
|
||||
i7_mg_stream_t S;
|
||||
S.to_file = F;
|
||||
S.to_file_id = -1;
|
||||
S.to_memory = NULL;
|
||||
|
@ -1229,58 +1282,58 @@ i7_stream i7_new_stream(i7process_t *proc, FILE *F, int win_id) {
|
|||
return S;
|
||||
}
|
||||
void i7_initialise_streams(i7process_t *proc) {
|
||||
for (int i=0; i<I7_MAX_STREAMS; i++) i7_memory_streams[i] = i7_new_stream(proc, NULL, 0);
|
||||
i7_memory_streams[i7_stdout_id] = i7_new_stream(proc, stdout, 0);
|
||||
i7_memory_streams[i7_stdout_id].active = 1;
|
||||
i7_memory_streams[i7_stdout_id].encode_UTF8 = 1;
|
||||
i7_memory_streams[i7_stderr_id] = i7_new_stream(proc, stderr, 0);
|
||||
i7_memory_streams[i7_stderr_id].active = 1;
|
||||
i7_memory_streams[i7_stderr_id].encode_UTF8 = 1;
|
||||
i7_do_glk_stream_set_current(proc, i7_stdout_id);
|
||||
for (int i=0; i<I7_MINIGLK_MAX_STREAMS; i++) proc->miniglk->memory_streams[i] = i7_new_stream(proc, NULL, 0);
|
||||
proc->miniglk->memory_streams[proc->miniglk->stdout_stream_id] = i7_new_stream(proc, stdout, 0);
|
||||
proc->miniglk->memory_streams[proc->miniglk->stdout_stream_id].active = 1;
|
||||
proc->miniglk->memory_streams[proc->miniglk->stdout_stream_id].encode_UTF8 = 1;
|
||||
proc->miniglk->memory_streams[proc->miniglk->stderr_stream_id] = i7_new_stream(proc, stderr, 0);
|
||||
proc->miniglk->memory_streams[proc->miniglk->stderr_stream_id].active = 1;
|
||||
proc->miniglk->memory_streams[proc->miniglk->stderr_stream_id].encode_UTF8 = 1;
|
||||
i7_miniglk_stream_set_current(proc, proc->miniglk->stdout_stream_id);
|
||||
}
|
||||
|
||||
i7word_t i7_open_stream(i7process_t *proc, FILE *F, int win_id) {
|
||||
for (int i=0; i<I7_MAX_STREAMS; i++)
|
||||
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 = proc->state.current_output_stream_ID;
|
||||
for (int i=0; i<I7_MINIGLK_MAX_STREAMS; i++)
|
||||
if (proc->miniglk->memory_streams[i].active == 0) {
|
||||
proc->miniglk->memory_streams[i] = i7_new_stream(proc, F, win_id);
|
||||
proc->miniglk->memory_streams[i].active = 1;
|
||||
proc->miniglk->memory_streams[i].previous_id = proc->state.current_output_stream_ID;
|
||||
return i;
|
||||
}
|
||||
fprintf(stderr, "Out of streams\n"); i7_fatal_exit(proc);
|
||||
return 0;
|
||||
}
|
||||
|
||||
i7word_t i7_do_glk_stream_open_memory(i7process_t *proc, i7word_t buffer, i7word_t len, i7word_t fmode, i7word_t rock) {
|
||||
i7word_t i7_miniglk_stream_open_memory(i7process_t *proc, i7word_t buffer, i7word_t len, i7word_t fmode, i7word_t rock) {
|
||||
if (fmode != 1) { fprintf(stderr, "Only file mode 1 supported, not %d\n", fmode); i7_fatal_exit(proc); }
|
||||
i7word_t id = i7_open_stream(proc, NULL, 0);
|
||||
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;
|
||||
proc->miniglk->memory_streams[id].write_here_on_closure = buffer;
|
||||
proc->miniglk->memory_streams[id].write_limit = (size_t) len;
|
||||
proc->miniglk->memory_streams[id].char_size = 1;
|
||||
proc->state.current_output_stream_ID = id;
|
||||
return id;
|
||||
}
|
||||
|
||||
i7word_t i7_do_glk_stream_open_memory_uni(i7process_t *proc, i7word_t buffer, i7word_t len, i7word_t fmode, i7word_t rock) {
|
||||
i7word_t i7_miniglk_stream_open_memory_uni(i7process_t *proc, i7word_t buffer, i7word_t len, i7word_t fmode, i7word_t rock) {
|
||||
if (fmode != 1) { fprintf(stderr, "Only file mode 1 supported, not %d\n", fmode); i7_fatal_exit(proc); }
|
||||
i7word_t id = i7_open_stream(proc, NULL, 0);
|
||||
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;
|
||||
proc->miniglk->memory_streams[id].write_here_on_closure = buffer;
|
||||
proc->miniglk->memory_streams[id].write_limit = (size_t) len;
|
||||
proc->miniglk->memory_streams[id].char_size = 4;
|
||||
proc->state.current_output_stream_ID = id;
|
||||
return id;
|
||||
}
|
||||
|
||||
i7word_t i7_do_glk_stream_open_file(i7process_t *proc, i7word_t fileref, i7word_t usage, i7word_t rock) {
|
||||
i7word_t i7_miniglk_stream_open_file(i7process_t *proc, i7word_t fileref, i7word_t usage, i7word_t rock) {
|
||||
i7word_t id = i7_open_stream(proc, NULL, 0);
|
||||
i7_memory_streams[id].to_file_id = fileref;
|
||||
proc->miniglk->memory_streams[id].to_file_id = fileref;
|
||||
if (i7_fopen(proc, fileref, usage) == 0) return 0;
|
||||
return id;
|
||||
}
|
||||
|
||||
void i7_do_glk_stream_set_position(i7process_t *proc, i7word_t id, i7word_t pos, i7word_t seekmode) {
|
||||
if ((id < 0) || (id >= I7_MAX_STREAMS)) { fprintf(stderr, "Stream ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
i7_stream *S = &(i7_memory_streams[id]);
|
||||
void i7_miniglk_stream_set_position(i7process_t *proc, i7word_t id, i7word_t pos, i7word_t seekmode) {
|
||||
if ((id < 0) || (id >= I7_MINIGLK_MAX_STREAMS)) { fprintf(stderr, "Stream ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
i7_mg_stream_t *S = &(proc->miniglk->memory_streams[id]);
|
||||
if (S->to_file_id >= 0) {
|
||||
int origin;
|
||||
switch (seekmode) {
|
||||
|
@ -1295,20 +1348,20 @@ void i7_do_glk_stream_set_position(i7process_t *proc, i7word_t id, i7word_t pos,
|
|||
}
|
||||
}
|
||||
|
||||
i7word_t i7_do_glk_stream_get_position(i7process_t *proc, i7word_t id) {
|
||||
if ((id < 0) || (id >= I7_MAX_STREAMS)) { fprintf(stderr, "Stream ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
i7_stream *S = &(i7_memory_streams[id]);
|
||||
i7word_t i7_miniglk_stream_get_position(i7process_t *proc, i7word_t id) {
|
||||
if ((id < 0) || (id >= I7_MINIGLK_MAX_STREAMS)) { fprintf(stderr, "Stream ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
i7_mg_stream_t *S = &(proc->miniglk->memory_streams[id]);
|
||||
if (S->to_file_id >= 0) {
|
||||
return (i7word_t) i7_ftell(proc, S->to_file_id);
|
||||
}
|
||||
return (i7word_t) S->memory_used;
|
||||
}
|
||||
|
||||
void i7_do_glk_stream_close(i7process_t *proc, i7word_t id, i7word_t result) {
|
||||
if ((id < 0) || (id >= I7_MAX_STREAMS)) { fprintf(stderr, "Stream ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
void i7_miniglk_stream_close(i7process_t *proc, i7word_t id, i7word_t result) {
|
||||
if ((id < 0) || (id >= I7_MINIGLK_MAX_STREAMS)) { fprintf(stderr, "Stream ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
if (id == 0) { fprintf(stderr, "Cannot close stdout\n"); i7_fatal_exit(proc); }
|
||||
if (id == 1) { fprintf(stderr, "Cannot close stderr\n"); i7_fatal_exit(proc); }
|
||||
i7_stream *S = &(i7_memory_streams[id]);
|
||||
i7_mg_stream_t *S = &(proc->miniglk->memory_streams[id]);
|
||||
if (S->active == 0) { fprintf(stderr, "Stream %d already closed\n", id); i7_fatal_exit(proc); }
|
||||
if (proc->state.current_output_stream_ID == id) proc->state.current_output_stream_ID = S->previous_id;
|
||||
if (S->write_here_on_closure != 0) {
|
||||
|
@ -1338,38 +1391,35 @@ void i7_do_glk_stream_close(i7process_t *proc, i7word_t id, i7word_t result) {
|
|||
S->memory_used = 0;
|
||||
}
|
||||
|
||||
i7_winref winrefs[128];
|
||||
int i7_no_winrefs = 1;
|
||||
|
||||
i7word_t i7_do_glk_window_open(i7process_t *proc, i7word_t split, i7word_t method, i7word_t size, i7word_t wintype, i7word_t rock) {
|
||||
if (i7_no_winrefs >= 128) {
|
||||
i7word_t i7_miniglk_window_open(i7process_t *proc, i7word_t split, i7word_t method, i7word_t size, i7word_t wintype, i7word_t rock) {
|
||||
if (proc->miniglk->no_windows >= 128) {
|
||||
fprintf(stderr, "Out of windows\n"); i7_fatal_exit(proc);
|
||||
}
|
||||
int id = i7_no_winrefs++;
|
||||
winrefs[id].type = wintype;
|
||||
winrefs[id].stream_id = i7_open_stream(proc, stdout, id);
|
||||
winrefs[id].rock = rock;
|
||||
int id = proc->miniglk->no_windows++;
|
||||
proc->miniglk->windows[id].type = wintype;
|
||||
proc->miniglk->windows[id].stream_id = i7_open_stream(proc, stdout, id);
|
||||
proc->miniglk->windows[id].rock = rock;
|
||||
return id;
|
||||
}
|
||||
|
||||
i7word_t i7_stream_of_window(i7process_t *proc, i7word_t id) {
|
||||
if ((id < 0) || (id >= i7_no_winrefs)) { fprintf(stderr, "Window ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
return winrefs[id].stream_id;
|
||||
if ((id < 0) || (id >= proc->miniglk->no_windows)) { fprintf(stderr, "Window ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
return proc->miniglk->windows[id].stream_id;
|
||||
}
|
||||
|
||||
i7word_t i7_rock_of_window(i7process_t *proc, i7word_t id) {
|
||||
if ((id < 0) || (id >= i7_no_winrefs)) { fprintf(stderr, "Window ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
return winrefs[id].rock;
|
||||
if ((id < 0) || (id >= proc->miniglk->no_windows)) { fprintf(stderr, "Window ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
return proc->miniglk->windows[id].rock;
|
||||
}
|
||||
|
||||
void i7_to_receiver(i7process_t *proc, i7word_t rock, wchar_t c) {
|
||||
i7_stream *S = &(i7_memory_streams[proc->state.current_output_stream_ID]);
|
||||
i7_mg_stream_t *S = &(proc->miniglk->memory_streams[proc->state.current_output_stream_ID]);
|
||||
if (proc->receiver == NULL) fputc(c, stdout);
|
||||
(proc->receiver)(rock, c, S->composite_style);
|
||||
}
|
||||
|
||||
void i7_do_glk_put_char_stream(i7process_t *proc, i7word_t stream_id, i7word_t x) {
|
||||
i7_stream *S = &(i7_memory_streams[stream_id]);
|
||||
void i7_miniglk_put_char_stream(i7process_t *proc, i7word_t stream_id, i7word_t x) {
|
||||
i7_mg_stream_t *S = &(proc->miniglk->memory_streams[stream_id]);
|
||||
if (S->to_file) {
|
||||
int win_id = S->owned_by_window_id;
|
||||
int rock = -1;
|
||||
|
@ -1404,8 +1454,8 @@ void i7_do_glk_put_char_stream(i7process_t *proc, i7word_t stream_id, i7word_t x
|
|||
}
|
||||
}
|
||||
|
||||
i7word_t i7_do_glk_get_char_stream(i7process_t *proc, i7word_t stream_id) {
|
||||
i7_stream *S = &(i7_memory_streams[stream_id]);
|
||||
i7word_t i7_miniglk_get_char_stream(i7process_t *proc, i7word_t stream_id) {
|
||||
i7_mg_stream_t *S = &(proc->miniglk->memory_streams[stream_id]);
|
||||
if (S->to_file_id >= 0) {
|
||||
S->chars_read++;
|
||||
return i7_fgetc(proc, S->to_file_id);
|
||||
|
@ -1413,39 +1463,21 @@ i7word_t i7_do_glk_get_char_stream(i7process_t *proc, i7word_t stream_id) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
void i7_print_char(i7process_t *proc, i7word_t x) {
|
||||
if (x == 13) x = 10;
|
||||
i7_do_glk_put_char_stream(proc, proc->state.current_output_stream_ID, x);
|
||||
}
|
||||
|
||||
void i7_print_C_string(i7process_t *proc, char *c_string) {
|
||||
if (c_string)
|
||||
for (int i=0; c_string[i]; i++)
|
||||
i7_print_char(proc, (i7word_t) c_string[i]);
|
||||
}
|
||||
|
||||
void i7_print_decimal(i7process_t *proc, i7word_t x) {
|
||||
char room[32];
|
||||
sprintf(room, "%d", (int) x);
|
||||
i7_print_C_string(proc, room);
|
||||
}
|
||||
i7_glk_event i7_events_ring_buffer[32];
|
||||
int i7_rb_back = 0, i7_rb_front = 0;
|
||||
|
||||
i7_glk_event *i7_next_event(i7process_t *proc) {
|
||||
if (i7_rb_front == i7_rb_back) return NULL;
|
||||
i7_glk_event *e = &(i7_events_ring_buffer[i7_rb_back]);
|
||||
i7_rb_back++; if (i7_rb_back == 32) i7_rb_back = 0;
|
||||
i7_mg_event_t *i7_next_event(i7process_t *proc) {
|
||||
if (proc->miniglk->rb_front == proc->miniglk->rb_back) return NULL;
|
||||
i7_mg_event_t *e = &(proc->miniglk->events_ring_buffer[proc->miniglk->rb_back]);
|
||||
proc->miniglk->rb_back++; if (proc->miniglk->rb_back == I7_MINIGLK_RING_BUFFER_SIZE) proc->miniglk->rb_back = 0;
|
||||
return e;
|
||||
}
|
||||
|
||||
void i7_make_event(i7process_t *proc, i7_glk_event e) {
|
||||
i7_events_ring_buffer[i7_rb_front] = e;
|
||||
i7_rb_front++; if (i7_rb_front == 32) i7_rb_front = 0;
|
||||
void i7_make_event(i7process_t *proc, i7_mg_event_t e) {
|
||||
proc->miniglk->events_ring_buffer[proc->miniglk->rb_front] = e;
|
||||
proc->miniglk->rb_front++; if (proc->miniglk->rb_front == I7_MINIGLK_RING_BUFFER_SIZE) proc->miniglk->rb_front = 0;
|
||||
}
|
||||
|
||||
i7word_t i7_do_glk_select(i7process_t *proc, i7word_t structure) {
|
||||
i7_glk_event *e = i7_next_event(proc);
|
||||
i7word_t i7_miniglk_select(i7process_t *proc, i7word_t structure) {
|
||||
i7_mg_event_t *e = i7_next_event(proc);
|
||||
if (e == NULL) {
|
||||
fprintf(stderr, "No events available to select\n"); i7_fatal_exit(proc);
|
||||
}
|
||||
|
@ -1465,10 +1497,9 @@ i7word_t i7_do_glk_select(i7process_t *proc, i7word_t structure) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
int i7_no_lr = 0;
|
||||
i7word_t i7_do_glk_request_line_event(i7process_t *proc, i7word_t window_id, i7word_t buffer, i7word_t max_len, i7word_t init_len) {
|
||||
i7_glk_event e;
|
||||
e.type = evtype_LineInput;
|
||||
i7word_t i7_miniglk_request_line_event(i7process_t *proc, i7word_t window_id, i7word_t buffer, i7word_t max_len, i7word_t init_len) {
|
||||
i7_mg_event_t e;
|
||||
e.type = i7_evtype_LineInput;
|
||||
e.win_id = window_id;
|
||||
e.val1 = 1;
|
||||
e.val2 = 0;
|
||||
|
@ -1484,14 +1515,14 @@ i7word_t i7_do_glk_request_line_event(i7process_t *proc, i7word_t window_id, i7w
|
|||
if (pos < max_len) i7_write_byte(proc, buffer + pos, 0); else i7_write_byte(proc, buffer + max_len-1, 0);
|
||||
e.val1 = pos;
|
||||
i7_make_event(proc, e);
|
||||
if (i7_no_lr++ == 1000) {
|
||||
if (proc->miniglk->no_lr++ == 1000) {
|
||||
fprintf(stdout, "[Too many line events: terminating to prevent hang]\n"); exit(0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void i7_opcode_glk(i7process_t *proc, i7word_t glk_api_selector, i7word_t varargc, i7word_t *z) {
|
||||
void i7_default_glk(i7process_t *proc, i7word_t glk_api_selector, i7word_t varargc, i7word_t *z) {
|
||||
i7_debug_stack("i7_opcode_glk");
|
||||
i7word_t args[5] = { 0, 0, 0, 0, 0 }, argc = 0;
|
||||
while (varargc > 0) {
|
||||
|
@ -1507,9 +1538,9 @@ void i7_opcode_glk(i7process_t *proc, i7word_t glk_api_selector, i7word_t vararg
|
|||
case i7_glk_window_iterate:
|
||||
rv = 0; break;
|
||||
case i7_glk_window_open:
|
||||
rv = i7_do_glk_window_open(proc, args[0], args[1], args[2], args[3], args[4]); break;
|
||||
rv = i7_miniglk_window_open(proc, args[0], args[1], args[2], args[3], args[4]); break;
|
||||
case i7_glk_set_window:
|
||||
i7_do_glk_stream_set_current(proc, i7_stream_of_window(proc, args[0])); break;
|
||||
i7_miniglk_stream_set_current(proc, i7_stream_of_window(proc, args[0])); break;
|
||||
case i7_glk_stream_iterate:
|
||||
rv = 0; break;
|
||||
case i7_glk_fileref_iterate:
|
||||
|
@ -1525,31 +1556,31 @@ void i7_opcode_glk(i7process_t *proc, i7word_t glk_api_selector, i7word_t vararg
|
|||
case i7_glk_window_move_cursor:
|
||||
rv = 0; break;
|
||||
case i7_glk_stream_get_position:
|
||||
rv = i7_do_glk_stream_get_position(proc, args[0]); break;
|
||||
rv = i7_miniglk_stream_get_position(proc, args[0]); break;
|
||||
case i7_glk_window_get_size:
|
||||
if (args[0]) i7_write_word(proc, args[0], 0, 80);
|
||||
if (args[1]) i7_write_word(proc, args[1], 0, 8);
|
||||
rv = 0; break;
|
||||
case i7_glk_request_line_event:
|
||||
rv = i7_do_glk_request_line_event(proc, args[0], args[1], args[2], args[3]); break;
|
||||
rv = i7_miniglk_request_line_event(proc, args[0], args[1], args[2], args[3]); break;
|
||||
case i7_glk_select:
|
||||
rv = i7_do_glk_select(proc, args[0]); break;
|
||||
rv = i7_miniglk_select(proc, args[0]); break;
|
||||
case i7_glk_stream_close:
|
||||
i7_do_glk_stream_close(proc, args[0], args[1]); break;
|
||||
i7_miniglk_stream_close(proc, args[0], args[1]); break;
|
||||
case i7_glk_stream_set_current:
|
||||
i7_do_glk_stream_set_current(proc, args[0]); break;
|
||||
i7_miniglk_stream_set_current(proc, args[0]); break;
|
||||
case i7_glk_stream_get_current:
|
||||
rv = i7_do_glk_stream_get_current(proc); break;
|
||||
rv = i7_miniglk_stream_get_current(proc); break;
|
||||
case i7_glk_stream_open_memory:
|
||||
rv = i7_do_glk_stream_open_memory(proc, args[0], args[1], args[2], args[3]); break;
|
||||
rv = i7_miniglk_stream_open_memory(proc, args[0], args[1], args[2], args[3]); break;
|
||||
case i7_glk_stream_open_memory_uni:
|
||||
rv = i7_do_glk_stream_open_memory_uni(proc, args[0], args[1], args[2], args[3]); break;
|
||||
rv = i7_miniglk_stream_open_memory_uni(proc, args[0], args[1], args[2], args[3]); break;
|
||||
case i7_glk_fileref_create_by_name:
|
||||
rv = i7_do_glk_fileref_create_by_name(proc, args[0], args[1], args[2]); break;
|
||||
rv = i7_miniglk_fileref_create_by_name(proc, args[0], args[1], args[2]); break;
|
||||
case i7_glk_fileref_does_file_exist:
|
||||
rv = i7_do_glk_fileref_does_file_exist(proc, args[0]); break;
|
||||
rv = i7_miniglk_fileref_does_file_exist(proc, args[0]); break;
|
||||
case i7_glk_stream_open_file:
|
||||
rv = i7_do_glk_stream_open_file(proc, args[0], args[1], args[2]); break;
|
||||
rv = i7_miniglk_stream_open_file(proc, args[0], args[1], args[2]); break;
|
||||
case i7_glk_fileref_destroy:
|
||||
rv = 0; break;
|
||||
case i7_glk_char_to_lower:
|
||||
|
@ -1565,11 +1596,11 @@ void i7_opcode_glk(i7process_t *proc, i7word_t glk_api_selector, i7word_t vararg
|
|||
((rv >= 0xF8) && (rv <= 0xFE))) rv -= 32;
|
||||
break;
|
||||
case i7_glk_stream_set_position:
|
||||
i7_do_glk_stream_set_position(proc, args[0], args[1], args[2]); break;
|
||||
i7_miniglk_stream_set_position(proc, args[0], args[1], args[2]); break;
|
||||
case i7_glk_put_char_stream:
|
||||
i7_do_glk_put_char_stream(proc, args[0], args[1]); break;
|
||||
i7_miniglk_put_char_stream(proc, args[0], args[1]); break;
|
||||
case i7_glk_get_char_stream:
|
||||
rv = i7_do_glk_get_char_stream(proc, args[0]); break;
|
||||
rv = i7_miniglk_get_char_stream(proc, args[0]); break;
|
||||
default:
|
||||
printf("Unimplemented: i7_opcode_glk %d.\n", glk_api_selector); i7_fatal_exit(proc);
|
||||
break;
|
||||
|
@ -1581,15 +1612,6 @@ void i7_print_name(i7process_t *proc, i7word_t x) {
|
|||
fn_i7_mgl_PrintShortName(proc, x, 0);
|
||||
}
|
||||
|
||||
void i7_print_object(i7process_t *proc, i7word_t x) {
|
||||
i7_print_decimal(proc, x);
|
||||
}
|
||||
|
||||
void i7_print_box(i7process_t *proc, i7word_t x) {
|
||||
printf("Unimplemented: i7_print_box.\n");
|
||||
i7_fatal_exit(proc);
|
||||
}
|
||||
|
||||
i7word_t fn_i7_mgl_pending_boxed_quotation(i7process_t *proc) {
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -46,7 +46,10 @@ typedef struct i7process_t {
|
|||
void (*receiver)(int id, wchar_t c, char *style);
|
||||
int send_count;
|
||||
char *(*sender)(int count);
|
||||
i7word_t (*communicator)(struct i7process_t *proc, char *id, int argc, i7word_t *args);
|
||||
void (*stylist)(struct i7process_t *proc, i7word_t which, i7word_t what);
|
||||
void (*glk_implementation)(struct i7process_t *proc, i7word_t glk_api_selector,
|
||||
i7word_t varargc, i7word_t *z);
|
||||
struct miniglk_data *miniglk;
|
||||
int use_UTF8;
|
||||
} i7process_t;
|
||||
i7state_t i7_new_state(void);
|
||||
|
@ -54,11 +57,15 @@ i7snapshot_t i7_new_snapshot(void);
|
|||
i7process_t i7_new_process(void);
|
||||
char *i7_default_sender(int count);
|
||||
void i7_default_receiver(int id, wchar_t c, char *style);
|
||||
i7word_t i7_default_communicator(i7process_t *proc, char *id, int argc, i7word_t *args);
|
||||
int i7_default_main(int argc, char **argv);
|
||||
void i7_set_process_receiver(i7process_t *proc,
|
||||
void (*receiver)(int id, wchar_t c, char *style), int UTF8);
|
||||
void i7_set_process_sender(i7process_t *proc, char *(*sender)(int count));
|
||||
void i7_set_process_stylist(i7process_t *proc,
|
||||
void (*stylist)(struct i7process_t *proc, i7word_t which, i7word_t what));
|
||||
void i7_set_process_glk_implementation(i7process_t *proc,
|
||||
void (*glk_implementation)(struct i7process_t *proc, i7word_t glk_api_selector,
|
||||
i7word_t varargc, i7word_t *z));
|
||||
int i7_run_process(i7process_t *proc);
|
||||
void i7_benign_exit(i7process_t *proc);
|
||||
void i7_fatal_exit(i7process_t *proc);
|
||||
|
@ -231,112 +238,17 @@ i7word_t i7_mcall_2(i7process_t *proc, i7word_t to, i7word_t prop, i7word_t v,
|
|||
i7word_t v2);
|
||||
i7word_t i7_mcall_3(i7process_t *proc, i7word_t to, i7word_t prop, i7word_t v,
|
||||
i7word_t v2, i7word_t v3);
|
||||
#define I7_BODY_TEXT_ID 201
|
||||
#define I7_STATUS_TEXT_ID 202
|
||||
#define I7_BOX_TEXT_ID 203
|
||||
|
||||
void i7_style(i7process_t *proc, i7word_t what);
|
||||
void i7_font(i7process_t *proc, int what);
|
||||
|
||||
#define fileusage_Data (0x00)
|
||||
#define fileusage_SavedGame (0x01)
|
||||
#define fileusage_Transcript (0x02)
|
||||
#define fileusage_InputRecord (0x03)
|
||||
#define fileusage_TypeMask (0x0f)
|
||||
|
||||
#define fileusage_TextMode (0x100)
|
||||
#define fileusage_BinaryMode (0x000)
|
||||
|
||||
#define filemode_Write (0x01)
|
||||
#define filemode_Read (0x02)
|
||||
#define filemode_ReadWrite (0x03)
|
||||
#define filemode_WriteAppend (0x05)
|
||||
|
||||
typedef struct i7_fileref {
|
||||
i7word_t usage;
|
||||
i7word_t name;
|
||||
i7word_t rock;
|
||||
char leafname[128];
|
||||
FILE *handle;
|
||||
} i7_fileref;
|
||||
|
||||
i7word_t i7_do_glk_fileref_create_by_name(i7process_t *proc, i7word_t usage, i7word_t name, i7word_t rock);
|
||||
int i7_fseek(i7process_t *proc, int id, int pos, int origin);
|
||||
int i7_ftell(i7process_t *proc, int id);
|
||||
int i7_fopen(i7process_t *proc, int id, int mode);
|
||||
void i7_fclose(i7process_t *proc, int id);
|
||||
i7word_t i7_do_glk_fileref_does_file_exist(i7process_t *proc, i7word_t id);
|
||||
void i7_fputc(i7process_t *proc, int c, int id);
|
||||
int i7_fgetc(i7process_t *proc, int id);
|
||||
typedef struct i7_stream {
|
||||
FILE *to_file;
|
||||
i7word_t to_file_id;
|
||||
wchar_t *to_memory;
|
||||
size_t memory_used;
|
||||
size_t memory_capacity;
|
||||
i7word_t previous_id;
|
||||
i7word_t write_here_on_closure;
|
||||
size_t write_limit;
|
||||
int active;
|
||||
int encode_UTF8;
|
||||
int char_size;
|
||||
int chars_read;
|
||||
int read_position;
|
||||
int end_position;
|
||||
int owned_by_window_id;
|
||||
int fixed_pitch;
|
||||
char style[128];
|
||||
char composite_style[300];
|
||||
} i7_stream;
|
||||
i7word_t i7_do_glk_stream_get_current(i7process_t *proc);
|
||||
i7_stream i7_new_stream(i7process_t *proc, FILE *F, int win_id);
|
||||
void i7_initialise_streams(i7process_t *proc);
|
||||
i7word_t i7_open_stream(i7process_t *proc, FILE *F, int win_id);
|
||||
i7word_t i7_do_glk_stream_open_memory(i7process_t *proc, i7word_t buffer, i7word_t len, i7word_t fmode, i7word_t rock);
|
||||
i7word_t i7_do_glk_stream_open_memory_uni(i7process_t *proc, i7word_t buffer, i7word_t len, i7word_t fmode, i7word_t rock);
|
||||
i7word_t i7_do_glk_stream_open_file(i7process_t *proc, i7word_t fileref, i7word_t usage, i7word_t rock);
|
||||
#define seekmode_Start (0)
|
||||
#define seekmode_Current (1)
|
||||
#define seekmode_End (2)
|
||||
void i7_do_glk_stream_set_position(i7process_t *proc, i7word_t id, i7word_t pos, i7word_t seekmode);
|
||||
i7word_t i7_do_glk_stream_get_position(i7process_t *proc, i7word_t id);
|
||||
void i7_do_glk_stream_close(i7process_t *proc, i7word_t id, i7word_t result);
|
||||
typedef struct i7_winref {
|
||||
i7word_t type;
|
||||
i7word_t stream_id;
|
||||
i7word_t rock;
|
||||
} i7_winref;
|
||||
i7word_t i7_do_glk_window_open(i7process_t *proc, i7word_t split, i7word_t method, i7word_t size, i7word_t wintype, i7word_t rock);
|
||||
i7word_t i7_stream_of_window(i7process_t *proc, i7word_t id);
|
||||
i7word_t i7_rock_of_window(i7process_t *proc, i7word_t id);
|
||||
void i7_to_receiver(i7process_t *proc, i7word_t rock, wchar_t c);
|
||||
void i7_do_glk_put_char_stream(i7process_t *proc, i7word_t stream_id, i7word_t x);
|
||||
i7word_t i7_do_glk_get_char_stream(i7process_t *proc, i7word_t stream_id);
|
||||
void i7_print_char(i7process_t *proc, i7word_t x);
|
||||
void i7_print_C_string(i7process_t *proc, char *c_string);
|
||||
void i7_print_decimal(i7process_t *proc, i7word_t x);
|
||||
|
||||
#define evtype_None (0)
|
||||
#define evtype_Timer (1)
|
||||
#define evtype_CharInput (2)
|
||||
#define evtype_LineInput (3)
|
||||
#define evtype_MouseInput (4)
|
||||
#define evtype_Arrange (5)
|
||||
#define evtype_Redraw (6)
|
||||
#define evtype_SoundNotify (7)
|
||||
#define evtype_Hyperlink (8)
|
||||
#define evtype_VolumeNotify (9)
|
||||
|
||||
typedef struct i7_glk_event {
|
||||
i7word_t type;
|
||||
i7word_t win_id;
|
||||
i7word_t val1;
|
||||
i7word_t val2;
|
||||
} i7_glk_event;
|
||||
i7_glk_event *i7_next_event(i7process_t *proc);
|
||||
void i7_make_event(i7process_t *proc, i7_glk_event e);
|
||||
i7word_t i7_do_glk_select(i7process_t *proc, i7word_t structure);
|
||||
i7word_t i7_do_glk_request_line_event(i7process_t *proc, i7word_t window_id, i7word_t buffer, i7word_t max_len, i7word_t init_len);
|
||||
void i7_print_object(i7process_t *proc, i7word_t x);
|
||||
void i7_print_box(i7process_t *proc, i7word_t x);
|
||||
void i7_print_char(i7process_t *proc, i7word_t x);
|
||||
void i7_styling(i7process_t *proc, i7word_t which, i7word_t what);
|
||||
void i7_default_stylist(i7process_t *proc, i7word_t which, i7word_t what);
|
||||
void i7_opcode_glk(i7process_t *proc, i7word_t glk_api_selector, i7word_t varargc,
|
||||
i7word_t *z);
|
||||
void i7_default_glk(i7process_t *proc, i7word_t glk_api_selector, i7word_t varargc,
|
||||
i7word_t *z);
|
||||
#define i7_glk_exit 0x0001
|
||||
#define i7_glk_set_interrupt_handler 0x0002
|
||||
#define i7_glk_tick 0x0003
|
||||
|
@ -460,15 +372,132 @@ i7word_t i7_do_glk_request_line_event(i7process_t *proc, i7word_t window_id, i7w
|
|||
#define i7_glk_date_to_time_local 0x016D
|
||||
#define i7_glk_date_to_simple_time_utc 0x016E
|
||||
#define i7_glk_date_to_simple_time_local 0x016F
|
||||
void i7_opcode_glk(i7process_t *proc, i7word_t glk_api_selector, i7word_t varargc, i7word_t *z);
|
||||
#define I7_BODY_TEXT_ID 201
|
||||
#define I7_STATUS_TEXT_ID 202
|
||||
#define I7_BOX_TEXT_ID 203
|
||||
#define i7_fileusage_Data 0x00
|
||||
#define i7_fileusage_SavedGame 0x01
|
||||
#define i7_fileusage_Transcript 0x02
|
||||
#define i7_fileusage_InputRecord 0x03
|
||||
#define i7_fileusage_TypeMask 0x0f
|
||||
#define i7_fileusage_TextMode 0x100
|
||||
#define i7_fileusage_BinaryMode 0x000
|
||||
|
||||
#define i7_filemode_Write 0x01
|
||||
#define i7_filemode_Read 0x02
|
||||
#define i7_filemode_ReadWrite 0x03
|
||||
#define i7_filemode_WriteAppend 0x05
|
||||
#define seekmode_Start (0)
|
||||
#define seekmode_Current (1)
|
||||
#define seekmode_End (2)
|
||||
#define i7_evtype_None 0
|
||||
#define i7_evtype_Timer 1
|
||||
#define i7_evtype_CharInput 2
|
||||
#define i7_evtype_LineInput 3
|
||||
#define i7_evtype_MouseInput 4
|
||||
#define i7_evtype_Arrange 5
|
||||
#define i7_evtype_Redraw 6
|
||||
#define i7_evtype_SoundNotify 7
|
||||
#define i7_evtype_Hyperlink 8
|
||||
#define i7_evtype_VolumeNotify 9
|
||||
typedef struct i7_mg_file_t {
|
||||
i7word_t usage;
|
||||
i7word_t name;
|
||||
i7word_t rock;
|
||||
char leafname[128];
|
||||
FILE *handle;
|
||||
} i7_mg_file_t;
|
||||
|
||||
typedef struct i7_mg_stream_t {
|
||||
FILE *to_file;
|
||||
i7word_t to_file_id;
|
||||
wchar_t *to_memory;
|
||||
size_t memory_used;
|
||||
size_t memory_capacity;
|
||||
i7word_t previous_id;
|
||||
i7word_t write_here_on_closure;
|
||||
size_t write_limit;
|
||||
int active;
|
||||
int encode_UTF8;
|
||||
int char_size;
|
||||
int chars_read;
|
||||
int read_position;
|
||||
int end_position;
|
||||
int owned_by_window_id;
|
||||
int fixed_pitch;
|
||||
char style[128];
|
||||
char composite_style[300];
|
||||
} i7_mg_stream_t;
|
||||
|
||||
typedef struct i7_mg_window_t {
|
||||
i7word_t type;
|
||||
i7word_t stream_id;
|
||||
i7word_t rock;
|
||||
} i7_mg_window_t;
|
||||
|
||||
typedef struct i7_mg_event_t {
|
||||
i7word_t type;
|
||||
i7word_t win_id;
|
||||
i7word_t val1;
|
||||
i7word_t val2;
|
||||
} i7_mg_event_t;
|
||||
|
||||
#define I7_MINIGLK_MAX_STREAMS 128
|
||||
#define I7_MINIGLK_MAX_WINDOWS 128
|
||||
#define I7_MINIGLK_RING_BUFFER_SIZE 32
|
||||
|
||||
typedef struct miniglk_data {
|
||||
/* streams */
|
||||
i7_mg_stream_t memory_streams[I7_MINIGLK_MAX_STREAMS];
|
||||
i7word_t stdout_stream_id, stderr_stream_id;
|
||||
/* files */
|
||||
i7_mg_file_t files[128 + 32];
|
||||
int no_files;
|
||||
/* windows */
|
||||
i7_mg_window_t windows[I7_MINIGLK_MAX_WINDOWS];
|
||||
int no_windows;
|
||||
/* events */
|
||||
i7_mg_event_t events_ring_buffer[I7_MINIGLK_RING_BUFFER_SIZE];
|
||||
int rb_back, rb_front;
|
||||
int no_lr;
|
||||
} miniglk_data;
|
||||
|
||||
void i7_initialise_miniglk_data(i7process_t *proc);
|
||||
i7word_t i7_miniglk_fileref_create_by_name(i7process_t *proc, i7word_t usage, i7word_t name, i7word_t rock);
|
||||
int i7_fseek(i7process_t *proc, int id, int pos, int origin);
|
||||
int i7_ftell(i7process_t *proc, int id);
|
||||
int i7_fopen(i7process_t *proc, int id, int mode);
|
||||
void i7_fclose(i7process_t *proc, int id);
|
||||
i7word_t i7_miniglk_fileref_does_file_exist(i7process_t *proc, i7word_t id);
|
||||
void i7_fputc(i7process_t *proc, int c, int id);
|
||||
int i7_fgetc(i7process_t *proc, int id);
|
||||
i7word_t i7_miniglk_stream_get_current(i7process_t *proc);
|
||||
i7_mg_stream_t i7_new_stream(i7process_t *proc, FILE *F, int win_id);
|
||||
void i7_initialise_streams(i7process_t *proc);
|
||||
i7word_t i7_open_stream(i7process_t *proc, FILE *F, int win_id);
|
||||
i7word_t i7_miniglk_stream_open_memory(i7process_t *proc, i7word_t buffer, i7word_t len, i7word_t fmode, i7word_t rock);
|
||||
i7word_t i7_miniglk_stream_open_memory_uni(i7process_t *proc, i7word_t buffer, i7word_t len, i7word_t fmode, i7word_t rock);
|
||||
i7word_t i7_miniglk_stream_open_file(i7process_t *proc, i7word_t fileref, i7word_t usage, i7word_t rock);
|
||||
void i7_miniglk_stream_set_position(i7process_t *proc, i7word_t id, i7word_t pos, i7word_t seekmode);
|
||||
i7word_t i7_miniglk_stream_get_position(i7process_t *proc, i7word_t id);
|
||||
void i7_miniglk_stream_close(i7process_t *proc, i7word_t id, i7word_t result);
|
||||
i7word_t i7_miniglk_window_open(i7process_t *proc, i7word_t split, i7word_t method, i7word_t size, i7word_t wintype, i7word_t rock);
|
||||
i7word_t i7_stream_of_window(i7process_t *proc, i7word_t id);
|
||||
i7word_t i7_rock_of_window(i7process_t *proc, i7word_t id);
|
||||
void i7_to_receiver(i7process_t *proc, i7word_t rock, wchar_t c);
|
||||
void i7_miniglk_put_char_stream(i7process_t *proc, i7word_t stream_id, i7word_t x);
|
||||
i7word_t i7_miniglk_get_char_stream(i7process_t *proc, i7word_t stream_id);
|
||||
|
||||
i7_mg_event_t *i7_next_event(i7process_t *proc);
|
||||
void i7_make_event(i7process_t *proc, i7_mg_event_t e);
|
||||
i7word_t i7_miniglk_select(i7process_t *proc, i7word_t structure);
|
||||
i7word_t i7_miniglk_request_line_event(i7process_t *proc, i7word_t window_id, i7word_t buffer, i7word_t max_len, i7word_t init_len);
|
||||
i7word_t fn_i7_mgl_IndefArt(i7process_t *proc, i7word_t i7_mgl_local_obj, i7word_t i7_mgl_local_i);
|
||||
i7word_t fn_i7_mgl_DefArt(i7process_t *proc, i7word_t i7_mgl_local_obj, i7word_t i7_mgl_local_i);
|
||||
i7word_t fn_i7_mgl_CIndefArt(i7process_t *proc, i7word_t i7_mgl_local_obj, i7word_t i7_mgl_local_i);
|
||||
i7word_t fn_i7_mgl_CDefArt(i7process_t *proc, i7word_t i7_mgl_local_obj, i7word_t i7_mgl_local_i);
|
||||
i7word_t fn_i7_mgl_PrintShortName(i7process_t *proc, i7word_t i7_mgl_local_obj, i7word_t i7_mgl_local_i);
|
||||
void i7_print_name(i7process_t *proc, i7word_t x);
|
||||
void i7_print_object(i7process_t *proc, i7word_t x);
|
||||
void i7_print_box(i7process_t *proc, i7word_t x);
|
||||
void i7_read(i7process_t *proc, i7word_t x);
|
||||
i7word_t i7_encode_float(i7float_t val);
|
||||
i7float_t i7_decode_float(i7word_t val);
|
||||
|
|
|
@ -304,8 +304,8 @@ in I6 the only legal uses of |style| are |style bold| and so on: there is no
|
|||
legal way for |style| to be followed by an arbitrary value, as it is here. But
|
||||
Inform 6 will not be compiling this: Inform will convert |style V;| directly to
|
||||
the Inter statement |!style V|, which will then be translated to C as the function
|
||||
call |i7_style(proc, V)| -- and that function, in our library of C code supporting
|
||||
Inform, can handle any textual value of |V|.
|
||||
call |i7_styling(proc, 2, V)| -- and that function, in our library of C code
|
||||
supporting Inform, can handle any textual value of |V|.
|
||||
|
||||
With that bit of fancy footwork out of the way, we can make a pair of text
|
||||
substitutions |[style NAME]| and |[end style]|, with the possible range of
|
||||
|
|
|
@ -17,470 +17,59 @@ void CInputOutputModel::begin(code_generation *gen) {
|
|||
void CInputOutputModel::end(code_generation *gen) {
|
||||
}
|
||||
|
||||
@
|
||||
@ By input/output, we mean printing text, receiving textual commands, or reading
|
||||
or writing files. Inter can do this in one of two ways: either
|
||||
|
||||
(a) With one of the following primitives, or
|
||||
(b) With an assembly-language opcode, and in particular |@glk|.
|
||||
|
||||
=
|
||||
int CInputOutputModel::invoke_primitive(code_generation *gen, inter_ti bip, inter_tree_node *P) {
|
||||
text_stream *OUT = CodeGen::current(gen);
|
||||
switch (bip) {
|
||||
case SPACES_BIP: WRITE("for (int j = "); VNODE_1C; WRITE("; j > 0; j--) i7_print_char(proc, 32);"); break;
|
||||
case FONT_BIP: WRITE("i7_font(proc, "); VNODE_1C; WRITE(")"); break;
|
||||
case STYLE_BIP: WRITE("i7_style(proc, "); VNODE_1C; WRITE(")"); break;
|
||||
case PRINT_BIP: WRITE("i7_print_C_string(proc, "); CodeGen::lt_mode(gen, PRINTING_LTM); VNODE_1C; CodeGen::lt_mode(gen, REGULAR_LTM); WRITE(")"); break;
|
||||
case PRINTCHAR_BIP: WRITE("i7_print_char(proc, "); VNODE_1C; WRITE(")"); break;
|
||||
case PRINTNL_BIP: WRITE("i7_print_char(proc, '\\n')"); break;
|
||||
case PRINTOBJ_BIP: WRITE("i7_print_object(proc, "); VNODE_1C; WRITE(")"); break;
|
||||
case PRINTNUMBER_BIP: WRITE("i7_print_decimal(proc, "); VNODE_1C; WRITE(")"); break;
|
||||
case PRINTSTRING_BIP: WRITE("i7_print_C_string(proc, i7_text_to_C_string("); VNODE_1C; WRITE("))"); break;
|
||||
case PRINTDWORD_BIP: WRITE("i7_print_dword(proc, "); VNODE_1C; WRITE(")"); break;
|
||||
case BOX_BIP: WRITE("i7_print_box(proc, "); CodeGen::lt_mode(gen, BOX_LTM); VNODE_1C; CodeGen::lt_mode(gen, REGULAR_LTM); WRITE(")"); break;
|
||||
default: return NOT_APPLICABLE;
|
||||
case SPACES_BIP:
|
||||
WRITE("for (int j = "); VNODE_1C;
|
||||
WRITE("; j > 0; j--) i7_print_char(proc, 32);"); break;
|
||||
case FONT_BIP:
|
||||
WRITE("i7_styling(proc, 1, "); VNODE_1C; WRITE(")"); break;
|
||||
case STYLE_BIP:
|
||||
WRITE("i7_styling(proc, 2, "); VNODE_1C; WRITE(")"); break;
|
||||
case PRINT_BIP:
|
||||
WRITE("i7_print_C_string(proc, ");
|
||||
CodeGen::lt_mode(gen, PRINTING_LTM); VNODE_1C;
|
||||
CodeGen::lt_mode(gen, REGULAR_LTM); WRITE(")"); break;
|
||||
case PRINTCHAR_BIP:
|
||||
WRITE("i7_print_char(proc, "); VNODE_1C; WRITE(")"); break;
|
||||
case PRINTNL_BIP:
|
||||
WRITE("i7_print_char(proc, '\\n')"); break;
|
||||
case PRINTOBJ_BIP:
|
||||
WRITE("i7_print_object(proc, "); VNODE_1C; WRITE(")"); break;
|
||||
case PRINTNUMBER_BIP:
|
||||
WRITE("i7_print_decimal(proc, "); VNODE_1C; WRITE(")"); break;
|
||||
case PRINTSTRING_BIP:
|
||||
WRITE("i7_print_C_string(proc, i7_text_to_C_string("); VNODE_1C;
|
||||
WRITE("))"); break;
|
||||
case PRINTDWORD_BIP:
|
||||
WRITE("i7_print_dword(proc, "); VNODE_1C; WRITE(")"); break;
|
||||
case BOX_BIP:
|
||||
WRITE("i7_print_box(proc, "); CodeGen::lt_mode(gen, BOX_LTM); VNODE_1C;
|
||||
CodeGen::lt_mode(gen, REGULAR_LTM); WRITE(")"); break;
|
||||
default: return NOT_APPLICABLE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@
|
||||
@ See //C Literals// for the implementation of |i7_print_dword|: it funnels
|
||||
through to |i7_print_char|, and so do all of these:
|
||||
|
||||
= (text to inform7_clib.h)
|
||||
#define I7_BODY_TEXT_ID 201
|
||||
#define I7_STATUS_TEXT_ID 202
|
||||
#define I7_BOX_TEXT_ID 203
|
||||
|
||||
void i7_style(i7process_t *proc, i7word_t what);
|
||||
void i7_font(i7process_t *proc, int what);
|
||||
|
||||
#define fileusage_Data (0x00)
|
||||
#define fileusage_SavedGame (0x01)
|
||||
#define fileusage_Transcript (0x02)
|
||||
#define fileusage_InputRecord (0x03)
|
||||
#define fileusage_TypeMask (0x0f)
|
||||
|
||||
#define fileusage_TextMode (0x100)
|
||||
#define fileusage_BinaryMode (0x000)
|
||||
|
||||
#define filemode_Write (0x01)
|
||||
#define filemode_Read (0x02)
|
||||
#define filemode_ReadWrite (0x03)
|
||||
#define filemode_WriteAppend (0x05)
|
||||
|
||||
typedef struct i7_fileref {
|
||||
i7word_t usage;
|
||||
i7word_t name;
|
||||
i7word_t rock;
|
||||
char leafname[128];
|
||||
FILE *handle;
|
||||
} i7_fileref;
|
||||
|
||||
i7word_t i7_do_glk_fileref_create_by_name(i7process_t *proc, i7word_t usage, i7word_t name, i7word_t rock);
|
||||
int i7_fseek(i7process_t *proc, int id, int pos, int origin);
|
||||
int i7_ftell(i7process_t *proc, int id);
|
||||
int i7_fopen(i7process_t *proc, int id, int mode);
|
||||
void i7_fclose(i7process_t *proc, int id);
|
||||
i7word_t i7_do_glk_fileref_does_file_exist(i7process_t *proc, i7word_t id);
|
||||
void i7_fputc(i7process_t *proc, int c, int id);
|
||||
int i7_fgetc(i7process_t *proc, int id);
|
||||
typedef struct i7_stream {
|
||||
FILE *to_file;
|
||||
i7word_t to_file_id;
|
||||
wchar_t *to_memory;
|
||||
size_t memory_used;
|
||||
size_t memory_capacity;
|
||||
i7word_t previous_id;
|
||||
i7word_t write_here_on_closure;
|
||||
size_t write_limit;
|
||||
int active;
|
||||
int encode_UTF8;
|
||||
int char_size;
|
||||
int chars_read;
|
||||
int read_position;
|
||||
int end_position;
|
||||
int owned_by_window_id;
|
||||
int fixed_pitch;
|
||||
char style[128];
|
||||
char composite_style[300];
|
||||
} i7_stream;
|
||||
i7word_t 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)
|
||||
#define I7_MAX_STREAMS 128
|
||||
|
||||
i7_stream i7_memory_streams[I7_MAX_STREAMS];
|
||||
|
||||
i7word_t fn_i7_mgl_TEXT_TY_CharacterLength(i7process_t *proc, i7word_t i7_mgl_local_txt, i7word_t i7_mgl_local_ch, i7word_t i7_mgl_local_i, i7word_t i7_mgl_local_dsize, i7word_t i7_mgl_local_p, i7word_t i7_mgl_local_cp, i7word_t i7_mgl_local_r);
|
||||
i7word_t fn_i7_mgl_BlkValueRead(i7process_t *proc, i7word_t i7_mgl_local_from, i7word_t i7_mgl_local_pos, i7word_t i7_mgl_local_do_not_indirect, i7word_t i7_mgl_local_long_block, i7word_t i7_mgl_local_chunk_size_in_bytes, i7word_t i7_mgl_local_header_size_in_bytes, i7word_t i7_mgl_local_flags, i7word_t i7_mgl_local_entry_size_in_bytes, i7word_t i7_mgl_local_seek_byte_position);
|
||||
void i7_style(i7process_t *proc, i7word_t what_v) {
|
||||
i7_stream *S = &(i7_memory_streams[proc->state.current_output_stream_ID]);
|
||||
S->style[0] = 0;
|
||||
switch (what_v) {
|
||||
case 0: break;
|
||||
case 1: sprintf(S->style, "bold"); break;
|
||||
case 2: sprintf(S->style, "italic"); break;
|
||||
case 3: sprintf(S->style, "reverse"); break;
|
||||
default: {
|
||||
int L = fn_i7_mgl_TEXT_TY_CharacterLength(proc, what_v, 0, 0, 0, 0, 0, 0);
|
||||
if (L > 127) L = 127;
|
||||
for (int i=0; i<L; i++) S->style[i] = fn_i7_mgl_BlkValueRead(proc, what_v, i, 0, 0, 0, 0, 0, 0, 0);
|
||||
S->style[L] = 0;
|
||||
}
|
||||
}
|
||||
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.current_output_stream_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];
|
||||
int i7_no_filerefs = 0;
|
||||
|
||||
i7word_t i7_do_glk_fileref_create_by_name(i7process_t *proc, i7word_t usage, i7word_t name, i7word_t rock) {
|
||||
if (i7_no_filerefs >= 128) {
|
||||
fprintf(stderr, "Out of streams\n"); i7_fatal_exit(proc);
|
||||
}
|
||||
int id = i7_no_filerefs++;
|
||||
filerefs[id].usage = usage;
|
||||
filerefs[id].name = name;
|
||||
filerefs[id].rock = rock;
|
||||
filerefs[id].handle = NULL;
|
||||
for (int i=0; i<128; i++) {
|
||||
i7byte_t c = i7_read_byte(proc, name+1+i);
|
||||
filerefs[id].leafname[i] = c;
|
||||
if (c == 0) break;
|
||||
}
|
||||
filerefs[id].leafname[127] = 0;
|
||||
sprintf(filerefs[id].leafname + strlen(filerefs[id].leafname), ".glkdata");
|
||||
return id;
|
||||
}
|
||||
|
||||
int i7_fseek(i7process_t *proc, int id, int pos, int origin) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (filerefs[id].handle == NULL) { fprintf(stderr, "File not open\n"); i7_fatal_exit(proc); }
|
||||
return fseek(filerefs[id].handle, pos, origin);
|
||||
}
|
||||
|
||||
int i7_ftell(i7process_t *proc, int id) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (filerefs[id].handle == NULL) { fprintf(stderr, "File not open\n"); i7_fatal_exit(proc); }
|
||||
int t = ftell(filerefs[id].handle);
|
||||
return t;
|
||||
}
|
||||
|
||||
int i7_fopen(i7process_t *proc, int id, int mode) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (filerefs[id].handle) { fprintf(stderr, "File already open\n"); i7_fatal_exit(proc); }
|
||||
char *c_mode = "r";
|
||||
switch (mode) {
|
||||
case filemode_Write: c_mode = "w"; break;
|
||||
case filemode_Read: c_mode = "r"; break;
|
||||
case filemode_ReadWrite: c_mode = "r+"; break;
|
||||
case filemode_WriteAppend: c_mode = "r+"; break;
|
||||
}
|
||||
FILE *h = fopen(filerefs[id].leafname, c_mode);
|
||||
if (h == NULL) return 0;
|
||||
filerefs[id].handle = h;
|
||||
if (mode == filemode_WriteAppend) i7_fseek(proc, id, 0, SEEK_END);
|
||||
return 1;
|
||||
}
|
||||
|
||||
void i7_fclose(i7process_t *proc, int id) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (filerefs[id].handle == NULL) { fprintf(stderr, "File not open\n"); i7_fatal_exit(proc); }
|
||||
fclose(filerefs[id].handle);
|
||||
filerefs[id].handle = NULL;
|
||||
}
|
||||
|
||||
|
||||
i7word_t i7_do_glk_fileref_does_file_exist(i7process_t *proc, i7word_t id) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (filerefs[id].handle) return 1;
|
||||
if (i7_fopen(proc, id, filemode_Read)) {
|
||||
i7_fclose(proc, id); return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void i7_fputc(i7process_t *proc, int c, int id) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (filerefs[id].handle == NULL) { fprintf(stderr, "File not open\n"); i7_fatal_exit(proc); }
|
||||
fputc(c, filerefs[id].handle);
|
||||
}
|
||||
|
||||
int i7_fgetc(i7process_t *proc, int id) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (filerefs[id].handle == NULL) { fprintf(stderr, "File not open\n"); i7_fatal_exit(proc); }
|
||||
int c = fgetc(filerefs[id].handle);
|
||||
return c;
|
||||
}
|
||||
|
||||
i7word_t i7_stdout_id = 0, i7_stderr_id = 1;
|
||||
|
||||
i7word_t i7_do_glk_stream_get_current(i7process_t *proc) {
|
||||
return proc->state.current_output_stream_ID;
|
||||
}
|
||||
|
||||
void i7_do_glk_stream_set_current(i7process_t *proc, i7word_t id) {
|
||||
if ((id < 0) || (id >= I7_MAX_STREAMS)) { fprintf(stderr, "Stream ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
proc->state.current_output_stream_ID = id;
|
||||
}
|
||||
|
||||
i7_stream i7_new_stream(i7process_t *proc, FILE *F, int win_id) {
|
||||
i7_stream S;
|
||||
S.to_file = F;
|
||||
S.to_file_id = -1;
|
||||
S.to_memory = NULL;
|
||||
S.memory_used = 0;
|
||||
S.memory_capacity = 0;
|
||||
S.write_here_on_closure = 0;
|
||||
S.write_limit = 0;
|
||||
S.previous_id = 0;
|
||||
S.active = 0;
|
||||
S.encode_UTF8 = 0;
|
||||
S.char_size = 4;
|
||||
S.chars_read = 0;
|
||||
S.read_position = 0;
|
||||
S.end_position = 0;
|
||||
S.owned_by_window_id = win_id;
|
||||
S.style[0] = 0;
|
||||
S.fixed_pitch = 0;
|
||||
S.composite_style[0] = 0;
|
||||
return S;
|
||||
}
|
||||
=
|
||||
|
||||
@
|
||||
|
||||
= (text to inform7_clib.h)
|
||||
void i7_initialise_streams(i7process_t *proc);
|
||||
i7word_t i7_open_stream(i7process_t *proc, FILE *F, int win_id);
|
||||
i7word_t i7_do_glk_stream_open_memory(i7process_t *proc, i7word_t buffer, i7word_t len, i7word_t fmode, i7word_t rock);
|
||||
i7word_t i7_do_glk_stream_open_memory_uni(i7process_t *proc, i7word_t buffer, i7word_t len, i7word_t fmode, i7word_t rock);
|
||||
i7word_t i7_do_glk_stream_open_file(i7process_t *proc, i7word_t fileref, i7word_t usage, i7word_t rock);
|
||||
#define seekmode_Start (0)
|
||||
#define seekmode_Current (1)
|
||||
#define seekmode_End (2)
|
||||
void i7_do_glk_stream_set_position(i7process_t *proc, i7word_t id, i7word_t pos, i7word_t seekmode);
|
||||
i7word_t i7_do_glk_stream_get_position(i7process_t *proc, i7word_t id);
|
||||
void i7_do_glk_stream_close(i7process_t *proc, i7word_t id, i7word_t result);
|
||||
typedef struct i7_winref {
|
||||
i7word_t type;
|
||||
i7word_t stream_id;
|
||||
i7word_t rock;
|
||||
} i7_winref;
|
||||
i7word_t i7_do_glk_window_open(i7process_t *proc, i7word_t split, i7word_t method, i7word_t size, i7word_t wintype, i7word_t rock);
|
||||
i7word_t i7_stream_of_window(i7process_t *proc, i7word_t id);
|
||||
i7word_t i7_rock_of_window(i7process_t *proc, i7word_t id);
|
||||
void i7_to_receiver(i7process_t *proc, i7word_t rock, wchar_t c);
|
||||
void i7_do_glk_put_char_stream(i7process_t *proc, i7word_t stream_id, i7word_t x);
|
||||
i7word_t i7_do_glk_get_char_stream(i7process_t *proc, i7word_t stream_id);
|
||||
void i7_print_char(i7process_t *proc, i7word_t x);
|
||||
void i7_print_C_string(i7process_t *proc, char *c_string);
|
||||
void i7_print_decimal(i7process_t *proc, i7word_t x);
|
||||
|
||||
void i7_print_object(i7process_t *proc, i7word_t x);
|
||||
void i7_print_box(i7process_t *proc, i7word_t x);
|
||||
=
|
||||
|
||||
= (text to inform7_clib.c)
|
||||
void i7_initialise_streams(i7process_t *proc) {
|
||||
for (int i=0; i<I7_MAX_STREAMS; i++) i7_memory_streams[i] = i7_new_stream(proc, NULL, 0);
|
||||
i7_memory_streams[i7_stdout_id] = i7_new_stream(proc, stdout, 0);
|
||||
i7_memory_streams[i7_stdout_id].active = 1;
|
||||
i7_memory_streams[i7_stdout_id].encode_UTF8 = 1;
|
||||
i7_memory_streams[i7_stderr_id] = i7_new_stream(proc, stderr, 0);
|
||||
i7_memory_streams[i7_stderr_id].active = 1;
|
||||
i7_memory_streams[i7_stderr_id].encode_UTF8 = 1;
|
||||
i7_do_glk_stream_set_current(proc, i7_stdout_id);
|
||||
}
|
||||
|
||||
i7word_t i7_open_stream(i7process_t *proc, FILE *F, int win_id) {
|
||||
for (int i=0; i<I7_MAX_STREAMS; i++)
|
||||
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 = proc->state.current_output_stream_ID;
|
||||
return i;
|
||||
}
|
||||
fprintf(stderr, "Out of streams\n"); i7_fatal_exit(proc);
|
||||
return 0;
|
||||
}
|
||||
|
||||
i7word_t i7_do_glk_stream_open_memory(i7process_t *proc, i7word_t buffer, i7word_t len, i7word_t fmode, i7word_t rock) {
|
||||
if (fmode != 1) { fprintf(stderr, "Only file mode 1 supported, not %d\n", fmode); i7_fatal_exit(proc); }
|
||||
i7word_t id = i7_open_stream(proc, NULL, 0);
|
||||
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;
|
||||
proc->state.current_output_stream_ID = id;
|
||||
return id;
|
||||
}
|
||||
|
||||
i7word_t i7_do_glk_stream_open_memory_uni(i7process_t *proc, i7word_t buffer, i7word_t len, i7word_t fmode, i7word_t rock) {
|
||||
if (fmode != 1) { fprintf(stderr, "Only file mode 1 supported, not %d\n", fmode); i7_fatal_exit(proc); }
|
||||
i7word_t id = i7_open_stream(proc, NULL, 0);
|
||||
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;
|
||||
proc->state.current_output_stream_ID = id;
|
||||
return id;
|
||||
}
|
||||
|
||||
i7word_t i7_do_glk_stream_open_file(i7process_t *proc, i7word_t fileref, i7word_t usage, i7word_t rock) {
|
||||
i7word_t id = i7_open_stream(proc, NULL, 0);
|
||||
i7_memory_streams[id].to_file_id = fileref;
|
||||
if (i7_fopen(proc, fileref, usage) == 0) return 0;
|
||||
return id;
|
||||
}
|
||||
|
||||
void i7_do_glk_stream_set_position(i7process_t *proc, i7word_t id, i7word_t pos, i7word_t seekmode) {
|
||||
if ((id < 0) || (id >= I7_MAX_STREAMS)) { fprintf(stderr, "Stream ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
i7_stream *S = &(i7_memory_streams[id]);
|
||||
if (S->to_file_id >= 0) {
|
||||
int origin;
|
||||
switch (seekmode) {
|
||||
case seekmode_Start: origin = SEEK_SET; break;
|
||||
case seekmode_Current: origin = SEEK_CUR; break;
|
||||
case seekmode_End: origin = SEEK_END; break;
|
||||
default: fprintf(stderr, "Unknown seekmode\n"); i7_fatal_exit(proc);
|
||||
}
|
||||
i7_fseek(proc, S->to_file_id, pos, origin);
|
||||
} else {
|
||||
fprintf(stderr, "glk_stream_set_position supported only for file streams\n"); i7_fatal_exit(proc);
|
||||
}
|
||||
}
|
||||
|
||||
i7word_t i7_do_glk_stream_get_position(i7process_t *proc, i7word_t id) {
|
||||
if ((id < 0) || (id >= I7_MAX_STREAMS)) { fprintf(stderr, "Stream ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
i7_stream *S = &(i7_memory_streams[id]);
|
||||
if (S->to_file_id >= 0) {
|
||||
return (i7word_t) i7_ftell(proc, S->to_file_id);
|
||||
}
|
||||
return (i7word_t) S->memory_used;
|
||||
}
|
||||
|
||||
void i7_do_glk_stream_close(i7process_t *proc, i7word_t id, i7word_t result) {
|
||||
if ((id < 0) || (id >= I7_MAX_STREAMS)) { fprintf(stderr, "Stream ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
if (id == 0) { fprintf(stderr, "Cannot close stdout\n"); i7_fatal_exit(proc); }
|
||||
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 (proc->state.current_output_stream_ID == id) proc->state.current_output_stream_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++)
|
||||
if (i < S->memory_used)
|
||||
i7_write_word(proc, S->write_here_on_closure, i, S->to_memory[i]);
|
||||
else
|
||||
i7_write_word(proc, S->write_here_on_closure, i, 0);
|
||||
} else {
|
||||
for (size_t i = 0; i < S->write_limit; i++)
|
||||
if (i < S->memory_used)
|
||||
i7_write_byte(proc, S->write_here_on_closure + i, S->to_memory[i]);
|
||||
else
|
||||
i7_write_byte(proc, S->write_here_on_closure + i, 0);
|
||||
}
|
||||
}
|
||||
if (result == -1) {
|
||||
i7_push(proc, S->chars_read);
|
||||
i7_push(proc, S->memory_used);
|
||||
} else if (result != 0) {
|
||||
i7_write_word(proc, result, 0, S->chars_read);
|
||||
i7_write_word(proc, result, 1, S->memory_used);
|
||||
}
|
||||
if (S->to_file_id >= 0) i7_fclose(proc, S->to_file_id);
|
||||
S->active = 0;
|
||||
S->memory_used = 0;
|
||||
}
|
||||
|
||||
i7_winref winrefs[128];
|
||||
int i7_no_winrefs = 1;
|
||||
|
||||
i7word_t i7_do_glk_window_open(i7process_t *proc, i7word_t split, i7word_t method, i7word_t size, i7word_t wintype, i7word_t rock) {
|
||||
if (i7_no_winrefs >= 128) {
|
||||
fprintf(stderr, "Out of windows\n"); i7_fatal_exit(proc);
|
||||
}
|
||||
int id = i7_no_winrefs++;
|
||||
winrefs[id].type = wintype;
|
||||
winrefs[id].stream_id = i7_open_stream(proc, stdout, id);
|
||||
winrefs[id].rock = rock;
|
||||
return id;
|
||||
}
|
||||
|
||||
i7word_t i7_stream_of_window(i7process_t *proc, i7word_t id) {
|
||||
if ((id < 0) || (id >= i7_no_winrefs)) { fprintf(stderr, "Window ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
return winrefs[id].stream_id;
|
||||
}
|
||||
|
||||
i7word_t i7_rock_of_window(i7process_t *proc, i7word_t id) {
|
||||
if ((id < 0) || (id >= i7_no_winrefs)) { fprintf(stderr, "Window ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
return winrefs[id].rock;
|
||||
}
|
||||
|
||||
void i7_to_receiver(i7process_t *proc, i7word_t rock, wchar_t c) {
|
||||
i7_stream *S = &(i7_memory_streams[proc->state.current_output_stream_ID]);
|
||||
if (proc->receiver == NULL) fputc(c, stdout);
|
||||
(proc->receiver)(rock, c, S->composite_style);
|
||||
}
|
||||
|
||||
void i7_do_glk_put_char_stream(i7process_t *proc, i7word_t stream_id, i7word_t x) {
|
||||
i7_stream *S = &(i7_memory_streams[stream_id]);
|
||||
if (S->to_file) {
|
||||
int win_id = S->owned_by_window_id;
|
||||
int rock = -1;
|
||||
if (win_id >= 1) rock = i7_rock_of_window(proc, win_id);
|
||||
unsigned int c = (unsigned int) x;
|
||||
if (proc->use_UTF8) {
|
||||
if (c >= 0x800) {
|
||||
i7_to_receiver(proc, rock, 0xE0 + (c >> 12));
|
||||
i7_to_receiver(proc, rock, 0x80 + ((c >> 6) & 0x3f));
|
||||
i7_to_receiver(proc, rock, 0x80 + (c & 0x3f));
|
||||
} else if (c >= 0x80) {
|
||||
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 if (S->to_file_id >= 0) {
|
||||
i7_fputc(proc, (int) x, S->to_file_id);
|
||||
S->end_position++;
|
||||
} else {
|
||||
if (S->memory_used >= S->memory_capacity) {
|
||||
size_t needed = 4*S->memory_capacity;
|
||||
if (needed == 0) needed = 1024;
|
||||
wchar_t *new_data = (wchar_t *) calloc(needed, sizeof(wchar_t));
|
||||
if (new_data == NULL) { fprintf(stderr, "Out of memory\n"); i7_fatal_exit(proc); }
|
||||
for (size_t i=0; i<S->memory_used; i++) new_data[i] = S->to_memory[i];
|
||||
free(S->to_memory);
|
||||
S->to_memory = new_data;
|
||||
}
|
||||
S->to_memory[S->memory_used++] = (wchar_t) x;
|
||||
}
|
||||
}
|
||||
|
||||
i7word_t i7_do_glk_get_char_stream(i7process_t *proc, i7word_t stream_id) {
|
||||
i7_stream *S = &(i7_memory_streams[stream_id]);
|
||||
if (S->to_file_id >= 0) {
|
||||
S->chars_read++;
|
||||
return i7_fgetc(proc, S->to_file_id);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void i7_print_char(i7process_t *proc, i7word_t x) {
|
||||
if (x == 13) x = 10;
|
||||
i7_do_glk_put_char_stream(proc, proc->state.current_output_stream_ID, x);
|
||||
}
|
||||
|
||||
void i7_print_C_string(i7process_t *proc, char *c_string) {
|
||||
if (c_string)
|
||||
for (int i=0; c_string[i]; i++)
|
||||
|
@ -492,30 +81,68 @@ void i7_print_decimal(i7process_t *proc, i7word_t x) {
|
|||
sprintf(room, "%d", (int) x);
|
||||
i7_print_C_string(proc, room);
|
||||
}
|
||||
|
||||
void i7_print_object(i7process_t *proc, i7word_t x) {
|
||||
i7_print_decimal(proc, x);
|
||||
}
|
||||
|
||||
void i7_print_box(i7process_t *proc, i7word_t x) {
|
||||
printf("Unimplemented: i7_print_box.\n");
|
||||
i7_fatal_exit(proc);
|
||||
}
|
||||
=
|
||||
|
||||
= (text to inform7_clib.h)
|
||||
#define evtype_None (0)
|
||||
#define evtype_Timer (1)
|
||||
#define evtype_CharInput (2)
|
||||
#define evtype_LineInput (3)
|
||||
#define evtype_MouseInput (4)
|
||||
#define evtype_Arrange (5)
|
||||
#define evtype_Redraw (6)
|
||||
#define evtype_SoundNotify (7)
|
||||
#define evtype_Hyperlink (8)
|
||||
#define evtype_VolumeNotify (9)
|
||||
@ Which in turn uses the |@glk| opcode:
|
||||
|
||||
typedef struct i7_glk_event {
|
||||
i7word_t type;
|
||||
i7word_t win_id;
|
||||
i7word_t val1;
|
||||
i7word_t val2;
|
||||
} i7_glk_event;
|
||||
i7_glk_event *i7_next_event(i7process_t *proc);
|
||||
void i7_make_event(i7process_t *proc, i7_glk_event e);
|
||||
i7word_t i7_do_glk_select(i7process_t *proc, i7word_t structure);
|
||||
i7word_t i7_do_glk_request_line_event(i7process_t *proc, i7word_t window_id, i7word_t buffer, i7word_t max_len, i7word_t init_len);
|
||||
= (text to inform7_clib.h)
|
||||
void i7_print_char(i7process_t *proc, i7word_t x);
|
||||
=
|
||||
|
||||
= (text to inform7_clib.c)
|
||||
void i7_print_char(i7process_t *proc, i7word_t x) {
|
||||
if (x == 13) x = 10;
|
||||
i7_push(proc, x);
|
||||
i7word_t current = 0;
|
||||
i7_opcode_glk(proc, i7_glk_stream_get_current, 0, ¤t);
|
||||
i7_push(proc, current);
|
||||
i7_opcode_glk(proc, i7_glk_put_char_stream, 2, NULL);
|
||||
}
|
||||
=
|
||||
|
||||
@ At this point, then, all of our I/O needs will be handled if we can just
|
||||
define two functions: |i7_styling|, for setting the font style, and |i7_opcode_glk|.
|
||||
So we're nearly done, right? Right?
|
||||
|
||||
But in fact we route both of these functions through hooks which the user can
|
||||
provide, so that the user can change the entire I/O model (if she is willing to
|
||||
code up an alternative):
|
||||
|
||||
= (text to inform7_clib.h)
|
||||
void i7_styling(i7process_t *proc, i7word_t which, i7word_t what);
|
||||
void i7_default_stylist(i7process_t *proc, i7word_t which, i7word_t what);
|
||||
void i7_opcode_glk(i7process_t *proc, i7word_t glk_api_selector, i7word_t varargc,
|
||||
i7word_t *z);
|
||||
void i7_default_glk(i7process_t *proc, i7word_t glk_api_selector, i7word_t varargc,
|
||||
i7word_t *z);
|
||||
=
|
||||
|
||||
= (text to inform7_clib.c)
|
||||
void i7_styling(i7process_t *proc, i7word_t which, i7word_t what) {
|
||||
(proc->stylist)(proc, which, what);
|
||||
}
|
||||
void i7_opcode_glk(i7process_t *proc, i7word_t glk_api_selector, i7word_t varargc,
|
||||
i7word_t *z) {
|
||||
(proc->glk_implementation)(proc, glk_api_selector, varargc, z);
|
||||
}
|
||||
=
|
||||
|
||||
@ What makes this more burdensome is that |@glk| is not so much a single opcode
|
||||
as an entire instruction set: it is an compendium of over 120 disparate operations.
|
||||
Indeed, the |glk_api_selector| argument to |i7_opcode_glk| chooses which one is
|
||||
being used. For convenience, we define a set of names for them all -- which does
|
||||
not imply any commitment to implement them all.
|
||||
|
||||
= (text to inform7_clib.h)
|
||||
#define i7_glk_exit 0x0001
|
||||
#define i7_glk_set_interrupt_handler 0x0002
|
||||
#define i7_glk_tick 0x0003
|
||||
|
@ -639,181 +266,58 @@ i7word_t i7_do_glk_request_line_event(i7process_t *proc, i7word_t window_id, i7w
|
|||
#define i7_glk_date_to_time_local 0x016D
|
||||
#define i7_glk_date_to_simple_time_utc 0x016E
|
||||
#define i7_glk_date_to_simple_time_local 0x016F
|
||||
void i7_opcode_glk(i7process_t *proc, i7word_t glk_api_selector, i7word_t varargc, i7word_t *z);
|
||||
i7word_t fn_i7_mgl_IndefArt(i7process_t *proc, i7word_t i7_mgl_local_obj, i7word_t i7_mgl_local_i);
|
||||
i7word_t fn_i7_mgl_DefArt(i7process_t *proc, i7word_t i7_mgl_local_obj, i7word_t i7_mgl_local_i);
|
||||
i7word_t fn_i7_mgl_CIndefArt(i7process_t *proc, i7word_t i7_mgl_local_obj, i7word_t i7_mgl_local_i);
|
||||
i7word_t fn_i7_mgl_CDefArt(i7process_t *proc, i7word_t i7_mgl_local_obj, i7word_t i7_mgl_local_i);
|
||||
i7word_t fn_i7_mgl_PrintShortName(i7process_t *proc, i7word_t i7_mgl_local_obj, i7word_t i7_mgl_local_i);
|
||||
void i7_print_name(i7process_t *proc, i7word_t x);
|
||||
void i7_print_object(i7process_t *proc, i7word_t x);
|
||||
void i7_print_box(i7process_t *proc, i7word_t x);
|
||||
void i7_read(i7process_t *proc, i7word_t x);
|
||||
=
|
||||
|
||||
= (text to inform7_clib.c)
|
||||
i7_glk_event i7_events_ring_buffer[32];
|
||||
int i7_rb_back = 0, i7_rb_front = 0;
|
||||
A few other constants will also be useful. These are the window IDs for the
|
||||
three Glk windows used by the standard Inform 7 kits: |I7_BODY_TEXT_ID| is
|
||||
where text is regularly printed; |I7_STATUS_TEXT_ID| is for the "status line"
|
||||
at the top of a traditional interactive fiction display, but can simply be
|
||||
ignored for non-IF purposes; and |I7_BOX_TEXT_ID| is where box quotations
|
||||
would be displayed over the top of text, though C projects probably should
|
||||
not use this, and the default Glk implementation here ignores it.
|
||||
|
||||
i7_glk_event *i7_next_event(i7process_t *proc) {
|
||||
if (i7_rb_front == i7_rb_back) return NULL;
|
||||
i7_glk_event *e = &(i7_events_ring_buffer[i7_rb_back]);
|
||||
i7_rb_back++; if (i7_rb_back == 32) i7_rb_back = 0;
|
||||
return e;
|
||||
}
|
||||
|
||||
void i7_make_event(i7process_t *proc, i7_glk_event e) {
|
||||
i7_events_ring_buffer[i7_rb_front] = e;
|
||||
i7_rb_front++; if (i7_rb_front == 32) i7_rb_front = 0;
|
||||
}
|
||||
|
||||
i7word_t i7_do_glk_select(i7process_t *proc, i7word_t structure) {
|
||||
i7_glk_event *e = i7_next_event(proc);
|
||||
if (e == NULL) {
|
||||
fprintf(stderr, "No events available to select\n"); i7_fatal_exit(proc);
|
||||
}
|
||||
if (structure == -1) {
|
||||
i7_push(proc, e->type);
|
||||
i7_push(proc, e->win_id);
|
||||
i7_push(proc, e->val1);
|
||||
i7_push(proc, e->val2);
|
||||
} else {
|
||||
if (structure) {
|
||||
i7_write_word(proc, structure, 0, e->type);
|
||||
i7_write_word(proc, structure, 1, e->win_id);
|
||||
i7_write_word(proc, structure, 2, e->val1);
|
||||
i7_write_word(proc, structure, 3, e->val2);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int i7_no_lr = 0;
|
||||
i7word_t i7_do_glk_request_line_event(i7process_t *proc, i7word_t window_id, i7word_t buffer, i7word_t max_len, i7word_t init_len) {
|
||||
i7_glk_event e;
|
||||
e.type = evtype_LineInput;
|
||||
e.win_id = window_id;
|
||||
e.val1 = 1;
|
||||
e.val2 = 0;
|
||||
wchar_t c; int pos = init_len;
|
||||
if (proc->sender == NULL) i7_benign_exit(proc);
|
||||
char *s = (proc->sender)(proc->send_count++);
|
||||
int i = 0;
|
||||
while (1) {
|
||||
c = s[i++];
|
||||
if ((c == EOF) || (c == 0) || (c == '\n') || (c == '\r')) break;
|
||||
if (pos < max_len) i7_write_byte(proc, buffer + pos++, c);
|
||||
}
|
||||
if (pos < max_len) i7_write_byte(proc, buffer + pos, 0); else i7_write_byte(proc, buffer + max_len-1, 0);
|
||||
e.val1 = pos;
|
||||
i7_make_event(proc, e);
|
||||
if (i7_no_lr++ == 1000) {
|
||||
fprintf(stdout, "[Too many line events: terminating to prevent hang]\n"); exit(0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void i7_opcode_glk(i7process_t *proc, i7word_t glk_api_selector, i7word_t varargc, i7word_t *z) {
|
||||
i7_debug_stack("i7_opcode_glk");
|
||||
i7word_t args[5] = { 0, 0, 0, 0, 0 }, argc = 0;
|
||||
while (varargc > 0) {
|
||||
i7word_t v = i7_pull(proc);
|
||||
if (argc < 5) args[argc++] = v;
|
||||
varargc--;
|
||||
}
|
||||
|
||||
int rv = 0;
|
||||
switch (glk_api_selector) {
|
||||
case i7_glk_gestalt:
|
||||
rv = 1; break;
|
||||
case i7_glk_window_iterate:
|
||||
rv = 0; break;
|
||||
case i7_glk_window_open:
|
||||
rv = i7_do_glk_window_open(proc, args[0], args[1], args[2], args[3], args[4]); break;
|
||||
case i7_glk_set_window:
|
||||
i7_do_glk_stream_set_current(proc, i7_stream_of_window(proc, args[0])); break;
|
||||
case i7_glk_stream_iterate:
|
||||
rv = 0; break;
|
||||
case i7_glk_fileref_iterate:
|
||||
rv = 0; break;
|
||||
case i7_glk_stylehint_set:
|
||||
rv = 0; break;
|
||||
case i7_glk_schannel_iterate:
|
||||
rv = 0; break;
|
||||
case i7_glk_schannel_create:
|
||||
rv = 0; break;
|
||||
case i7_glk_set_style:
|
||||
rv = 0; break;
|
||||
case i7_glk_window_move_cursor:
|
||||
rv = 0; break;
|
||||
case i7_glk_stream_get_position:
|
||||
rv = i7_do_glk_stream_get_position(proc, args[0]); break;
|
||||
case i7_glk_window_get_size:
|
||||
if (args[0]) i7_write_word(proc, args[0], 0, 80);
|
||||
if (args[1]) i7_write_word(proc, args[1], 0, 8);
|
||||
rv = 0; break;
|
||||
case i7_glk_request_line_event:
|
||||
rv = i7_do_glk_request_line_event(proc, args[0], args[1], args[2], args[3]); break;
|
||||
case i7_glk_select:
|
||||
rv = i7_do_glk_select(proc, args[0]); break;
|
||||
case i7_glk_stream_close:
|
||||
i7_do_glk_stream_close(proc, args[0], args[1]); break;
|
||||
case i7_glk_stream_set_current:
|
||||
i7_do_glk_stream_set_current(proc, args[0]); break;
|
||||
case i7_glk_stream_get_current:
|
||||
rv = i7_do_glk_stream_get_current(proc); break;
|
||||
case i7_glk_stream_open_memory:
|
||||
rv = i7_do_glk_stream_open_memory(proc, args[0], args[1], args[2], args[3]); break;
|
||||
case i7_glk_stream_open_memory_uni:
|
||||
rv = i7_do_glk_stream_open_memory_uni(proc, args[0], args[1], args[2], args[3]); break;
|
||||
case i7_glk_fileref_create_by_name:
|
||||
rv = i7_do_glk_fileref_create_by_name(proc, args[0], args[1], args[2]); break;
|
||||
case i7_glk_fileref_does_file_exist:
|
||||
rv = i7_do_glk_fileref_does_file_exist(proc, args[0]); break;
|
||||
case i7_glk_stream_open_file:
|
||||
rv = i7_do_glk_stream_open_file(proc, args[0], args[1], args[2]); break;
|
||||
case i7_glk_fileref_destroy:
|
||||
rv = 0; break;
|
||||
case i7_glk_char_to_lower:
|
||||
rv = args[0];
|
||||
if (((rv >= 0x41) && (rv <= 0x5A)) ||
|
||||
((rv >= 0xC0) && (rv <= 0xD6)) ||
|
||||
((rv >= 0xD8) && (rv <= 0xDE))) rv += 32;
|
||||
break;
|
||||
case i7_glk_char_to_upper:
|
||||
rv = args[0];
|
||||
if (((rv >= 0x61) && (rv <= 0x7A)) ||
|
||||
((rv >= 0xE0) && (rv <= 0xF6)) ||
|
||||
((rv >= 0xF8) && (rv <= 0xFE))) rv -= 32;
|
||||
break;
|
||||
case i7_glk_stream_set_position:
|
||||
i7_do_glk_stream_set_position(proc, args[0], args[1], args[2]); break;
|
||||
case i7_glk_put_char_stream:
|
||||
i7_do_glk_put_char_stream(proc, args[0], args[1]); break;
|
||||
case i7_glk_get_char_stream:
|
||||
rv = i7_do_glk_get_char_stream(proc, args[0]); break;
|
||||
default:
|
||||
printf("Unimplemented: i7_opcode_glk %d.\n", glk_api_selector); i7_fatal_exit(proc);
|
||||
break;
|
||||
}
|
||||
if (z) *z = rv;
|
||||
}
|
||||
|
||||
void i7_print_name(i7process_t *proc, i7word_t x) {
|
||||
fn_i7_mgl_PrintShortName(proc, x, 0);
|
||||
}
|
||||
|
||||
void i7_print_object(i7process_t *proc, i7word_t x) {
|
||||
i7_print_decimal(proc, x);
|
||||
}
|
||||
|
||||
void i7_print_box(i7process_t *proc, i7word_t x) {
|
||||
printf("Unimplemented: i7_print_box.\n");
|
||||
i7_fatal_exit(proc);
|
||||
}
|
||||
|
||||
i7word_t fn_i7_mgl_pending_boxed_quotation(i7process_t *proc) {
|
||||
return 0;
|
||||
}
|
||||
= (text to inform7_clib.h)
|
||||
#define I7_BODY_TEXT_ID 201
|
||||
#define I7_STATUS_TEXT_ID 202
|
||||
#define I7_BOX_TEXT_ID 203
|
||||
=
|
||||
|
||||
These are needed for different forms of file I/O:
|
||||
|
||||
= (text to inform7_clib.h)
|
||||
#define i7_fileusage_Data 0x00
|
||||
#define i7_fileusage_SavedGame 0x01
|
||||
#define i7_fileusage_Transcript 0x02
|
||||
#define i7_fileusage_InputRecord 0x03
|
||||
#define i7_fileusage_TypeMask 0x0f
|
||||
#define i7_fileusage_TextMode 0x100
|
||||
#define i7_fileusage_BinaryMode 0x000
|
||||
|
||||
#define i7_filemode_Write 0x01
|
||||
#define i7_filemode_Read 0x02
|
||||
#define i7_filemode_ReadWrite 0x03
|
||||
#define i7_filemode_WriteAppend 0x05
|
||||
=
|
||||
|
||||
And these are modes for seeking a position in a file:
|
||||
|
||||
= (text to inform7_clib.h)
|
||||
#define seekmode_Start (0)
|
||||
#define seekmode_Current (1)
|
||||
#define seekmode_End (2)
|
||||
=
|
||||
|
||||
And these are "event types":
|
||||
|
||||
= (text to inform7_clib.h)
|
||||
#define i7_evtype_None 0
|
||||
#define i7_evtype_Timer 1
|
||||
#define i7_evtype_CharInput 2
|
||||
#define i7_evtype_LineInput 3
|
||||
#define i7_evtype_MouseInput 4
|
||||
#define i7_evtype_Arrange 5
|
||||
#define i7_evtype_Redraw 6
|
||||
#define i7_evtype_SoundNotify 7
|
||||
#define i7_evtype_Hyperlink 8
|
||||
#define i7_evtype_VolumeNotify 9
|
||||
=
|
||||
|
|
650
inter/final-module/Chapter 5/C Miniglk.w
Normal file
650
inter/final-module/Chapter 5/C Miniglk.w
Normal file
|
@ -0,0 +1,650 @@
|
|||
[CMiniglk::] C Miniglk.
|
||||
|
||||
Just enough of the Glk input/output interface to allow simple console text in
|
||||
and out, and no more.
|
||||
|
||||
@h Glk - an apology.
|
||||
The code below is in no way a proper implementation of the Glk input/output
|
||||
system, which was developed as an interactive fiction standard by Andrew Plotkin,
|
||||
and which has served us well and will continue to do so. It is not even a full
|
||||
implementation of basic console I/O via Glk, for which see the |cheapglk|
|
||||
C library.
|
||||
|
||||
Instead, our aim is to do the absolute minimum possible in simple self-contained
|
||||
C code, and to impose as few restrictions as possible beyond that. The flip side
|
||||
of Glk's gilt-edged engineering quality is that it can be a gilded cage: for some
|
||||
imaginable uses of Inform 7-via-C, say based on Unity or in an iOS app, strict
|
||||
use of Glk would be constraining.
|
||||
|
||||
In an attempt to have the best of both worlds, the code below is only the
|
||||
default Glk implementation for an Inform 7-via-C project, and the user can
|
||||
duck out of it by providing an implementation of her own. (Indeed, this could
|
||||
even be |cheapglk|, as mentioned above.)
|
||||
|
||||
This section of code therefore defines just two functions, |i7_default_stylist|
|
||||
and |i7_default_glk|, plus their supporting code -- which turns out to be quite
|
||||
a lot, but there are only those two points of entry.
|
||||
|
||||
@h Miniglk.
|
||||
Each process needs to keep track of its own files, streams, windows and events,
|
||||
which are wrapped up in a |miniglk_data| structure as follows:
|
||||
|
||||
= (text to inform7_clib.h)
|
||||
typedef struct i7_mg_file_t {
|
||||
i7word_t usage;
|
||||
i7word_t name;
|
||||
i7word_t rock;
|
||||
char leafname[128];
|
||||
FILE *handle;
|
||||
} i7_mg_file_t;
|
||||
|
||||
typedef struct i7_mg_stream_t {
|
||||
FILE *to_file;
|
||||
i7word_t to_file_id;
|
||||
wchar_t *to_memory;
|
||||
size_t memory_used;
|
||||
size_t memory_capacity;
|
||||
i7word_t previous_id;
|
||||
i7word_t write_here_on_closure;
|
||||
size_t write_limit;
|
||||
int active;
|
||||
int encode_UTF8;
|
||||
int char_size;
|
||||
int chars_read;
|
||||
int read_position;
|
||||
int end_position;
|
||||
int owned_by_window_id;
|
||||
int fixed_pitch;
|
||||
char style[128];
|
||||
char composite_style[300];
|
||||
} i7_mg_stream_t;
|
||||
|
||||
typedef struct i7_mg_window_t {
|
||||
i7word_t type;
|
||||
i7word_t stream_id;
|
||||
i7word_t rock;
|
||||
} i7_mg_window_t;
|
||||
|
||||
typedef struct i7_mg_event_t {
|
||||
i7word_t type;
|
||||
i7word_t win_id;
|
||||
i7word_t val1;
|
||||
i7word_t val2;
|
||||
} i7_mg_event_t;
|
||||
|
||||
#define I7_MINIGLK_MAX_STREAMS 128
|
||||
#define I7_MINIGLK_MAX_WINDOWS 128
|
||||
#define I7_MINIGLK_RING_BUFFER_SIZE 32
|
||||
|
||||
typedef struct miniglk_data {
|
||||
/* streams */
|
||||
i7_mg_stream_t memory_streams[I7_MINIGLK_MAX_STREAMS];
|
||||
i7word_t stdout_stream_id, stderr_stream_id;
|
||||
/* files */
|
||||
i7_mg_file_t files[128 + 32];
|
||||
int no_files;
|
||||
/* windows */
|
||||
i7_mg_window_t windows[I7_MINIGLK_MAX_WINDOWS];
|
||||
int no_windows;
|
||||
/* events */
|
||||
i7_mg_event_t events_ring_buffer[I7_MINIGLK_RING_BUFFER_SIZE];
|
||||
int rb_back, rb_front;
|
||||
int no_lr;
|
||||
} miniglk_data;
|
||||
|
||||
void i7_initialise_miniglk_data(i7process_t *proc);
|
||||
=
|
||||
|
||||
= (text to inform7_clib.c)
|
||||
void i7_initialise_miniglk_data(i7process_t *proc) {
|
||||
proc->miniglk = malloc(sizeof(miniglk_data));
|
||||
if (proc->miniglk == NULL) {
|
||||
printf("Memory allocation failed\n");
|
||||
exit(1);
|
||||
}
|
||||
proc->miniglk->no_files = 0;
|
||||
proc->miniglk->stdout_stream_id = 0;
|
||||
proc->miniglk->stderr_stream_id = 1;
|
||||
proc->miniglk->no_windows = 1;
|
||||
proc->miniglk->rb_back = 0;
|
||||
proc->miniglk->rb_front = 0;
|
||||
proc->miniglk->no_lr = 0;
|
||||
}
|
||||
=
|
||||
|
||||
@
|
||||
|
||||
= (text to inform7_clib.h)
|
||||
i7word_t i7_miniglk_fileref_create_by_name(i7process_t *proc, i7word_t usage, i7word_t name, i7word_t rock);
|
||||
int i7_fseek(i7process_t *proc, int id, int pos, int origin);
|
||||
int i7_ftell(i7process_t *proc, int id);
|
||||
int i7_fopen(i7process_t *proc, int id, int mode);
|
||||
void i7_fclose(i7process_t *proc, int id);
|
||||
i7word_t i7_miniglk_fileref_does_file_exist(i7process_t *proc, i7word_t id);
|
||||
void i7_fputc(i7process_t *proc, int c, int id);
|
||||
int i7_fgetc(i7process_t *proc, int id);
|
||||
i7word_t i7_miniglk_stream_get_current(i7process_t *proc);
|
||||
i7_mg_stream_t i7_new_stream(i7process_t *proc, FILE *F, int win_id);
|
||||
=
|
||||
|
||||
= (text to inform7_clib.c)
|
||||
i7word_t fn_i7_mgl_TEXT_TY_CharacterLength(i7process_t *proc, i7word_t i7_mgl_local_txt, i7word_t i7_mgl_local_ch, i7word_t i7_mgl_local_i, i7word_t i7_mgl_local_dsize, i7word_t i7_mgl_local_p, i7word_t i7_mgl_local_cp, i7word_t i7_mgl_local_r);
|
||||
i7word_t fn_i7_mgl_BlkValueRead(i7process_t *proc, i7word_t i7_mgl_local_from, i7word_t i7_mgl_local_pos, i7word_t i7_mgl_local_do_not_indirect, i7word_t i7_mgl_local_long_block, i7word_t i7_mgl_local_chunk_size_in_bytes, i7word_t i7_mgl_local_header_size_in_bytes, i7word_t i7_mgl_local_flags, i7word_t i7_mgl_local_entry_size_in_bytes, i7word_t i7_mgl_local_seek_byte_position);
|
||||
void i7_default_stylist(i7process_t *proc, i7word_t which, i7word_t what) {
|
||||
if (which == 1) {
|
||||
i7_mg_stream_t *S = &(proc->miniglk->memory_streams[proc->state.current_output_stream_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");
|
||||
}
|
||||
} else {
|
||||
i7_mg_stream_t *S = &(proc->miniglk->memory_streams[proc->state.current_output_stream_ID]);
|
||||
S->style[0] = 0;
|
||||
switch (what) {
|
||||
case 0: break;
|
||||
case 1: sprintf(S->style, "bold"); break;
|
||||
case 2: sprintf(S->style, "italic"); break;
|
||||
case 3: sprintf(S->style, "reverse"); break;
|
||||
default: {
|
||||
int L = fn_i7_mgl_TEXT_TY_CharacterLength(proc, what, 0, 0, 0, 0, 0, 0);
|
||||
if (L > 127) L = 127;
|
||||
for (int i=0; i<L; i++) S->style[i] = fn_i7_mgl_BlkValueRead(proc, what, i, 0, 0, 0, 0, 0, 0, 0);
|
||||
S->style[L] = 0;
|
||||
}
|
||||
}
|
||||
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");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
i7word_t i7_miniglk_fileref_create_by_name(i7process_t *proc, i7word_t usage, i7word_t name, i7word_t rock) {
|
||||
if (proc->miniglk->no_files >= 128) {
|
||||
fprintf(stderr, "Out of streams\n"); i7_fatal_exit(proc);
|
||||
}
|
||||
int id = proc->miniglk->no_files++;
|
||||
proc->miniglk->files[id].usage = usage;
|
||||
proc->miniglk->files[id].name = name;
|
||||
proc->miniglk->files[id].rock = rock;
|
||||
proc->miniglk->files[id].handle = NULL;
|
||||
for (int i=0; i<128; i++) {
|
||||
i7byte_t c = i7_read_byte(proc, name+1+i);
|
||||
proc->miniglk->files[id].leafname[i] = c;
|
||||
if (c == 0) break;
|
||||
}
|
||||
proc->miniglk->files[id].leafname[127] = 0;
|
||||
sprintf(proc->miniglk->files[id].leafname + strlen(proc->miniglk->files[id].leafname), ".glkdata");
|
||||
return id;
|
||||
}
|
||||
|
||||
int i7_fseek(i7process_t *proc, int id, int pos, int origin) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (proc->miniglk->files[id].handle == NULL) { fprintf(stderr, "File not open\n"); i7_fatal_exit(proc); }
|
||||
return fseek(proc->miniglk->files[id].handle, pos, origin);
|
||||
}
|
||||
|
||||
int i7_ftell(i7process_t *proc, int id) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (proc->miniglk->files[id].handle == NULL) { fprintf(stderr, "File not open\n"); i7_fatal_exit(proc); }
|
||||
int t = ftell(proc->miniglk->files[id].handle);
|
||||
return t;
|
||||
}
|
||||
|
||||
int i7_fopen(i7process_t *proc, int id, int mode) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (proc->miniglk->files[id].handle) { fprintf(stderr, "File already open\n"); i7_fatal_exit(proc); }
|
||||
char *c_mode = "r";
|
||||
switch (mode) {
|
||||
case i7_filemode_Write: c_mode = "w"; break;
|
||||
case i7_filemode_Read: c_mode = "r"; break;
|
||||
case i7_filemode_ReadWrite: c_mode = "r+"; break;
|
||||
case i7_filemode_WriteAppend: c_mode = "r+"; break;
|
||||
}
|
||||
FILE *h = fopen(proc->miniglk->files[id].leafname, c_mode);
|
||||
if (h == NULL) return 0;
|
||||
proc->miniglk->files[id].handle = h;
|
||||
if (mode == i7_filemode_WriteAppend) i7_fseek(proc, id, 0, SEEK_END);
|
||||
return 1;
|
||||
}
|
||||
|
||||
void i7_fclose(i7process_t *proc, int id) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (proc->miniglk->files[id].handle == NULL) { fprintf(stderr, "File not open\n"); i7_fatal_exit(proc); }
|
||||
fclose(proc->miniglk->files[id].handle);
|
||||
proc->miniglk->files[id].handle = NULL;
|
||||
}
|
||||
|
||||
|
||||
i7word_t i7_miniglk_fileref_does_file_exist(i7process_t *proc, i7word_t id) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (proc->miniglk->files[id].handle) return 1;
|
||||
if (i7_fopen(proc, id, i7_filemode_Read)) {
|
||||
i7_fclose(proc, id); return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
void i7_fputc(i7process_t *proc, int c, int id) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (proc->miniglk->files[id].handle == NULL) { fprintf(stderr, "File not open\n"); i7_fatal_exit(proc); }
|
||||
fputc(c, proc->miniglk->files[id].handle);
|
||||
}
|
||||
|
||||
int i7_fgetc(i7process_t *proc, int id) {
|
||||
if ((id < 0) || (id >= 128)) { fprintf(stderr, "Too many files\n"); i7_fatal_exit(proc); }
|
||||
if (proc->miniglk->files[id].handle == NULL) { fprintf(stderr, "File not open\n"); i7_fatal_exit(proc); }
|
||||
int c = fgetc(proc->miniglk->files[id].handle);
|
||||
return c;
|
||||
}
|
||||
|
||||
|
||||
i7word_t i7_miniglk_stream_get_current(i7process_t *proc) {
|
||||
return proc->state.current_output_stream_ID;
|
||||
}
|
||||
|
||||
void i7_miniglk_stream_set_current(i7process_t *proc, i7word_t id) {
|
||||
if ((id < 0) || (id >= I7_MINIGLK_MAX_STREAMS)) { fprintf(stderr, "Stream ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
proc->state.current_output_stream_ID = id;
|
||||
}
|
||||
|
||||
i7_mg_stream_t i7_new_stream(i7process_t *proc, FILE *F, int win_id) {
|
||||
i7_mg_stream_t S;
|
||||
S.to_file = F;
|
||||
S.to_file_id = -1;
|
||||
S.to_memory = NULL;
|
||||
S.memory_used = 0;
|
||||
S.memory_capacity = 0;
|
||||
S.write_here_on_closure = 0;
|
||||
S.write_limit = 0;
|
||||
S.previous_id = 0;
|
||||
S.active = 0;
|
||||
S.encode_UTF8 = 0;
|
||||
S.char_size = 4;
|
||||
S.chars_read = 0;
|
||||
S.read_position = 0;
|
||||
S.end_position = 0;
|
||||
S.owned_by_window_id = win_id;
|
||||
S.style[0] = 0;
|
||||
S.fixed_pitch = 0;
|
||||
S.composite_style[0] = 0;
|
||||
return S;
|
||||
}
|
||||
=
|
||||
|
||||
@
|
||||
|
||||
= (text to inform7_clib.h)
|
||||
void i7_initialise_streams(i7process_t *proc);
|
||||
i7word_t i7_open_stream(i7process_t *proc, FILE *F, int win_id);
|
||||
i7word_t i7_miniglk_stream_open_memory(i7process_t *proc, i7word_t buffer, i7word_t len, i7word_t fmode, i7word_t rock);
|
||||
i7word_t i7_miniglk_stream_open_memory_uni(i7process_t *proc, i7word_t buffer, i7word_t len, i7word_t fmode, i7word_t rock);
|
||||
i7word_t i7_miniglk_stream_open_file(i7process_t *proc, i7word_t fileref, i7word_t usage, i7word_t rock);
|
||||
void i7_miniglk_stream_set_position(i7process_t *proc, i7word_t id, i7word_t pos, i7word_t seekmode);
|
||||
i7word_t i7_miniglk_stream_get_position(i7process_t *proc, i7word_t id);
|
||||
void i7_miniglk_stream_close(i7process_t *proc, i7word_t id, i7word_t result);
|
||||
i7word_t i7_miniglk_window_open(i7process_t *proc, i7word_t split, i7word_t method, i7word_t size, i7word_t wintype, i7word_t rock);
|
||||
i7word_t i7_stream_of_window(i7process_t *proc, i7word_t id);
|
||||
i7word_t i7_rock_of_window(i7process_t *proc, i7word_t id);
|
||||
void i7_to_receiver(i7process_t *proc, i7word_t rock, wchar_t c);
|
||||
void i7_miniglk_put_char_stream(i7process_t *proc, i7word_t stream_id, i7word_t x);
|
||||
i7word_t i7_miniglk_get_char_stream(i7process_t *proc, i7word_t stream_id);
|
||||
|
||||
=
|
||||
|
||||
= (text to inform7_clib.c)
|
||||
void i7_initialise_streams(i7process_t *proc) {
|
||||
for (int i=0; i<I7_MINIGLK_MAX_STREAMS; i++) proc->miniglk->memory_streams[i] = i7_new_stream(proc, NULL, 0);
|
||||
proc->miniglk->memory_streams[proc->miniglk->stdout_stream_id] = i7_new_stream(proc, stdout, 0);
|
||||
proc->miniglk->memory_streams[proc->miniglk->stdout_stream_id].active = 1;
|
||||
proc->miniglk->memory_streams[proc->miniglk->stdout_stream_id].encode_UTF8 = 1;
|
||||
proc->miniglk->memory_streams[proc->miniglk->stderr_stream_id] = i7_new_stream(proc, stderr, 0);
|
||||
proc->miniglk->memory_streams[proc->miniglk->stderr_stream_id].active = 1;
|
||||
proc->miniglk->memory_streams[proc->miniglk->stderr_stream_id].encode_UTF8 = 1;
|
||||
i7_miniglk_stream_set_current(proc, proc->miniglk->stdout_stream_id);
|
||||
}
|
||||
|
||||
i7word_t i7_open_stream(i7process_t *proc, FILE *F, int win_id) {
|
||||
for (int i=0; i<I7_MINIGLK_MAX_STREAMS; i++)
|
||||
if (proc->miniglk->memory_streams[i].active == 0) {
|
||||
proc->miniglk->memory_streams[i] = i7_new_stream(proc, F, win_id);
|
||||
proc->miniglk->memory_streams[i].active = 1;
|
||||
proc->miniglk->memory_streams[i].previous_id = proc->state.current_output_stream_ID;
|
||||
return i;
|
||||
}
|
||||
fprintf(stderr, "Out of streams\n"); i7_fatal_exit(proc);
|
||||
return 0;
|
||||
}
|
||||
|
||||
i7word_t i7_miniglk_stream_open_memory(i7process_t *proc, i7word_t buffer, i7word_t len, i7word_t fmode, i7word_t rock) {
|
||||
if (fmode != 1) { fprintf(stderr, "Only file mode 1 supported, not %d\n", fmode); i7_fatal_exit(proc); }
|
||||
i7word_t id = i7_open_stream(proc, NULL, 0);
|
||||
proc->miniglk->memory_streams[id].write_here_on_closure = buffer;
|
||||
proc->miniglk->memory_streams[id].write_limit = (size_t) len;
|
||||
proc->miniglk->memory_streams[id].char_size = 1;
|
||||
proc->state.current_output_stream_ID = id;
|
||||
return id;
|
||||
}
|
||||
|
||||
i7word_t i7_miniglk_stream_open_memory_uni(i7process_t *proc, i7word_t buffer, i7word_t len, i7word_t fmode, i7word_t rock) {
|
||||
if (fmode != 1) { fprintf(stderr, "Only file mode 1 supported, not %d\n", fmode); i7_fatal_exit(proc); }
|
||||
i7word_t id = i7_open_stream(proc, NULL, 0);
|
||||
proc->miniglk->memory_streams[id].write_here_on_closure = buffer;
|
||||
proc->miniglk->memory_streams[id].write_limit = (size_t) len;
|
||||
proc->miniglk->memory_streams[id].char_size = 4;
|
||||
proc->state.current_output_stream_ID = id;
|
||||
return id;
|
||||
}
|
||||
|
||||
i7word_t i7_miniglk_stream_open_file(i7process_t *proc, i7word_t fileref, i7word_t usage, i7word_t rock) {
|
||||
i7word_t id = i7_open_stream(proc, NULL, 0);
|
||||
proc->miniglk->memory_streams[id].to_file_id = fileref;
|
||||
if (i7_fopen(proc, fileref, usage) == 0) return 0;
|
||||
return id;
|
||||
}
|
||||
|
||||
void i7_miniglk_stream_set_position(i7process_t *proc, i7word_t id, i7word_t pos, i7word_t seekmode) {
|
||||
if ((id < 0) || (id >= I7_MINIGLK_MAX_STREAMS)) { fprintf(stderr, "Stream ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
i7_mg_stream_t *S = &(proc->miniglk->memory_streams[id]);
|
||||
if (S->to_file_id >= 0) {
|
||||
int origin;
|
||||
switch (seekmode) {
|
||||
case seekmode_Start: origin = SEEK_SET; break;
|
||||
case seekmode_Current: origin = SEEK_CUR; break;
|
||||
case seekmode_End: origin = SEEK_END; break;
|
||||
default: fprintf(stderr, "Unknown seekmode\n"); i7_fatal_exit(proc);
|
||||
}
|
||||
i7_fseek(proc, S->to_file_id, pos, origin);
|
||||
} else {
|
||||
fprintf(stderr, "glk_stream_set_position supported only for file streams\n"); i7_fatal_exit(proc);
|
||||
}
|
||||
}
|
||||
|
||||
i7word_t i7_miniglk_stream_get_position(i7process_t *proc, i7word_t id) {
|
||||
if ((id < 0) || (id >= I7_MINIGLK_MAX_STREAMS)) { fprintf(stderr, "Stream ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
i7_mg_stream_t *S = &(proc->miniglk->memory_streams[id]);
|
||||
if (S->to_file_id >= 0) {
|
||||
return (i7word_t) i7_ftell(proc, S->to_file_id);
|
||||
}
|
||||
return (i7word_t) S->memory_used;
|
||||
}
|
||||
|
||||
void i7_miniglk_stream_close(i7process_t *proc, i7word_t id, i7word_t result) {
|
||||
if ((id < 0) || (id >= I7_MINIGLK_MAX_STREAMS)) { fprintf(stderr, "Stream ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
if (id == 0) { fprintf(stderr, "Cannot close stdout\n"); i7_fatal_exit(proc); }
|
||||
if (id == 1) { fprintf(stderr, "Cannot close stderr\n"); i7_fatal_exit(proc); }
|
||||
i7_mg_stream_t *S = &(proc->miniglk->memory_streams[id]);
|
||||
if (S->active == 0) { fprintf(stderr, "Stream %d already closed\n", id); i7_fatal_exit(proc); }
|
||||
if (proc->state.current_output_stream_ID == id) proc->state.current_output_stream_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++)
|
||||
if (i < S->memory_used)
|
||||
i7_write_word(proc, S->write_here_on_closure, i, S->to_memory[i]);
|
||||
else
|
||||
i7_write_word(proc, S->write_here_on_closure, i, 0);
|
||||
} else {
|
||||
for (size_t i = 0; i < S->write_limit; i++)
|
||||
if (i < S->memory_used)
|
||||
i7_write_byte(proc, S->write_here_on_closure + i, S->to_memory[i]);
|
||||
else
|
||||
i7_write_byte(proc, S->write_here_on_closure + i, 0);
|
||||
}
|
||||
}
|
||||
if (result == -1) {
|
||||
i7_push(proc, S->chars_read);
|
||||
i7_push(proc, S->memory_used);
|
||||
} else if (result != 0) {
|
||||
i7_write_word(proc, result, 0, S->chars_read);
|
||||
i7_write_word(proc, result, 1, S->memory_used);
|
||||
}
|
||||
if (S->to_file_id >= 0) i7_fclose(proc, S->to_file_id);
|
||||
S->active = 0;
|
||||
S->memory_used = 0;
|
||||
}
|
||||
|
||||
i7word_t i7_miniglk_window_open(i7process_t *proc, i7word_t split, i7word_t method, i7word_t size, i7word_t wintype, i7word_t rock) {
|
||||
if (proc->miniglk->no_windows >= 128) {
|
||||
fprintf(stderr, "Out of windows\n"); i7_fatal_exit(proc);
|
||||
}
|
||||
int id = proc->miniglk->no_windows++;
|
||||
proc->miniglk->windows[id].type = wintype;
|
||||
proc->miniglk->windows[id].stream_id = i7_open_stream(proc, stdout, id);
|
||||
proc->miniglk->windows[id].rock = rock;
|
||||
return id;
|
||||
}
|
||||
|
||||
i7word_t i7_stream_of_window(i7process_t *proc, i7word_t id) {
|
||||
if ((id < 0) || (id >= proc->miniglk->no_windows)) { fprintf(stderr, "Window ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
return proc->miniglk->windows[id].stream_id;
|
||||
}
|
||||
|
||||
i7word_t i7_rock_of_window(i7process_t *proc, i7word_t id) {
|
||||
if ((id < 0) || (id >= proc->miniglk->no_windows)) { fprintf(stderr, "Window ID %d out of range\n", id); i7_fatal_exit(proc); }
|
||||
return proc->miniglk->windows[id].rock;
|
||||
}
|
||||
|
||||
void i7_to_receiver(i7process_t *proc, i7word_t rock, wchar_t c) {
|
||||
i7_mg_stream_t *S = &(proc->miniglk->memory_streams[proc->state.current_output_stream_ID]);
|
||||
if (proc->receiver == NULL) fputc(c, stdout);
|
||||
(proc->receiver)(rock, c, S->composite_style);
|
||||
}
|
||||
|
||||
void i7_miniglk_put_char_stream(i7process_t *proc, i7word_t stream_id, i7word_t x) {
|
||||
i7_mg_stream_t *S = &(proc->miniglk->memory_streams[stream_id]);
|
||||
if (S->to_file) {
|
||||
int win_id = S->owned_by_window_id;
|
||||
int rock = -1;
|
||||
if (win_id >= 1) rock = i7_rock_of_window(proc, win_id);
|
||||
unsigned int c = (unsigned int) x;
|
||||
if (proc->use_UTF8) {
|
||||
if (c >= 0x800) {
|
||||
i7_to_receiver(proc, rock, 0xE0 + (c >> 12));
|
||||
i7_to_receiver(proc, rock, 0x80 + ((c >> 6) & 0x3f));
|
||||
i7_to_receiver(proc, rock, 0x80 + (c & 0x3f));
|
||||
} else if (c >= 0x80) {
|
||||
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 if (S->to_file_id >= 0) {
|
||||
i7_fputc(proc, (int) x, S->to_file_id);
|
||||
S->end_position++;
|
||||
} else {
|
||||
if (S->memory_used >= S->memory_capacity) {
|
||||
size_t needed = 4*S->memory_capacity;
|
||||
if (needed == 0) needed = 1024;
|
||||
wchar_t *new_data = (wchar_t *) calloc(needed, sizeof(wchar_t));
|
||||
if (new_data == NULL) { fprintf(stderr, "Out of memory\n"); i7_fatal_exit(proc); }
|
||||
for (size_t i=0; i<S->memory_used; i++) new_data[i] = S->to_memory[i];
|
||||
free(S->to_memory);
|
||||
S->to_memory = new_data;
|
||||
}
|
||||
S->to_memory[S->memory_used++] = (wchar_t) x;
|
||||
}
|
||||
}
|
||||
|
||||
i7word_t i7_miniglk_get_char_stream(i7process_t *proc, i7word_t stream_id) {
|
||||
i7_mg_stream_t *S = &(proc->miniglk->memory_streams[stream_id]);
|
||||
if (S->to_file_id >= 0) {
|
||||
S->chars_read++;
|
||||
return i7_fgetc(proc, S->to_file_id);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
=
|
||||
|
||||
= (text to inform7_clib.h)
|
||||
i7_mg_event_t *i7_next_event(i7process_t *proc);
|
||||
void i7_make_event(i7process_t *proc, i7_mg_event_t e);
|
||||
i7word_t i7_miniglk_select(i7process_t *proc, i7word_t structure);
|
||||
i7word_t i7_miniglk_request_line_event(i7process_t *proc, i7word_t window_id, i7word_t buffer, i7word_t max_len, i7word_t init_len);
|
||||
i7word_t fn_i7_mgl_IndefArt(i7process_t *proc, i7word_t i7_mgl_local_obj, i7word_t i7_mgl_local_i);
|
||||
i7word_t fn_i7_mgl_DefArt(i7process_t *proc, i7word_t i7_mgl_local_obj, i7word_t i7_mgl_local_i);
|
||||
i7word_t fn_i7_mgl_CIndefArt(i7process_t *proc, i7word_t i7_mgl_local_obj, i7word_t i7_mgl_local_i);
|
||||
i7word_t fn_i7_mgl_CDefArt(i7process_t *proc, i7word_t i7_mgl_local_obj, i7word_t i7_mgl_local_i);
|
||||
i7word_t fn_i7_mgl_PrintShortName(i7process_t *proc, i7word_t i7_mgl_local_obj, i7word_t i7_mgl_local_i);
|
||||
void i7_print_name(i7process_t *proc, i7word_t x);
|
||||
void i7_read(i7process_t *proc, i7word_t x);
|
||||
=
|
||||
|
||||
= (text to inform7_clib.c)
|
||||
i7_mg_event_t *i7_next_event(i7process_t *proc) {
|
||||
if (proc->miniglk->rb_front == proc->miniglk->rb_back) return NULL;
|
||||
i7_mg_event_t *e = &(proc->miniglk->events_ring_buffer[proc->miniglk->rb_back]);
|
||||
proc->miniglk->rb_back++; if (proc->miniglk->rb_back == I7_MINIGLK_RING_BUFFER_SIZE) proc->miniglk->rb_back = 0;
|
||||
return e;
|
||||
}
|
||||
|
||||
void i7_make_event(i7process_t *proc, i7_mg_event_t e) {
|
||||
proc->miniglk->events_ring_buffer[proc->miniglk->rb_front] = e;
|
||||
proc->miniglk->rb_front++; if (proc->miniglk->rb_front == I7_MINIGLK_RING_BUFFER_SIZE) proc->miniglk->rb_front = 0;
|
||||
}
|
||||
|
||||
i7word_t i7_miniglk_select(i7process_t *proc, i7word_t structure) {
|
||||
i7_mg_event_t *e = i7_next_event(proc);
|
||||
if (e == NULL) {
|
||||
fprintf(stderr, "No events available to select\n"); i7_fatal_exit(proc);
|
||||
}
|
||||
if (structure == -1) {
|
||||
i7_push(proc, e->type);
|
||||
i7_push(proc, e->win_id);
|
||||
i7_push(proc, e->val1);
|
||||
i7_push(proc, e->val2);
|
||||
} else {
|
||||
if (structure) {
|
||||
i7_write_word(proc, structure, 0, e->type);
|
||||
i7_write_word(proc, structure, 1, e->win_id);
|
||||
i7_write_word(proc, structure, 2, e->val1);
|
||||
i7_write_word(proc, structure, 3, e->val2);
|
||||
}
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
i7word_t i7_miniglk_request_line_event(i7process_t *proc, i7word_t window_id, i7word_t buffer, i7word_t max_len, i7word_t init_len) {
|
||||
i7_mg_event_t e;
|
||||
e.type = i7_evtype_LineInput;
|
||||
e.win_id = window_id;
|
||||
e.val1 = 1;
|
||||
e.val2 = 0;
|
||||
wchar_t c; int pos = init_len;
|
||||
if (proc->sender == NULL) i7_benign_exit(proc);
|
||||
char *s = (proc->sender)(proc->send_count++);
|
||||
int i = 0;
|
||||
while (1) {
|
||||
c = s[i++];
|
||||
if ((c == EOF) || (c == 0) || (c == '\n') || (c == '\r')) break;
|
||||
if (pos < max_len) i7_write_byte(proc, buffer + pos++, c);
|
||||
}
|
||||
if (pos < max_len) i7_write_byte(proc, buffer + pos, 0); else i7_write_byte(proc, buffer + max_len-1, 0);
|
||||
e.val1 = pos;
|
||||
i7_make_event(proc, e);
|
||||
if (proc->miniglk->no_lr++ == 1000) {
|
||||
fprintf(stdout, "[Too many line events: terminating to prevent hang]\n"); exit(0);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
void i7_default_glk(i7process_t *proc, i7word_t glk_api_selector, i7word_t varargc, i7word_t *z) {
|
||||
i7_debug_stack("i7_opcode_glk");
|
||||
i7word_t args[5] = { 0, 0, 0, 0, 0 }, argc = 0;
|
||||
while (varargc > 0) {
|
||||
i7word_t v = i7_pull(proc);
|
||||
if (argc < 5) args[argc++] = v;
|
||||
varargc--;
|
||||
}
|
||||
|
||||
int rv = 0;
|
||||
switch (glk_api_selector) {
|
||||
case i7_glk_gestalt:
|
||||
rv = 1; break;
|
||||
case i7_glk_window_iterate:
|
||||
rv = 0; break;
|
||||
case i7_glk_window_open:
|
||||
rv = i7_miniglk_window_open(proc, args[0], args[1], args[2], args[3], args[4]); break;
|
||||
case i7_glk_set_window:
|
||||
i7_miniglk_stream_set_current(proc, i7_stream_of_window(proc, args[0])); break;
|
||||
case i7_glk_stream_iterate:
|
||||
rv = 0; break;
|
||||
case i7_glk_fileref_iterate:
|
||||
rv = 0; break;
|
||||
case i7_glk_stylehint_set:
|
||||
rv = 0; break;
|
||||
case i7_glk_schannel_iterate:
|
||||
rv = 0; break;
|
||||
case i7_glk_schannel_create:
|
||||
rv = 0; break;
|
||||
case i7_glk_set_style:
|
||||
rv = 0; break;
|
||||
case i7_glk_window_move_cursor:
|
||||
rv = 0; break;
|
||||
case i7_glk_stream_get_position:
|
||||
rv = i7_miniglk_stream_get_position(proc, args[0]); break;
|
||||
case i7_glk_window_get_size:
|
||||
if (args[0]) i7_write_word(proc, args[0], 0, 80);
|
||||
if (args[1]) i7_write_word(proc, args[1], 0, 8);
|
||||
rv = 0; break;
|
||||
case i7_glk_request_line_event:
|
||||
rv = i7_miniglk_request_line_event(proc, args[0], args[1], args[2], args[3]); break;
|
||||
case i7_glk_select:
|
||||
rv = i7_miniglk_select(proc, args[0]); break;
|
||||
case i7_glk_stream_close:
|
||||
i7_miniglk_stream_close(proc, args[0], args[1]); break;
|
||||
case i7_glk_stream_set_current:
|
||||
i7_miniglk_stream_set_current(proc, args[0]); break;
|
||||
case i7_glk_stream_get_current:
|
||||
rv = i7_miniglk_stream_get_current(proc); break;
|
||||
case i7_glk_stream_open_memory:
|
||||
rv = i7_miniglk_stream_open_memory(proc, args[0], args[1], args[2], args[3]); break;
|
||||
case i7_glk_stream_open_memory_uni:
|
||||
rv = i7_miniglk_stream_open_memory_uni(proc, args[0], args[1], args[2], args[3]); break;
|
||||
case i7_glk_fileref_create_by_name:
|
||||
rv = i7_miniglk_fileref_create_by_name(proc, args[0], args[1], args[2]); break;
|
||||
case i7_glk_fileref_does_file_exist:
|
||||
rv = i7_miniglk_fileref_does_file_exist(proc, args[0]); break;
|
||||
case i7_glk_stream_open_file:
|
||||
rv = i7_miniglk_stream_open_file(proc, args[0], args[1], args[2]); break;
|
||||
case i7_glk_fileref_destroy:
|
||||
rv = 0; break;
|
||||
case i7_glk_char_to_lower:
|
||||
rv = args[0];
|
||||
if (((rv >= 0x41) && (rv <= 0x5A)) ||
|
||||
((rv >= 0xC0) && (rv <= 0xD6)) ||
|
||||
((rv >= 0xD8) && (rv <= 0xDE))) rv += 32;
|
||||
break;
|
||||
case i7_glk_char_to_upper:
|
||||
rv = args[0];
|
||||
if (((rv >= 0x61) && (rv <= 0x7A)) ||
|
||||
((rv >= 0xE0) && (rv <= 0xF6)) ||
|
||||
((rv >= 0xF8) && (rv <= 0xFE))) rv -= 32;
|
||||
break;
|
||||
case i7_glk_stream_set_position:
|
||||
i7_miniglk_stream_set_position(proc, args[0], args[1], args[2]); break;
|
||||
case i7_glk_put_char_stream:
|
||||
i7_miniglk_put_char_stream(proc, args[0], args[1]); break;
|
||||
case i7_glk_get_char_stream:
|
||||
rv = i7_miniglk_get_char_stream(proc, args[0]); break;
|
||||
default:
|
||||
printf("Unimplemented: i7_opcode_glk %d.\n", glk_api_selector); i7_fatal_exit(proc);
|
||||
break;
|
||||
}
|
||||
if (z) *z = rv;
|
||||
}
|
||||
|
||||
void i7_print_name(i7process_t *proc, i7word_t x) {
|
||||
fn_i7_mgl_PrintShortName(proc, x, 0);
|
||||
}
|
||||
|
||||
i7word_t fn_i7_mgl_pending_boxed_quotation(i7process_t *proc) {
|
||||
return 0;
|
||||
}
|
||||
=
|
|
@ -416,7 +416,10 @@ typedef struct i7process_t {
|
|||
void (*receiver)(int id, wchar_t c, char *style);
|
||||
int send_count;
|
||||
char *(*sender)(int count);
|
||||
i7word_t (*communicator)(struct i7process_t *proc, char *id, int argc, i7word_t *args);
|
||||
void (*stylist)(struct i7process_t *proc, i7word_t which, i7word_t what);
|
||||
void (*glk_implementation)(struct i7process_t *proc, i7word_t glk_api_selector,
|
||||
i7word_t varargc, i7word_t *z);
|
||||
struct miniglk_data *miniglk;
|
||||
int use_UTF8;
|
||||
} i7process_t;
|
||||
=
|
||||
|
@ -457,7 +460,10 @@ i7process_t i7_new_process(void) {
|
|||
proc.receiver = i7_default_receiver;
|
||||
proc.send_count = 0;
|
||||
proc.sender = i7_default_sender;
|
||||
proc.stylist = i7_default_stylist;
|
||||
proc.glk_implementation = i7_default_glk;
|
||||
proc.use_UTF8 = 1;
|
||||
i7_initialise_miniglk_data(&proc);
|
||||
return proc;
|
||||
}
|
||||
=
|
||||
|
@ -468,7 +474,6 @@ a new process, so we must define those:
|
|||
= (text to inform7_clib.h)
|
||||
char *i7_default_sender(int count);
|
||||
void i7_default_receiver(int id, wchar_t c, char *style);
|
||||
i7word_t i7_default_communicator(i7process_t *proc, char *id, int argc, i7word_t *args);
|
||||
=
|
||||
|
||||
The receiver and sender functions allow our textual I/O to be managed by external
|
||||
|
@ -541,6 +546,29 @@ void i7_set_process_sender(i7process_t *proc, char *(*sender)(int count)) {
|
|||
}
|
||||
=
|
||||
|
||||
Similarly, ambitious projects which want their own complete I/O systems can
|
||||
set the following:
|
||||
|
||||
= (text to inform7_clib.h)
|
||||
void i7_set_process_stylist(i7process_t *proc,
|
||||
void (*stylist)(struct i7process_t *proc, i7word_t which, i7word_t what));
|
||||
void i7_set_process_glk_implementation(i7process_t *proc,
|
||||
void (*glk_implementation)(struct i7process_t *proc, i7word_t glk_api_selector,
|
||||
i7word_t varargc, i7word_t *z));
|
||||
=
|
||||
|
||||
= (text to inform7_clib.c)
|
||||
void i7_set_process_stylist(i7process_t *proc,
|
||||
void (*stylist)(struct i7process_t *proc, i7word_t which, i7word_t what)) {
|
||||
proc->stylist = stylist;
|
||||
}
|
||||
void i7_set_process_glk_implementation(i7process_t *proc,
|
||||
void (*glk_implementation)(struct i7process_t *proc, i7word_t glk_api_selector,
|
||||
i7word_t varargc, i7word_t *z)) {
|
||||
proc->glk_implementation = glk_implementation;
|
||||
}
|
||||
=
|
||||
|
||||
In all cases, execution is kicked off when |i7_run_process| is called on a process.
|
||||
Ordinarily, that will execute the entire Inform 7 program and then come back to us;
|
||||
but we need to cope with a sudden halt during execution, either through a fatal
|
||||
|
|
|
@ -43,4 +43,5 @@ Chapter 5: C
|
|||
C Object Model
|
||||
C Function Model
|
||||
C Input-Output Model
|
||||
C Miniglk
|
||||
C Utility Functions
|
||||
|
|
Loading…
Reference in a new issue