mirror of
https://github.com/ganelson/inform.git
synced 2024-06-30 22:14:58 +03:00
Ternary PROPERTYVALUE.BIP
This commit is contained in:
parent
9f10d65ad6
commit
3ac8b11b97
|
@ -1,6 +1,6 @@
|
|||
# Inform 7
|
||||
|
||||
v10.1.0-alpha.1+6T54 'Krypton' (16 October 2021)
|
||||
v10.1.0-alpha.1+6T55 'Krypton' (17 October 2021)
|
||||
|
||||
## About Inform 7
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: alpha.1
|
||||
Build Date: 16 October 2021
|
||||
Build Number: 6T54
|
||||
Build Date: 17 October 2021
|
||||
Build Number: 6T55
|
||||
|
|
|
@ -320,10 +320,7 @@ it doesn't mean it actually does have.
|
|||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> .</span><span class="identifier-syntax">PermissionFound</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> >> </span><span class="identifier-syntax">obj</span><span class="plain-syntax"> </span><span class="reserved-syntax">provides</span><span class="plain-syntax"> </span><span class="identifier-syntax">q</span><span class="plain-syntax">) </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">;</span>
|
||||
<span class="comment-syntax">@provides_gprop K obj q a;</span>
|
||||
<span class="comment-syntax">if (a) rtrue;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">issue_rtp</span><span class="plain-syntax">) </span><span class="identifier-syntax">RunTimeProblem</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTP_UNSET</span><span class="plain-syntax">, </span><span class="identifier-syntax">obj</span><span class="plain-syntax">, </span><span class="identifier-syntax">q</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
|
||||
|
@ -366,8 +363,7 @@ the one which the player is on.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">GProperty</span><span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax"> </span><span class="identifier-syntax">pr</span><span class="plain-syntax"> </span><span class="identifier-syntax">err</span><span class="plain-syntax"> </span><span class="identifier-syntax">holder</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ProvidesProperty</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">pr</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">-</span><span class="identifier-syntax">err</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">read_gprop</span><span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax"> </span><span class="identifier-syntax">pr</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</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">val</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">K</span><span class="plain-syntax"> >> </span><span class="identifier-syntax">V</span><span class="plain-syntax"> . </span><span class="identifier-syntax">pr</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="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
|
@ -380,7 +376,7 @@ converted from an rvalue to an lvalue.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">WriteGProperty</span><span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax"> </span><span class="identifier-syntax">pr</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax"> </span><span class="identifier-syntax">holder</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ProvidesProperty</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">pr</span><span class="plain-syntax">, </span><span class="reserved-syntax">true</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> @</span><span class="identifier-syntax">write_gprop</span><span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax"> </span><span class="identifier-syntax">pr</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">K</span><span class="plain-syntax"> >> </span><span class="identifier-syntax">V</span><span class="plain-syntax"> . </span><span class="identifier-syntax">pr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">val</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
|
|
|
@ -565,7 +565,7 @@ are a bit more careful about the senses.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">flag</span><span class="plain-syntax"> == </span><span class="reserved-syntax">false</span><span class="plain-syntax">) { </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax"> </span><span class="reserved-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">toroom</span><span class="plain-syntax">) </span><span class="reserved-syntax">remove</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">i</span><span class="plain-syntax"> </span><span class="reserved-syntax">ofclass</span><span class="plain-syntax"> </span><span class="identifier-syntax">K4_door</span><span class="plain-syntax">) && (</span><span class="reserved-syntax">parent</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">) == </span><span class="reserved-syntax">nothing</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">move</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> </span><span class="reserved-syntax">to</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">i</span><span class="plain-syntax">.</span><span class="identifier-syntax">door_to</span><span class="plain-syntax">).</span><span class="identifier-syntax">call</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">move</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> </span><span class="reserved-syntax">to</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">.</span><span class="identifier-syntax">door_to</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -165,8 +165,8 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!externalcall"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertyaddress"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertylength"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!xpropertyexists"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertyvalue"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertyexists"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertyvalue"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="1-ip.html#SP1" class="function-link"><span class="function-syntax">Primitives::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!notin"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"val val -> val"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -331,7 +331,7 @@ function togglePopup(material_id) {
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">EXTERNALCALL_BIP</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">PROPERTYADDRESS_BIP</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">PROPERTYLENGTH_BIP</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">XPROPERTYEXISTS_BIP</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">PROPERTYEXISTS_BIP</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">PROPERTYVALUE_BIP</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -429,7 +429,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">EXTERNALCALL_BIP:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"!externalcall"</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">PROPERTYADDRESS_BIP:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertyaddress"</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">PROPERTYLENGTH_BIP:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertylength"</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">XPROPERTYEXISTS_BIP:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"!xpropertyexists"</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">PROPERTYEXISTS_BIP:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertyexists"</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">PROPERTYVALUE_BIP:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertyvalue"</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">I</span><span class="string-syntax">"<none>"</span><span class="plain-syntax">;</span>
|
||||
|
@ -542,7 +542,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">symb</span><span class="plain-syntax">-></span><span class="identifier-syntax">symbol_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!externalcall"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">bip</span><span class="plain-syntax"> = </span><span class="constant-syntax">EXTERNALCALL_BIP</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">symb</span><span class="plain-syntax">-></span><span class="identifier-syntax">symbol_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertyaddress"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">bip</span><span class="plain-syntax"> = </span><span class="constant-syntax">PROPERTYADDRESS_BIP</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">symb</span><span class="plain-syntax">-></span><span class="identifier-syntax">symbol_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertylength"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">bip</span><span class="plain-syntax"> = </span><span class="constant-syntax">PROPERTYLENGTH_BIP</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">symb</span><span class="plain-syntax">-></span><span class="identifier-syntax">symbol_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!xpropertyexists"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">bip</span><span class="plain-syntax"> = </span><span class="constant-syntax">XPROPERTYEXISTS_BIP</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">symb</span><span class="plain-syntax">-></span><span class="identifier-syntax">symbol_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertyexists"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">bip</span><span class="plain-syntax"> = </span><span class="constant-syntax">PROPERTYEXISTS_BIP</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">symb</span><span class="plain-syntax">-></span><span class="identifier-syntax">symbol_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"!propertyvalue"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">bip</span><span class="plain-syntax"> = </span><span class="constant-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bip</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Symbols::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">symb</span><span class="plain-syntax">, </span><span class="identifier-syntax">BIP_CODE_IANN</span><span class="plain-syntax">, </span><span class="identifier-syntax">bip</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -460,7 +460,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">isn</span><span class="plain-syntax">-></span><span class="element-syntax">isn_clarifier</span><span class="plain-syntax"> == </span><span class="constant-syntax">HAS_XBIP</span><span class="plain-syntax">) </span><span class="identifier-syntax">op</span><span class="plain-syntax"> = </span><span class="constant-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">insert_OBJECT_TY</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">op</span><span class="plain-syntax"> == </span><span class="constant-syntax">XPROPERTYEXISTS_BIP</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">op</span><span class="plain-syntax"> == </span><span class="constant-syntax">PROPERTYEXISTS_BIP</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">op</span><span class="plain-syntax"> == </span><span class="constant-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">isn</span><span class="plain-syntax">-></span><span class="element-syntax">child_node</span><span class="plain-syntax">-></span><span class="element-syntax">isn_type</span><span class="plain-syntax"> != </span><span class="constant-syntax">OPERATION_ISNT</span><span class="plain-syntax">) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">isn</span><span class="plain-syntax">-></span><span class="element-syntax">child_node</span><span class="plain-syntax">-></span><span class="element-syntax">isn_clarifier</span><span class="plain-syntax"> != </span><span class="constant-syntax">OWNERKIND_XBIP</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">insert_OBJECT_TY</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -1600,7 +1600,7 @@ inclusive; we ignore an empty token.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"ofclass"</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">is</span><span class="plain-syntax"> = </span><span class="constant-syntax">OPERATOR_ISTT</span><span class="plain-syntax">; </span><span class="identifier-syntax">which</span><span class="plain-syntax"> = </span><span class="constant-syntax">OFCLASS_BIP</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"has"</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">is</span><span class="plain-syntax"> = </span><span class="constant-syntax">OPERATOR_ISTT</span><span class="plain-syntax">; </span><span class="identifier-syntax">which</span><span class="plain-syntax"> = </span><span class="constant-syntax">HAS_XBIP</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"hasnt"</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">is</span><span class="plain-syntax"> = </span><span class="constant-syntax">OPERATOR_ISTT</span><span class="plain-syntax">; </span><span class="identifier-syntax">which</span><span class="plain-syntax"> = </span><span class="constant-syntax">HASNT_XBIP</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"provides"</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">is</span><span class="plain-syntax"> = </span><span class="constant-syntax">OPERATOR_ISTT</span><span class="plain-syntax">; </span><span class="identifier-syntax">which</span><span class="plain-syntax"> = </span><span class="constant-syntax">XPROPERTYEXISTS_BIP</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"provides"</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">is</span><span class="plain-syntax"> = </span><span class="constant-syntax">OPERATOR_ISTT</span><span class="plain-syntax">; </span><span class="identifier-syntax">which</span><span class="plain-syntax"> = </span><span class="constant-syntax">PROPERTYEXISTS_BIP</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"in"</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">is</span><span class="plain-syntax"> = </span><span class="constant-syntax">OPERATOR_ISTT</span><span class="plain-syntax">; </span><span class="identifier-syntax">which</span><span class="plain-syntax"> = </span><span class="constant-syntax">IN_BIP</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"notin"</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">is</span><span class="plain-syntax"> = </span><span class="constant-syntax">OPERATOR_ISTT</span><span class="plain-syntax">; </span><span class="identifier-syntax">which</span><span class="plain-syntax"> = </span><span class="constant-syntax">NOTIN_BIP</span><span class="plain-syntax">; }</span>
|
||||
|
||||
|
@ -3074,7 +3074,7 @@ which are prefix or postfix, and so on.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">HAS_XBIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">HASNT_XBIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">OFCLASS_BIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">XPROPERTYEXISTS_BIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">PROPERTYEXISTS_BIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">IN_BIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">NOTIN_BIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
||||
|
||||
|
@ -3136,7 +3136,7 @@ which are prefix or postfix, and so on.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">HAS_XBIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"has"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">HASNT_XBIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"hasnt"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">OFCLASS_BIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"ofclass"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">XPROPERTYEXISTS_BIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"provides"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">PROPERTYEXISTS_BIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"provides"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">IN_BIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"in"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">NOTIN_BIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"notin"</span><span class="plain-syntax">;</span>
|
||||
|
||||
|
@ -3190,7 +3190,7 @@ which are prefix or postfix, and so on.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">HAS_XBIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">HASNT_XBIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">OFCLASS_BIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">XPROPERTYEXISTS_BIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">PROPERTYEXISTS_BIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">IN_BIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">O</span><span class="plain-syntax"> == </span><span class="constant-syntax">NOTIN_BIP</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax">;</span>
|
||||
|
||||
|
|
|
@ -161,7 +161,7 @@ object.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">gen</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure code_generation is accessed in 2/cg2, 2/vnl, 2/vc, 2/vo, 2/vc2, 3/fti, 3/fbi, 3/fi, 4/fi6, 4/i6c, 4/i6o, 4/i6c2, 5/fnc, 5/cnm, 5/cmm, 5/cpc, 5/ccn, 5/com, 5/cfm, 5/clt and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure code_generation is accessed in 2/cg2, 2/vnl, 2/vc, 2/vo, 2/vc2, 3/fti, 3/fbi, 3/fi, 4/fi6, 4/i6c, 4/i6o, 4/i6c2, 5/fnc, 5/cnm, 5/crf, 5/cmm, 5/cpc, 5/ccn, 5/com, 5/cfm, 5/clt and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_1" class="paragraph-anchor"></a><b>§2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Traverse for global bric-a-brac</span><span class="named-paragraph-number">2.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
|
@ -441,13 +441,13 @@ some temporary stream somewhere. For that, use the following pair:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::select_temporary</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">CodeGen::select_temporary</span></span>:<br/><a href="2-cg.html#SP4">§4</a><br/>Vanilla Constants - <a href="2-vc.html#SP1_8">§1.8</a><br/>Vanilla Objects - <a href="2-vo.html#SP2_2_1_2">§2.2.1.2</a>, <a href="2-vo.html#SP4_1_1_1_1_1_1">§4.1.1.1.1.1.1</a><br/>Inform 6 Objects - <a href="4-i6o.html#SP11">§11</a><br/>Inform 6 Code - <a href="4-i6c2.html#SP5_1">§5.1</a>, <a href="4-i6c2.html#SP5_2">§5.2</a>, <a href="4-i6c2.html#SP5_3">§5.3</a><br/>C Global Variables - <a href="5-cgv.html#SP2">§2</a><br/>C Assembly - <a href="5-cas.html#SP3">§3</a><br/>C Object Model - <a href="5-com.html#SP8">§8</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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::select_temporary</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">CodeGen::select_temporary</span></span>:<br/><a href="2-cg.html#SP4">§4</a><br/>Vanilla Constants - <a href="2-vc.html#SP1_8">§1.8</a><br/>Vanilla Objects - <a href="2-vo.html#SP2_2_1_2">§2.2.1.2</a>, <a href="2-vo.html#SP4_1_1_1_1_1_1">§4.1.1.1.1.1.1</a><br/>Inform 6 Objects - <a href="4-i6o.html#SP11">§11</a><br/>C Global Variables - <a href="5-cgv.html#SP2">§2</a><br/>C Assembly - <a href="5-cas.html#SP3">§3</a><br/>C Object Model - <a href="5-com.html#SP8">§8</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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">gen</span><span class="plain-syntax">-></span><span class="element-syntax">segmentation</span><span class="plain-syntax">.</span><span class="element-syntax">temporarily_diverted</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"nested temporary segments"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gen</span><span class="plain-syntax">-></span><span class="element-syntax">segmentation</span><span class="plain-syntax">.</span><span class="element-syntax">temporarily_diverted_to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">T</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gen</span><span class="plain-syntax">-></span><span class="element-syntax">segmentation</span><span class="plain-syntax">.</span><span class="element-syntax">temporarily_diverted</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::deselect_temporary</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">CodeGen::deselect_temporary</span></span>:<br/><a href="2-cg.html#SP4">§4</a><br/>Vanilla Constants - <a href="2-vc.html#SP1_8">§1.8</a><br/>Vanilla Objects - <a href="2-vo.html#SP2_2_1_2">§2.2.1.2</a>, <a href="2-vo.html#SP4_1_1_1_1_1_1">§4.1.1.1.1.1.1</a><br/>Inform 6 Objects - <a href="4-i6o.html#SP11">§11</a><br/>Inform 6 Code - <a href="4-i6c2.html#SP5_1">§5.1</a>, <a href="4-i6c2.html#SP5_2">§5.2</a>, <a href="4-i6c2.html#SP5_3">§5.3</a><br/>C Global Variables - <a href="5-cgv.html#SP2">§2</a><br/>C Assembly - <a href="5-cas.html#SP3">§3</a><br/>C Object Model - <a href="5-com.html#SP8">§8</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::deselect_temporary</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">CodeGen::deselect_temporary</span></span>:<br/><a href="2-cg.html#SP4">§4</a><br/>Vanilla Constants - <a href="2-vc.html#SP1_8">§1.8</a><br/>Vanilla Objects - <a href="2-vo.html#SP2_2_1_2">§2.2.1.2</a>, <a href="2-vo.html#SP4_1_1_1_1_1_1">§4.1.1.1.1.1.1</a><br/>Inform 6 Objects - <a href="4-i6o.html#SP11">§11</a><br/>C Global Variables - <a href="5-cgv.html#SP2">§2</a><br/>C Assembly - <a href="5-cas.html#SP3">§3</a><br/>C Object Model - <a href="5-com.html#SP8">§8</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><span class="identifier-syntax">gen</span><span class="plain-syntax">-></span><span class="element-syntax">segmentation</span><span class="plain-syntax">.</span><span class="element-syntax">temporarily_diverted_to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">gen</span><span class="plain-syntax">-></span><span class="element-syntax">segmentation</span><span class="plain-syntax">.</span><span class="element-syntax">temporarily_diverted</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -197,7 +197,7 @@ well the entire tree by the end.
|
|||
<span class="definition-keyword">define</span> <span class="constant-syntax">VNODE_ALLC</span><span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_THROUGH_INTER_CHILDREN</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">) </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Vanilla::node</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">Vanilla::node</span></span>:<br/><a href="2-vnl.html#SP2">§2</a><br/>Inform 6 Code - <a href="4-i6c2.html#SP2">§2</a>, <a href="4-i6c2.html#SP4">§4</a>, <a href="4-i6c2.html#SP5">§5</a>, <a href="4-i6c2.html#SP5_1">§5.1</a>, <a href="4-i6c2.html#SP5_2">§5.2</a>, <a href="4-i6c2.html#SP5_3">§5.3</a>, <a href="4-i6c2.html#SP6_5_1">§6.5.1</a>, <a href="4-i6c2.html#SP6_5_3">§6.5.3</a>, <a href="4-i6c2.html#SP6_5_10">§6.5.10</a><br/>C References - <a href="5-crf.html#SP2">§2</a><br/>C Assembly - <a href="5-cas.html#SP3">§3</a><br/>C Program Control - <a href="5-cpc.html#SP1_1">§1.1</a>, <a href="5-cpc.html#SP1_8">§1.8</a>, <a href="5-cpc.html#SP2">§2</a><br/>C Conditions - <a href="5-ccn.html#SP2">§2</a>, <a href="5-ccn.html#SP2_1">§2.1</a>, <a href="5-ccn.html#SP2_2">§2.2</a><br/>C Function Model - <a href="5-cfm.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_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Vanilla::node</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">Vanilla::node</span></span>:<br/><a href="2-vnl.html#SP2">§2</a><br/>Inform 6 Code - <a href="4-i6c2.html#SP2">§2</a>, <a href="4-i6c2.html#SP4">§4</a>, <a href="4-i6c2.html#SP5">§5</a>, <a href="4-i6c2.html#SP6_5_1">§6.5.1</a>, <a href="4-i6c2.html#SP6_5_3">§6.5.3</a>, <a href="4-i6c2.html#SP6_5_10">§6.5.10</a><br/>C References - <a href="5-crf.html#SP2">§2</a><br/>C Assembly - <a href="5-cas.html#SP3">§3</a><br/>C Program Control - <a href="5-cpc.html#SP1_1">§1.1</a>, <a href="5-cpc.html#SP1_8">§1.8</a>, <a href="5-cpc.html#SP2">§2</a><br/>C Conditions - <a href="5-ccn.html#SP2">§2</a>, <a href="5-ccn.html#SP2_1">§2.1</a>, <a href="5-ccn.html#SP2_2">§2.2</a><br/>C Function Model - <a href="5-cfm.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_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="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">-></span><span class="identifier-syntax">W</span><span class="plain-syntax">.</span><span class="identifier-syntax">data</span><span class="plain-syntax">[</span><span class="identifier-syntax">ID_IFLD</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">CONSTANT_IST:</span><span class="plain-syntax"> </span><a href="2-vc.html#SP1" class="function-link"><span class="function-syntax">VanillaConstants::constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
||||
|
|
|
@ -317,18 +317,11 @@ unless we want to save the result. (See the Z-Machine Standards Document.)
|
|||
As a dodge, we use the Inform 6 statement <span class="extract"><span class="extract-syntax">read X Y</span></span> instead.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The three pseudo-opcodes <span class="extract"><span class="extract-syntax">@provides_gprop</span></span>, <span class="extract"><span class="extract-syntax">@read_gprop</span></span> and <span class="extract"><span class="extract-syntax">@write_gprop</span></span> are
|
||||
however not valid for either Z or G.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">I6TargetCode::invoke_opcode</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">I6TargetCode::invoke_opcode</span></span>:<br/><a href="4-i6c2.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">code_generator</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgt</span><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><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">operand_count</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> **</span><span class="identifier-syntax">operands</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">label</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">label_sense</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">void_context</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@provides_gprop"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="4-i6c2.html#SP5_1" class="named-paragraph-link"><span class="named-paragraph">Invoke special provides_gprop</span><span class="named-paragraph-number">5.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@read_gprop"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="4-i6c2.html#SP5_2" class="named-paragraph-link"><span class="named-paragraph">Invoke special read_gprop</span><span class="named-paragraph-number">5.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@write_gprop"</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="4-i6c2.html#SP5_3" class="named-paragraph-link"><span class="named-paragraph">Invoke special write_gprop</span><span class="named-paragraph-number">5.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@aread"</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"read"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">opcode</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">opc</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="identifier-syntax">opc</span><span class="plain-syntax"> < </span><span class="identifier-syntax">operand_count</span><span class="plain-syntax">; </span><span class="identifier-syntax">opc</span><span class="plain-syntax">++) {</span>
|
||||
|
@ -343,142 +336,6 @@ however not valid for either Z or G.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">void_context</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">";\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5_1" class="paragraph-anchor"></a><b>§5.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Invoke special provides_gprop</span><span class="named-paragraph-number">5.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">obj</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::select_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">operands</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::deselect_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::select_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">obj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">operands</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::deselect_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::select_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">operands</span><span class="plain-syntax">[2]);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::deselect_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::select_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">operands</span><span class="plain-syntax">[3]);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::deselect_temporary</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="identifier-syntax">I6_GEN_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">value_ranges_needed</span><span class="plain-syntax">) = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I6_GEN_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">value_property_holders_needed</span><span class="plain-syntax">) = </span><span class="identifier-syntax">TRUE</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">"if (%S == OBJECT_TY) {\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</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">" if ((%S) && (metaclass(%S) == Object)) {\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">obj</span><span class="plain-syntax">, </span><span class="identifier-syntax">obj</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">" if ((%S-->0 == 2) || (%S provides %S-->1)) {\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">obj</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" %S = 1;\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</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">" } else {\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" %S = 0;\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" }\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" } else {\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" %S = 0;\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" }\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"} else {\n"</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">" if ((%S >= 1) && (%S <= value_ranges-->%S)) {\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">obj</span><span class="plain-syntax">, </span><span class="identifier-syntax">obj</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</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">" holder = value_property_holders-->%S;\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</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">" if ((holder) && (holder provides %S-->1)) {\n"</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" %S = 1;\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</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">" } else {\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" %S = 0;\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" }\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" } else {\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" %S = 0;\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" }\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"}\n"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">obj</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-i6c2.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_2" class="paragraph-anchor"></a><b>§5.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Invoke special read_gprop</span><span class="named-paragraph-number">5.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">obj</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::select_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">operands</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::deselect_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::select_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">obj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">operands</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::deselect_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::select_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">operands</span><span class="plain-syntax">[2]);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::deselect_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::select_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">operands</span><span class="plain-syntax">[3]);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::deselect_temporary</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="identifier-syntax">I6_GEN_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">value_property_holders_needed</span><span class="plain-syntax">) = </span><span class="identifier-syntax">TRUE</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">"if (%S == OBJECT_TY) {\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</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">" if (%S-->0 == 2) {\n"</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" if (%S has %S-->1) %S = 1; else %S = 0;\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">obj</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</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">" } else {\n"</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">" if (%S-->1 == door_to) %S = %S.(%S-->1)();\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">obj</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" else %S = %S.(%S-->1);\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">obj</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" }\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"} else {\n"</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">" holder = value_property_holders-->%S;\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" %S = (holder.(%S-->1))-->(%S+COL_HSIZE);\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">obj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"}\n"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">obj</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-i6c2.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_3" class="paragraph-anchor"></a><b>§5.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Invoke special write_gprop</span><span class="named-paragraph-number">5.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">obj</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::select_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">operands</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::deselect_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::select_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">obj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">operands</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::deselect_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::select_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">operands</span><span class="plain-syntax">[2]);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::deselect_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::select_temporary</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">operands</span><span class="plain-syntax">[3]);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cg.html#SP11" class="function-link"><span class="function-syntax">CodeGen::deselect_temporary</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="identifier-syntax">I6_GEN_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">value_property_holders_needed</span><span class="plain-syntax">) = </span><span class="identifier-syntax">TRUE</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">"if (%S == OBJECT_TY) {\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</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">" if (%S-->0 == 2) {\n"</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" if (%S) give %S %S-->1; else give %S ~(%S-->1);\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">obj</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">obj</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" } else {\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" %S.(%S-->1) = %S;\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">obj</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" }\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"} else {\n"</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">" ((value_property_holders-->%S).(%S-->1))-->(%S+COL_HSIZE) = %S;\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="identifier-syntax">obj</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"}\n"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">obj</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-i6c2.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -557,7 +414,7 @@ however not valid for either Z or G.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">XPROPERTYEXISTS_BIP:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PROPERTYEXISTS_BIP:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I6_GEN_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">value_ranges_needed</span><span class="plain-syntax">) = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I6_GEN_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">value_property_holders_needed</span><span class="plain-syntax">) = </span><span class="identifier-syntax">TRUE</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">"(_final_provides("</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="constant-syntax">VNODE_2C</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="constant-syntax">VNODE_3C</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>
|
||||
|
@ -748,7 +605,7 @@ however not valid for either Z or G.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_next_is_a_give</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"give "</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">" %S"</span><span class="plain-syntax">, </span><a href="4-i6c2.html#SP6_5_2" class="function-link"><span class="function-syntax">I6TargetCode::inner_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"give "</span><span class="plain-syntax">); </span><span class="constant-syntax">VNODE_2C</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" %S"</span><span class="plain-syntax">, </span><a href="4-i6c2.html#SP6_5_2" class="function-link"><span class="function-syntax">I6TargetCode::inner_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">)); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-i6c2.html#SP6_3">§6.3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_3_2" class="paragraph-anchor"></a><b>§6.3.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write attribute take</span><span class="named-paragraph-number">6.3.2</span></span><span class="comment-syntax"> =</span>
|
||||
|
@ -756,7 +613,7 @@ however not valid for either Z or G.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_next_is_a_take</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"give "</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">" ~%S"</span><span class="plain-syntax">, </span><a href="4-i6c2.html#SP6_5_2" class="function-link"><span class="function-syntax">I6TargetCode::inner_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"give "</span><span class="plain-syntax">); </span><span class="constant-syntax">VNODE_2C</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" ~%S"</span><span class="plain-syntax">, </span><a href="4-i6c2.html#SP6_5_2" class="function-link"><span class="function-syntax">I6TargetCode::inner_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">)); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-i6c2.html#SP6_3">§6.3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_3_3" class="paragraph-anchor"></a><b>§6.3.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write property value</span><span class="named-paragraph-number">6.3.3</span></span><span class="comment-syntax"> =</span>
|
||||
|
@ -764,7 +621,7 @@ however not valid for either Z or G.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_next_is_a_ref</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"_final_write_pval("</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="constant-syntax">VNODE_2C</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">", "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"_final_write_pval("</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="constant-syntax">VNODE_2C</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="constant-syntax">VNODE_3C</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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-i6c2.html#SP6_3">§6.3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_3_4" class="paragraph-anchor"></a><b>§6.3.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Evaluate property value</span><span class="named-paragraph-number">6.3.4</span></span><span class="comment-syntax"> =</span>
|
||||
|
@ -772,16 +629,17 @@ however not valid for either Z or G.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><a href="4-i6c2.html#SP6_5_2" class="function-link"><span class="function-syntax">I6TargetCode::pval_case</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">1</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="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">" has %S"</span><span class="plain-syntax">, </span><a href="4-i6c2.html#SP6_5_2" class="function-link"><span class="function-syntax">I6TargetCode::inner_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</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="constant-syntax">2</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="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">".%S"</span><span class="plain-syntax">, </span><a href="4-i6c2.html#SP6_5_2" class="function-link"><span class="function-syntax">I6TargetCode::inner_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</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="constant-syntax">3</span><span class="plain-syntax">: </span><a href="4-i6c2.html#SP6_5_1" class="function-link"><span class="function-syntax">I6TargetCode::comparison_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">InterTree::first_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="identifier-syntax">InterTree::second_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="constant-syntax">0</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="constant-syntax">1</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="constant-syntax">VNODE_2C</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" has %S"</span><span class="plain-syntax">, </span><a href="4-i6c2.html#SP6_5_2" class="function-link"><span class="function-syntax">I6TargetCode::inner_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</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="constant-syntax">2</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="constant-syntax">VNODE_2C</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">".%S"</span><span class="plain-syntax">, </span><a href="4-i6c2.html#SP6_5_2" class="function-link"><span class="function-syntax">I6TargetCode::inner_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</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="constant-syntax">3</span><span class="plain-syntax">: </span><span class="identifier-syntax">I6_GEN_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">value_property_holders_needed</span><span class="plain-syntax">) = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="4-i6c2.html#SP6_5_1" class="function-link"><span class="function-syntax">I6TargetCode::comparison_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">InterTree::first_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="identifier-syntax">InterTree::second_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="identifier-syntax">InterTree::third_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="constant-syntax">0</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-i6c2.html#SP6_3">§6.3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6_5_1" class="paragraph-anchor"></a><b>§6.5.1. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">I6TargetCode::comparison_r</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">I6TargetCode::comparison_r</span></span>:<br/><a href="4-i6c2.html#SP6_3_4">§6.3.4</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">I6TargetCode::comparison_r</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">I6TargetCode::comparison_r</span></span>:<br/><a href="4-i6c2.html#SP6_3_4">§6.3.4</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_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">X</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Y</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">depth</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Y</span><span class="plain-syntax">-></span><span class="identifier-syntax">W</span><span class="plain-syntax">.</span><span class="identifier-syntax">data</span><span class="plain-syntax">[</span><span class="identifier-syntax">ID_IFLD</span><span class="plain-syntax">] == </span><span class="identifier-syntax">INV_IST</span><span class="plain-syntax">) {</span>
|
||||
|
@ -790,9 +648,9 @@ however not valid for either Z or G.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">ybip</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Primitives::to_bip</span><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">-></span><span class="element-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">prim</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ybip</span><span class="plain-syntax"> == </span><span class="identifier-syntax">ALTERNATIVE_BIP</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">depth</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"((or_tmp_var = "</span><span class="plain-syntax">); </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">X</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">") && (("</span><span class="plain-syntax">); }</span>
|
||||
<span class="plain-syntax"> </span><a href="4-i6c2.html#SP6_5_1" class="function-link"><span class="function-syntax">I6TargetCode::comparison_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">InterTree::first_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">Y</span><span class="plain-syntax">), </span><span class="identifier-syntax">depth</span><span class="plain-syntax">+1);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-i6c2.html#SP6_5_1" class="function-link"><span class="function-syntax">I6TargetCode::comparison_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">InterTree::first_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">Y</span><span class="plain-syntax">), </span><span class="identifier-syntax">depth</span><span class="plain-syntax">+1);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">") || ("</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-i6c2.html#SP6_5_1" class="function-link"><span class="function-syntax">I6TargetCode::comparison_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">InterTree::second_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">Y</span><span class="plain-syntax">), </span><span class="identifier-syntax">depth</span><span class="plain-syntax">+1);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-i6c2.html#SP6_5_1" class="function-link"><span class="function-syntax">I6TargetCode::comparison_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">InterTree::second_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">Y</span><span class="plain-syntax">), </span><span class="identifier-syntax">depth</span><span class="plain-syntax">+1);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">depth</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">")))"</span><span class="plain-syntax">); }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -803,6 +661,8 @@ however not valid for either Z or G.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">2</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">X</span><span class="plain-syntax">) </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">X</span><span class="plain-syntax">); </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"or_tmp_var"</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">".%S"</span><span class="plain-syntax">, </span><a href="4-i6c2.html#SP6_5_2" class="function-link"><span class="function-syntax">I6TargetCode::inner_name_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">Y</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="constant-syntax">3</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">"_final_read_pval("</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">X</span><span class="plain-syntax">) </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">X</span><span class="plain-syntax">); </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"or_tmp_var"</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="plain-syntax"> </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">Y</span><span class="plain-syntax">);</span>
|
||||
|
@ -815,13 +675,13 @@ however not valid for either Z or G.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">I6TargetCode::pval_case</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">I6TargetCode::pval_case</span></span>:<br/><a href="4-i6c2.html#SP6_2_1">§6.2.1</a>, <a href="4-i6c2.html#SP6_2_1_1">§6.2.1.1</a>, <a href="4-i6c2.html#SP6_3_4">§6.3.4</a></span></button><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="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">-></span><span class="identifier-syntax">W</span><span class="plain-syntax">.</span><span class="identifier-syntax">data</span><span class="plain-syntax">[</span><span class="identifier-syntax">ID_IFLD</span><span class="plain-syntax">] == </span><span class="identifier-syntax">REFERENCE_IST</span><span class="plain-syntax">) </span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterTree::first_child</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">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop_node</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterTree::second_child</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">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop_node</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterTree::third_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-i6c2.html#SP6_5_2" class="function-link"><span class="function-syntax">I6TargetCode::pval_case_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop_node</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">I6TargetCode::inner_name</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">I6TargetCode::inner_name</span></span>:<br/><a href="4-i6c2.html#SP6_3_1">§6.3.1</a>, <a href="4-i6c2.html#SP6_3_2">§6.3.2</a>, <a href="4-i6c2.html#SP6_3_4">§6.3.4</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_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="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">-></span><span class="identifier-syntax">W</span><span class="plain-syntax">.</span><span class="identifier-syntax">data</span><span class="plain-syntax">[</span><span class="identifier-syntax">ID_IFLD</span><span class="plain-syntax">] == </span><span class="identifier-syntax">REFERENCE_IST</span><span class="plain-syntax">) </span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterTree::first_child</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">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop_node</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterTree::second_child</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">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop_node</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterTree::third_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-i6c2.html#SP6_5_2" class="function-link"><span class="function-syntax">I6TargetCode::inner_name_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">prop_node</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -1073,15 +933,28 @@ then the result.
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">I6TargetCode::end_generation</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">I6TargetCode::end_generation</span></span>:<br/>Generating Inform 6 - <a href="4-fi6.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">code_generator</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cgt</span><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><span class="reserved-syntax">segmentation_pos</span><span class="plain-syntax"> </span><span class="identifier-syntax">saved</span><span class="plain-syntax"> = </span><a href="2-cg.html#SP10" class="function-link"><span class="function-syntax">CodeGen::select</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="constant-syntax">functions_I7CGS</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="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[ _final_read_pval o p t;\n"</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">"[ _final_read_pval K o p t;\n"</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">" if (K == OBJECT_TY) {\n"</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">" t = p-->0; p = p-->1; ! print \"has \", o, \" \", p, \"^\";\n"</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">" if (t == 2) { if (o has p) rtrue; rfalse; }\n"</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">" if (o provides p) return o.p; rfalse;\n"</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">" if (o provides p) {\n"</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">" if (p == door_to) return o.p();\n"</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">" return o.p;\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" }\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" rfalse;\n"</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">" } else {\n"</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">" t = value_property_holders-->K;\n"</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">" return (t.(p-->1))-->(o+COL_HSIZE);\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" }\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"];\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[ _final_write_pval o p v t;\n"</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">"[ _final_write_pval K o p v t;\n"</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">" if (K == OBJECT_TY) {\n"</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">" t = p-->0; p = p-->1; ! print \"give \", o, \" \", p, \"^\";\n"</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">" if (t == 2) { if (v) give o p; else give o ~p; }\n"</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">" else { if (o provides p) o.p = v; }\n"</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">" } else {\n"</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">" ((value_property_holders-->K).(p-->1))-->(o+COL_HSIZE) = v;\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" }\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"];\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"[ _final_read_paddr o p v t;\n"</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">" t = p-->0; p = p-->1; ! print \"give \", o, \" \", p, \"^\";\n"</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -131,10 +131,6 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_OPERANDS_IN_INTER_ASSEMBLY</span><span class="plain-syntax">];</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><16; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@provides_gprop"</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[4] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="identifier-syntax">hacky_extras</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">C_GEN_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">objdata</span><span class="plain-syntax">.</span><span class="element-syntax">value_ranges_needed</span><span class="plain-syntax">) = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">C_GEN_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">objdata</span><span class="plain-syntax">.</span><span class="element-syntax">value_property_holders_needed</span><span class="plain-syntax">) = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">opcode</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"@read_gprop"</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">store_this_operand</span><span class="plain-syntax">[4] = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="identifier-syntax">hacky_extras</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">C_GEN_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">objdata</span><span class="plain-syntax">.</span><span class="element-syntax">value_property_holders_needed</span><span class="plain-syntax">) = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -245,7 +241,7 @@ function togglePopup(material_id) {
|
|||
<span 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_OBJECT_TY</span><span 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_value_ranges</span><span 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_value_property_holders</span><span 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_A_door_to</span><span 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_COL_HSIZE</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">glulx_read_gprop</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">K</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">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">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">val</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_mgl_OBJECT_TY</span><span 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_value_ranges</span><span 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_value_property_holders</span><span 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_A_door_to</span><span 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_COL_HSIZE</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">glulx_write_gprop</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">K</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">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">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">val</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">glulx_write_gprop</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">K</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">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">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">val</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">form</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_mgl_OBJECT_TY</span><span 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_value_ranges</span><span 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_value_property_holders</span><span 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_A_door_to</span><span 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_COL_HSIZE</span><span class="Extracts-plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is part of the extract file inform7_clib.h.</li></ul>
|
||||
|
@ -304,21 +300,29 @@ function togglePopup(material_id) {
|
|||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">if</span><span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">val</span><span class="Extracts-plain-syntax">) *</span><span class="Extracts-identifier-syntax">val</span><span 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_read_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">i7_read_prop_value</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">holder</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">pr</span><span class="Extracts-plain-syntax">), (</span><span class="Extracts-identifier-syntax">obj</span><span class="Extracts-plain-syntax"> + </span><span class="Extracts-identifier-syntax">i7_mgl_COL_HSIZE</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">glulx_write_gprop</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">K</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">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">pr</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">val</span><span 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_read_gprop</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">K</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">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">pr</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_mgl_OBJECT_TY</span><span 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_value_ranges</span><span 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_value_property_holders</span><span 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_A_door_to</span><span 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_COL_HSIZE</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">val</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">glulx_read_gprop</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">K</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">obj</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">pr</span><span class="Extracts-plain-syntax">, &</span><span class="Extracts-identifier-syntax">val</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7_mgl_OBJECT_TY</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7_mgl_value_ranges</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7_mgl_value_property_holders</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7_mgl_A_door_to</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7_mgl_COL_HSIZE</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">val</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">glulx_write_gprop</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">K</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">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">pr</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">val</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">form</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_mgl_OBJECT_TY</span><span 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_value_ranges</span><span 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_value_property_holders</span><span 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_A_door_to</span><span 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_COL_HSIZE</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">K</span><span class="Extracts-plain-syntax"> == </span><span class="Extracts-identifier-syntax">i7_mgl_OBJECT_TY</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_read_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">pr</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">2</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">val</span><span class="Extracts-plain-syntax">) {</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_change_prop_value</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">obj</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">pr</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-constant-syntax">1</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7_lvalue_SET</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_change_prop_value</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">K</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">obj</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">pr</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">form</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_change_prop_value</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">obj</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">pr</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_lvalue_SET</span><span class="Extracts-plain-syntax">);</span>
|
||||
<span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">i7_change_prop_value</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">K</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">obj</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">pr</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">form</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_change_prop_value</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">obj</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">pr</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">val</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7_lvalue_SET</span><span class="Extracts-plain-syntax">));</span>
|
||||
<span class="Extracts-plain-syntax"> (</span><span class="Extracts-identifier-syntax">i7_change_prop_value</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">K</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">obj</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">pr</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">val</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">form</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">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">holder</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_read_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">i7_mgl_value_property_holders</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">K</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">i7_read_prop_value</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">holder</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">pr</span><span class="Extracts-plain-syntax">), (</span><span class="Extracts-identifier-syntax">obj</span><span class="Extracts-plain-syntax"> + </span><span class="Extracts-identifier-syntax">i7_mgl_COL_HSIZE</span><span class="Extracts-plain-syntax">), </span><span class="Extracts-identifier-syntax">val</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7_lvalue_SET</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">i7_read_prop_value</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">holder</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">pr</span><span class="Extracts-plain-syntax">), (</span><span class="Extracts-identifier-syntax">obj</span><span class="Extracts-plain-syntax"> + </span><span class="Extracts-identifier-syntax">i7_mgl_COL_HSIZE</span><span class="Extracts-plain-syntax">), </span><span class="Extracts-identifier-syntax">val</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">form</span><span class="Extracts-plain-syntax">));</span>
|
||||
<span class="Extracts-plain-syntax"> }</span>
|
||||
<span class="Extracts-plain-syntax">}</span>
|
||||
</pre>
|
||||
|
|
|
@ -82,7 +82,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NOT_BIP:</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="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">AND_BIP:</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="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="constant-syntax">VNODE_2C</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">OR_BIP:</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="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="constant-syntax">VNODE_2C</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">XPROPERTYEXISTS_BIP:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PROPERTYEXISTS_BIP:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">C_GEN_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">objdata</span><span class="plain-syntax">.</span><span class="element-syntax">value_ranges_needed</span><span class="plain-syntax">) = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">C_GEN_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">objdata</span><span class="plain-syntax">.</span><span class="element-syntax">value_property_holders_needed</span><span class="plain-syntax">) = </span><span class="identifier-syntax">TRUE</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">"(i7_provides_gprop(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="constant-syntax">VNODE_2C</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="constant-syntax">VNODE_3C</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">", i7_mgl_OBJECT_TY, i7_mgl_value_ranges, i7_mgl_value_property_holders, i7_mgl_A_door_to, i7_mgl_COL_HSIZE))"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
@ -105,14 +105,14 @@ function togglePopup(material_id) {
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="5-ccn.html#SP2" class="function-link"><span class="function-syntax">CConditions::comparison_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">bip</span><span class="plain-syntax">, </span><span class="identifier-syntax">InterTree::first_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="identifier-syntax">InterTree::second_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ccn.html#SP2" class="function-link"><span class="function-syntax">CConditions::comparison_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">bip</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">InterTree::first_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="identifier-syntax">InterTree::second_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ccn.html#SP1">§1</a> (9 times).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">CConditions::comparison_r</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">CConditions::comparison_r</span></span>:<br/><a href="5-ccn.html#SP1_1">§1.1</a><br/>C Object Model - <a href="5-com.html#SP9">§9</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><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">X</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Y</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">depth</span><span class="plain-syntax">) {</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">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">X</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Y</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">depth</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Y</span><span class="plain-syntax">-></span><span class="identifier-syntax">W</span><span class="plain-syntax">.</span><span class="identifier-syntax">data</span><span class="plain-syntax">[</span><span class="identifier-syntax">ID_IFLD</span><span class="plain-syntax">] == </span><span class="identifier-syntax">INV_IST</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Y</span><span class="plain-syntax">-></span><span class="identifier-syntax">W</span><span class="plain-syntax">.</span><span class="identifier-syntax">data</span><span class="plain-syntax">[</span><span class="identifier-syntax">METHOD_INV_IFLD</span><span class="plain-syntax">] == </span><span class="identifier-syntax">INVOKED_PRIMITIVE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prim</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Inv::invokee</span><span class="plain-syntax">(</span><span class="identifier-syntax">Y</span><span class="plain-syntax">);</span>
|
||||
|
@ -120,10 +120,10 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">ybip</span><span class="plain-syntax"> == </span><span class="identifier-syntax">ALTERNATIVE_BIP</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">depth</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"(proc->state.tmp = "</span><span class="plain-syntax">); </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">X</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">", ("</span><span class="plain-syntax">); }</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ccn.html#SP2" class="function-link"><span class="function-syntax">CConditions::comparison_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">bip</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">InterTree::first_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">Y</span><span class="plain-syntax">), </span><span class="identifier-syntax">depth</span><span class="plain-syntax">+1);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ccn.html#SP2" class="function-link"><span class="function-syntax">CConditions::comparison_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">bip</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">InterTree::first_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">Y</span><span class="plain-syntax">), </span><span class="identifier-syntax">depth</span><span class="plain-syntax">+1);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">bip</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NE_BIP</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">bip</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NOTIN_BIP</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" && "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" || "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ccn.html#SP2" class="function-link"><span class="function-syntax">CConditions::comparison_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">bip</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">InterTree::second_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">Y</span><span class="plain-syntax">), </span><span class="identifier-syntax">depth</span><span class="plain-syntax">+1);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ccn.html#SP2" class="function-link"><span class="function-syntax">CConditions::comparison_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">bip</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">InterTree::second_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">Y</span><span class="plain-syntax">), </span><span class="identifier-syntax">depth</span><span class="plain-syntax">+1);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">depth</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) { </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"))"</span><span class="plain-syntax">); }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -134,9 +134,16 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">test_fn</span><span class="plain-syntax"> = </span><a href="5-com.html#SP12" class="function-link"><span class="function-syntax">CObjectModel::test_with_function</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bip</span><span class="plain-syntax">, &</span><span class="identifier-syntax">positive</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">test_fn</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"(%S(proc, "</span><span class="plain-syntax">, </span><span class="identifier-syntax">test_fn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bip</span><span class="plain-syntax"> == </span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-vnl.html#SP3" class="function-link"><span class="function-syntax">Vanilla::node</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</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="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-ccn.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Compile first compared</span><span class="named-paragraph-number">2.1</span></a></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="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-ccn.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Compile second compared</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bip</span><span class="plain-syntax"> == </span><span class="identifier-syntax">PROPERTYVALUE_BIP</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">", i7_mgl_OBJECT_TY, i7_mgl_value_ranges, i7_mgl_value_property_holders, i7_mgl_A_door_to, i7_mgl_COL_HSIZE"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">")"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">positive</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" == 0"</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>
|
||||
|
|
|
@ -858,10 +858,9 @@ which we will then need to write in <span class="extract"><span class="extract-s
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PROPERTYADDRESS_BIP:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_prop_addr(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="constant-syntax">VNODE_2C</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">PROPERTYLENGTH_BIP:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_prop_len(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="constant-syntax">VNODE_2C</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">PROPERTYVALUE_BIP:</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-crf.html#SP3" class="function-link"><span class="function-syntax">CReferences::am_I_a_ref</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="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_change_prop_value(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="constant-syntax">VNODE_2C</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">", "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"glulx_write_gprop(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="constant-syntax">VNODE_2C</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="constant-syntax">VNODE_3C</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">", "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ccn.html#SP2" class="function-link"><span class="function-syntax">CConditions::comparison_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">bip</span><span class="plain-syntax">, </span><span class="identifier-syntax">InterTree::first_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="identifier-syntax">InterTree::second_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="comment-syntax"> WRITE("i7_read_prop_value(proc, "); VNODE_1C; WRITE(", "); VNODE_2C; WRITE(")");</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ccn.html#SP2" class="function-link"><span class="function-syntax">CConditions::comparison_r</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">bip</span><span class="plain-syntax">, </span><span class="identifier-syntax">InterTree::first_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="identifier-syntax">InterTree::second_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="identifier-syntax">InterTree::third_child</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MESSAGE0_BIP:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"i7_mcall_0(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="constant-syntax">VNODE_2C</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>
|
||||
|
@ -887,7 +886,7 @@ and write them.
|
|||
<span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">fn_i7_mgl_CreatePropertyOffsets</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_write_prop_value</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">owner_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">prop_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">val</span><span 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_read_prop_value</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">owner_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">pr_array</span><span 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_change_prop_value</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">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">pr</span><span 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</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">way</span><span 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_change_prop_value</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">K</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">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">pr</span><span 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</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">way</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_give</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">owner</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">prop</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">val</span><span 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_prop_len</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">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">pr</span><span 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_prop_addr</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">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">pr</span><span class="Extracts-plain-syntax">);</span>
|
||||
|
@ -933,7 +932,7 @@ and write them.
|
|||
<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_read_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">address</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_change_prop_value</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">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">pr</span><span 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</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">way</span><span 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_change_prop_value</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">K</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">i7word_t</span><span class="Extracts-plain-syntax"> </span><span class="Extracts-identifier-syntax">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">pr</span><span 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</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">way</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">val</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">i7_read_prop_value</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">obj</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">pr</span><span class="Extracts-plain-syntax">), </span><span class="Extracts-identifier-syntax">new_val</span><span class="Extracts-plain-syntax"> = </span><span class="Extracts-identifier-syntax">val</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">way</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_lvalue_SET</span><span class="Extracts-plain-syntax">: </span><span class="Extracts-identifier-syntax">i7_write_prop_value</span><span class="Extracts-plain-syntax">(</span><span class="Extracts-identifier-syntax">proc</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">obj</span><span class="Extracts-plain-syntax">, </span><span class="Extracts-identifier-syntax">pr</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">new_val</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">break</span><span class="Extracts-plain-syntax">;</span>
|
||||
|
@ -972,7 +971,7 @@ and write them.
|
|||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">CObjectModel::test_with_function</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">CObjectModel::test_with_function</span></span>:<br/>C Conditions - <a href="5-ccn.html#SP2">§2</a></span></button><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="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">positive</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">OFCLASS_BIP:</span><span class="plain-syntax"> *</span><span class="identifier-syntax">positive</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"i7_ofclass"</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">PROPERTYVALUE_BIP:</span><span class="plain-syntax"> *</span><span class="identifier-syntax">positive</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"i7_read_prop_value"</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">PROPERTYVALUE_BIP:</span><span class="plain-syntax"> *</span><span class="identifier-syntax">positive</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"i7_read_gprop"</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">IN_BIP:</span><span class="plain-syntax"> *</span><span class="identifier-syntax">positive</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"i7_in"</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">NOTIN_BIP:</span><span class="plain-syntax"> *</span><span class="identifier-syntax">positive</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"i7_in"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -199,7 +199,10 @@ That's what is done by the "A1 as ref" mode set up above.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<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><a href="5-crf.html#SP2" class="function-link"><span class="function-syntax">CReferences::A1_as_ref</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bip</span><span class="plain-syntax"> == </span><span class="identifier-syntax">STORE_BIP</span><span class="plain-syntax">) { </span><span class="constant-syntax">VNODE_2C</span><span class="plain-syntax">; } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> { </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"0"</span><span class="plain-syntax">); }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">", %S))"</span><span class="plain-syntax">, </span><span class="identifier-syntax">store_form</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">", %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">store_form</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Inter::Reference::node_is_ref_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">gen</span><span class="plain-syntax">-></span><span class="element-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">ref</span><span class="plain-syntax">, </span><span class="identifier-syntax">PROPERTYVALUE_BIP</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">", i7_mgl_OBJECT_TY, i7_mgl_value_ranges, i7_mgl_value_property_holders, i7_mgl_A_door_to, i7_mgl_COL_HSIZE"</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>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-crf.html#SP4_1">§4.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_1_2" class="paragraph-anchor"></a><b>§4.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Handle the ref with C code working either as lvalue or rvalue</span><span class="named-paragraph-number">4.1.2</span></span><span class="comment-syntax"> =</span>
|
||||
|
|
|
@ -1586,6 +1586,7 @@ which until runtime — when its identity will be found in the Inter variabl
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">EmitCode::val_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">total_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">EmitCode::inv</span><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">EmitCode::down</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">EmitCode::val_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">RTKindIDs::weak_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">EmitCode::val_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">var_s</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">multipurpose_function</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">EmitCode::val_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">,</span>
|
||||
|
@ -1795,6 +1796,7 @@ multiplying by \(-1\) is order-reversing.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">EmitCode::inv</span><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">EmitCode::down</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">EmitCode::val_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">RTKindIDs::weak_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">EmitCode::val_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">var_s</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">multipurpose_function</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">EmitCode::val_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">,</span>
|
||||
|
|
|
@ -328,7 +328,7 @@ subkind whose weak type ID is the second value?
|
|||
<ul class="items"><li>(a) <span class="extract"><span class="extract-syntax">primitive !propertyvalue val val -> val</span></span>.
|
||||
</li><li>(b) <span class="extract"><span class="extract-syntax">primitive !propertyaddress val val -> val</span></span>.
|
||||
</li><li>(c) <span class="extract"><span class="extract-syntax">primitive !propertylength val val -> val</span></span>.
|
||||
</li><li>(d) <span class="extract"><span class="extract-syntax">primitive !propertyexists val val -> val</span></span>.
|
||||
</li><li>(d) <span class="extract"><span class="extract-syntax">primitive !propertyexists val val val -> val</span></span>.
|
||||
</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="M-cpiti.html">❮</a></li><li class="progresscurrentchapter">M</li><li class="progresssection"><a href="M-ui.html">ui</a></li><li class="progresssection"><a href="M-ti.html">ti</a></li><li class="progresssection"><a href="M-dpiti.html">dpiti</a></li><li class="progresssection"><a href="M-cpiti.html">cpiti</a></li><li class="progresscurrent">ip</li><li class="progresssection"><a href="M-ia.html">ia</a></li><li class="progresssection"><a href="M-io.html">io</a></li><li class="progresssection"><a href="M-pas.html">pas</a></li><li class="progresssection"><a href="M-rc.html">rc</a></li><li class="progresschapter"><a href="1-mn.html">1</a></li><li class="progressnext"><a href="M-ia.html">❯</a></li></ul></div>
|
||||
|
|
|
@ -162,6 +162,8 @@ of packages of type <span class="extract"><span class="extract-syntax">_relation
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OBJECT_TY_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EmitInterSchemas::find_identifier_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"OBJECT_TY"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">OBJECT_TY_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">obj_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">pr_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -212,6 +212,7 @@ the following.
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">EitherOrProperties::get_negation</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)));</span>
|
||||
|
@ -220,6 +221,7 @@ the following.
|
|||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
|
|
|
@ -133,7 +133,7 @@ like variables. That's what makes them intermediate.)
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">invented</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTKindIDs::weak_iname</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">RTKindIDs::weak_iname</span></span>:<br/><a href="5-ki.html#SP2">§2</a>, <a href="5-ki.html#SP6">§6</a>, <a href="5-ki.html#SP9_1">§9.1</a><br/>The Heap - <a href="2-th.html#SP6">§6</a><br/>Kind Constructors - <a href="5-kc.html#SP10_8_1">§10.8.1</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2_10_2_1">§1.2.10.2.1</a>, <a href="7-cgt.html#SP1_2_10_2_2">§1.2.10.2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTKindIDs::weak_iname</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">RTKindIDs::weak_iname</span></span>:<br/><a href="5-ki.html#SP2">§2</a>, <a href="5-ki.html#SP6">§6</a>, <a href="5-ki.html#SP9_1">§9.1</a><br/>Emit Code - <a href="2-ec.html#SP8">§8</a><br/>The Heap - <a href="2-th.html#SP6">§6</a><br/>Kind Constructors - <a href="5-kc.html#SP10_8_1">§10.8.1</a><br/>Command Grammar Tokens - <a href="7-cgt.html#SP1_2_1">§1.2.1</a>, <a href="7-cgt.html#SP1_2_2">§1.2.2</a>, <a href="7-cgt.html#SP1_2_3">§1.2.3</a>, <a href="7-cgt.html#SP1_2_4">§1.2.4</a>, <a href="7-cgt.html#SP1_2_5">§1.2.5</a>, <a href="7-cgt.html#SP1_2_6">§1.2.6</a>, <a href="7-cgt.html#SP1_2_7">§1.2.7</a>, <a href="7-cgt.html#SP1_2_9">§1.2.9</a>, <a href="7-cgt.html#SP1_2_10_2_1">§1.2.10.2.1</a>, <a href="7-cgt.html#SP1_2_10_2_2">§1.2.10.2.2</a><br/>Parse Name Properties - <a href="7-pnp.html#SP8">§8</a>, <a href="7-pnp.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) { </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-kc.html#SP2" class="function-link"><span class="function-syntax">RTKindConstructors::UNKNOWN_iname</span></a><span class="plain-syntax">(); }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_subkind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)) </span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -241,6 +241,7 @@ world model only if X is a container, so we check that.
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SELF_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">CONTAINER_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -263,6 +264,7 @@ world model only if X is a supporter, so we check that.
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SELF_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">SUPPORTER_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -286,6 +288,7 @@ is a person, so we check that.
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SELF_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ANIMATE_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -336,6 +339,7 @@ recycle.
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-></span><span class="element-syntax">rv_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P_worn</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -352,6 +356,7 @@ recycle.
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-></span><span class="element-syntax">rv_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P_worn</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -432,6 +437,7 @@ and so on until one of them matches.
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP12" class="function-link"><span class="function-syntax">EmitCode::ref_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-></span><span class="element-syntax">rv_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SELF_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">COMPONENT_CHILD_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -479,6 +485,7 @@ and so on until one of them matches.
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP12" class="function-link"><span class="function-syntax">EmitCode::ref_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-></span><span class="element-syntax">rv_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-></span><span class="element-syntax">rv_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">COMPONENT_SIBLING_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -520,6 +527,7 @@ because then, of course, it would be worn by P and not carried by P:
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SELF_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P_worn</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -540,6 +548,7 @@ because then, of course, it would be worn by P and not carried by P:
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SELF_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P_worn</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -606,6 +615,7 @@ properties rather than the object tree implement the relation.
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP12" class="function-link"><span class="function-syntax">EmitCode::ref_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-></span><span class="element-syntax">rv_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SELF_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">COMPONENT_PARENT_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -740,7 +750,7 @@ if it works.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IF_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">XPROPERTYEXISTS_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYEXISTS_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SELF_HL</span><span class="plain-syntax">));</span>
|
||||
|
@ -754,6 +764,7 @@ if it works.
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP12" class="function-link"><span class="function-syntax">EmitCode::ref_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-></span><span class="element-syntax">rv_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SELF_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -792,7 +803,7 @@ if it works.
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">AND_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">XPROPERTYEXISTS_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYEXISTS_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-></span><span class="element-syntax">rv_s</span><span class="plain-syntax">);</span>
|
||||
|
@ -802,6 +813,7 @@ if it works.
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">kit</span><span class="plain-syntax">-></span><span class="element-syntax">rv_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
|
|
|
@ -939,11 +939,13 @@ or vice versa, then they are distinguishable;
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PARSER_ONE_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PARSER_TWO_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -953,11 +955,13 @@ or vice versa, then they are distinguishable;
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PARSER_ONE_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PARSER_TWO_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -1087,6 +1091,7 @@ alter the value of <span class="extract"><span class="extract-syntax">self</span
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SELF_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -1107,6 +1112,7 @@ alter the value of <span class="extract"><span class="extract-syntax">self</span
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SELF_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -1120,6 +1126,7 @@ alter the value of <span class="extract"><span class="extract-syntax">self</span
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SELF_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -1138,6 +1145,7 @@ alter the value of <span class="extract"><span class="extract-syntax">self</span
|
|||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PROPERTYVALUE_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-ki.html#SP1" class="function-link"><span class="function-syntax">RTKindIDs::weak_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SELF_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-prp.html#SP2" class="function-link"><span class="function-syntax">RTProperties::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
Total memory consumption was 392665K = 383 MB
|
||||
Total memory consumption was 394295K = 385 MB
|
||||
|
||||
60.5% was used for 2005121 objects, in 372387 frames in 297 x 800K = 237600K = 232 MB:
|
||||
60.6% was used for 2005527 objects, in 372397 frames in 299 x 800K = 239200K = 233 MB:
|
||||
|
||||
10.3% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
|
||||
7.2% text_stream_array 5183 x 100 = 518300 objects, 29190656 bytes
|
||||
4.3% linked_list 30996 objects, 17357760 bytes
|
||||
7.2% text_stream_array 5187 x 100 = 518700 objects, 29213184 bytes
|
||||
4.2% linked_list 30996 objects, 17357760 bytes
|
||||
3.9% inter_symbol_array 140 x 1024 = 143360 objects, 16060800 bytes
|
||||
2.5% parse_node 129368 objects, 10349440 bytes
|
||||
1.8% verb_conjugation 160 objects, 7425280 bytes
|
||||
|
@ -18,7 +18,7 @@ Total memory consumption was 392665K = 383 MB
|
|||
0.4% package_request 21137 objects, 1860056 bytes
|
||||
0.4% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes
|
||||
0.4% inter_symbols_table 26565 objects, 1700160 bytes
|
||||
0.3% dictionary 33267 objects, 1596816 bytes
|
||||
0.3% dictionary 33273 objects, 1597104 bytes
|
||||
0.3% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes
|
||||
0.3% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes
|
||||
0.3% dict_entry_array 402 x 100 = 40200 objects, 1299264 bytes
|
||||
|
@ -235,18 +235,18 @@ Total memory consumption was 392665K = 383 MB
|
|||
---- loop_over_scope 1 object, 40 bytes
|
||||
---- I6_generation_data 1 object, 40 bytes
|
||||
|
||||
39.4% was used for memory not allocated for objects:
|
||||
39.3% was used for memory not allocated for objects:
|
||||
|
||||
20.5% text stream storage 82823468 bytes in 536298 claims
|
||||
4.5% dictionary storage 18272768 bytes in 33267 claims
|
||||
20.5% text stream storage 82849772 bytes in 536639 claims
|
||||
4.5% dictionary storage 18276864 bytes in 33273 claims
|
||||
---- sorting 736 bytes in 3 claims
|
||||
1.7% source text 7200000 bytes in 3 claims
|
||||
2.6% source text details 10800000 bytes in 2 claims
|
||||
---- documentation fragments 262144 bytes in 1 claim
|
||||
---- linguistic stock array 81920 bytes in 2 claims
|
||||
---- small word set array 105600 bytes in 22 claims
|
||||
1.0% inter symbols storage 4175568 bytes in 27678 claims
|
||||
4.1% inter bytecode storage 16802740 bytes in 14 claims
|
||||
1.0% inter symbols storage 4176064 bytes in 27679 claims
|
||||
4.1% inter bytecode storage 16802732 bytes in 14 claims
|
||||
4.0% inter links storage 16174208 bytes in 266 claims
|
||||
---- inter tree location list storage 191232 bytes in 32 claims
|
||||
0.4% instance-of-kind counting 1695204 bytes in 1 claim
|
||||
|
@ -255,5 +255,5 @@ Total memory consumption was 392665K = 383 MB
|
|||
---- code generation workspace for objects 1336 bytes in 4 claims
|
||||
---- emitter array storage 161792 bytes in 2062 claims
|
||||
|
||||
18.0% was overhead - 72777416 bytes = 71071K = 69 MB
|
||||
18.4% was overhead - 74393000 bytes = 72649K = 70 MB
|
||||
|
||||
|
|
|
@ -1,38 +1,37 @@
|
|||
100.0% in inform7 run
|
||||
55.0% in compilation to Inter
|
||||
40.1% in //Sequence::undertake_queued_tasks//
|
||||
3.5% in //MajorNodes::pre_pass//
|
||||
2.3% in //MajorNodes::pass_1//
|
||||
2.1% in //RTPhrasebook::compile_entries//
|
||||
55.3% in compilation to Inter
|
||||
40.0% in //Sequence::undertake_queued_tasks//
|
||||
3.4% in //MajorNodes::pre_pass//
|
||||
2.5% in //MajorNodes::pass_1//
|
||||
2.0% in //RTPhrasebook::compile_entries//
|
||||
1.3% in //ImperativeDefinitions::assess_all//
|
||||
1.1% in //RTKindConstructors::compile//
|
||||
0.5% in //MajorNodes::pass_2//
|
||||
0.3% in //ImperativeDefinitions::compile_first_block//
|
||||
0.3% in //Sequence::undertake_queued_tasks//
|
||||
0.3% in //Sequence::undertake_queued_tasks//
|
||||
0.3% in //World::stage_V//
|
||||
1.2% in //RTKindConstructors::compile//
|
||||
0.4% in //ImperativeDefinitions::compile_first_block//
|
||||
0.4% in //MajorNodes::pass_2//
|
||||
0.4% in //Sequence::undertake_queued_tasks//
|
||||
0.4% in //Sequence::undertake_queued_tasks//
|
||||
0.4% in //World::stage_V//
|
||||
0.2% in //CompletionModule::compile//
|
||||
0.1% in //InferenceSubjects::emit_all//
|
||||
0.1% in //RTKindConstructors::compile_permissions//
|
||||
0.1% in //Task::make_built_in_kind_constructors//
|
||||
0.1% in //World::stages_II_and_III//
|
||||
1.6% not specifically accounted for
|
||||
42.9% in running Inter pipeline
|
||||
13.0% in step preparation
|
||||
9.5% in inter step 7/16: consolidate-text
|
||||
7.8% in inter step 2/16: link
|
||||
7.1% in inter step 16/16: generate inform6 -> auto.inf
|
||||
1.8% not specifically accounted for
|
||||
42.7% in running Inter pipeline
|
||||
12.1% in step preparation
|
||||
9.6% 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.5% in inter step 11/16: make-identifiers-unique
|
||||
0.3% in inter step 12/16: reconcile-verbs
|
||||
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 13/16: eliminate-redundant-labels
|
||||
0.1% in inter step 3/16: merge-template <- none
|
||||
0.1% in inter step 4/16: parse-linked-matter
|
||||
0.1% in inter step 5/16: resolve-conditional-compilation
|
||||
1.8% not specifically accounted for
|
||||
1.7% in supervisor
|
||||
2.9% not specifically accounted for
|
||||
1.6% in supervisor
|
||||
0.3% not specifically accounted for
|
||||
|
|
|
@ -277,10 +277,7 @@ it doesn't mean it actually does have.
|
|||
}
|
||||
|
||||
.PermissionFound;
|
||||
|
||||
if (K >> obj provides q) rtrue;
|
||||
! @provides_gprop K obj q a;
|
||||
! if (a) rtrue;
|
||||
|
||||
if (issue_rtp) RunTimeProblem(RTP_UNSET, obj, q);
|
||||
rfalse;
|
||||
|
@ -322,8 +319,7 @@ the one which the player is on.
|
|||
=
|
||||
[ GProperty K V pr err holder val;
|
||||
if (ProvidesProperty(K, V, pr, 1-err)) {
|
||||
@read_gprop K V pr val;
|
||||
return val;
|
||||
return (K >> V . pr);
|
||||
}
|
||||
return 0;
|
||||
];
|
||||
|
@ -336,7 +332,7 @@ converted from an rvalue to an lvalue.
|
|||
=
|
||||
[ WriteGProperty K V pr val holder;
|
||||
if (ProvidesProperty(K, V, pr, true)) {
|
||||
@write_gprop K V pr val;
|
||||
K >> V . pr = val;
|
||||
}
|
||||
];
|
||||
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -495,7 +495,7 @@ are a bit more careful about the senses.
|
|||
if (flag == false) { if (i in toroom) remove i; }
|
||||
}
|
||||
if ((i ofclass K4_door) && (parent(i) == nothing)) {
|
||||
move i to ((i.door_to).call());
|
||||
move i to (i.door_to());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -456,21 +456,29 @@ void glulx_read_gprop(i7process_t *proc, i7word_t K, i7word_t obj, i7word_t pr,
|
|||
if (val) *val = (i7word_t) i7_read_word(proc, i7_read_prop_value(proc, holder, pr), (obj + i7_mgl_COL_HSIZE));
|
||||
}
|
||||
}
|
||||
void glulx_write_gprop(i7process_t *proc, i7word_t K, i7word_t obj, i7word_t pr, i7word_t val,
|
||||
|
||||
i7word_t i7_read_gprop(i7process_t *proc, i7word_t K, i7word_t obj, i7word_t pr,
|
||||
i7word_t i7_mgl_OBJECT_TY, i7word_t i7_mgl_value_ranges, i7word_t i7_mgl_value_property_holders, i7word_t i7_mgl_A_door_to, i7word_t i7_mgl_COL_HSIZE) {
|
||||
i7word_t val = 0;
|
||||
glulx_read_gprop(proc, K, obj, pr, &val, i7_mgl_OBJECT_TY, i7_mgl_value_ranges, i7_mgl_value_property_holders, i7_mgl_A_door_to, i7_mgl_COL_HSIZE);
|
||||
return val;
|
||||
}
|
||||
|
||||
void glulx_write_gprop(i7process_t *proc, i7word_t K, i7word_t obj, i7word_t pr, i7word_t val, i7word_t form,
|
||||
i7word_t i7_mgl_OBJECT_TY, i7word_t i7_mgl_value_ranges, i7word_t i7_mgl_value_property_holders, i7word_t i7_mgl_A_door_to, i7word_t i7_mgl_COL_HSIZE) {
|
||||
if ((K == i7_mgl_OBJECT_TY)) {
|
||||
if ((i7_read_word(proc, pr, 0) == 2)) {
|
||||
if (val) {
|
||||
i7_change_prop_value(proc, obj, pr, 1, i7_lvalue_SET);
|
||||
i7_change_prop_value(proc, K, obj, pr, 1, form);
|
||||
} else {
|
||||
i7_change_prop_value(proc, obj, pr, 0, i7_lvalue_SET);
|
||||
i7_change_prop_value(proc, K, obj, pr, 0, form);
|
||||
}
|
||||
} else {
|
||||
(i7_change_prop_value(proc, obj, pr, val, i7_lvalue_SET));
|
||||
(i7_change_prop_value(proc, K, obj, pr, val, form));
|
||||
}
|
||||
} else {
|
||||
i7word_t holder = i7_read_word(proc, i7_mgl_value_property_holders, K);
|
||||
(i7_write_word(proc, i7_read_prop_value(proc, holder, pr), (obj + i7_mgl_COL_HSIZE), val, i7_lvalue_SET));
|
||||
(i7_write_word(proc, i7_read_prop_value(proc, holder, pr), (obj + i7_mgl_COL_HSIZE), val, form));
|
||||
}
|
||||
}
|
||||
void glulx_xfunction(i7process_t *proc, i7word_t selector, i7word_t varargc, i7word_t *z) {
|
||||
|
@ -1076,7 +1084,7 @@ i7word_t i7_read_prop_value(i7process_t *proc, i7word_t owner_id, i7word_t pr_ar
|
|||
return i7_read_word(proc, address, 0);
|
||||
}
|
||||
|
||||
i7word_t i7_change_prop_value(i7process_t *proc, i7word_t obj, i7word_t pr, i7word_t to, int way) {
|
||||
i7word_t i7_change_prop_value(i7process_t *proc, i7word_t K, i7word_t obj, i7word_t pr, i7word_t to, int way) {
|
||||
i7word_t val = i7_read_prop_value(proc, obj, pr), new_val = val;
|
||||
switch (way) {
|
||||
case i7_lvalue_SET: i7_write_prop_value(proc, obj, pr, to); new_val = to; break;
|
||||
|
|
|
@ -111,7 +111,7 @@ int i7_provides_gprop(i7process_t *proc, i7word_t K, i7word_t obj, i7word_t p,
|
|||
i7word_t i7_mgl_OBJECT_TY, i7word_t i7_mgl_value_ranges, i7word_t i7_mgl_value_property_holders, i7word_t i7_mgl_A_door_to, i7word_t i7_mgl_COL_HSIZE);
|
||||
void glulx_read_gprop(i7process_t *proc, i7word_t K, i7word_t obj, i7word_t p, i7word_t *val,
|
||||
i7word_t i7_mgl_OBJECT_TY, i7word_t i7_mgl_value_ranges, i7word_t i7_mgl_value_property_holders, i7word_t i7_mgl_A_door_to, i7word_t i7_mgl_COL_HSIZE);
|
||||
void glulx_write_gprop(i7process_t *proc, i7word_t K, i7word_t obj, i7word_t p, i7word_t val,
|
||||
void glulx_write_gprop(i7process_t *proc, i7word_t K, i7word_t obj, i7word_t p, i7word_t val, i7word_t form,
|
||||
i7word_t i7_mgl_OBJECT_TY, i7word_t i7_mgl_value_ranges, i7word_t i7_mgl_value_property_holders, i7word_t i7_mgl_A_door_to, i7word_t i7_mgl_COL_HSIZE);
|
||||
void glulx_accelfunc(i7process_t *proc, i7word_t x, i7word_t y);
|
||||
void glulx_accelparam(i7process_t *proc, i7word_t x, i7word_t y);
|
||||
|
@ -192,7 +192,7 @@ int i7_ofclass(i7process_t *proc, i7word_t id, i7word_t cl_id);
|
|||
i7word_t fn_i7_mgl_CreatePropertyOffsets(i7process_t *proc);
|
||||
void i7_write_prop_value(i7process_t *proc, i7word_t owner_id, i7word_t prop_id, i7word_t val);
|
||||
i7word_t i7_read_prop_value(i7process_t *proc, i7word_t owner_id, i7word_t pr_array);
|
||||
i7word_t i7_change_prop_value(i7process_t *proc, i7word_t obj, i7word_t pr, i7word_t to, int way);
|
||||
i7word_t i7_change_prop_value(i7process_t *proc, i7word_t K, i7word_t obj, i7word_t pr, i7word_t to, int way);
|
||||
void i7_give(i7process_t *proc, i7word_t owner, i7word_t prop, i7word_t val);
|
||||
i7word_t i7_prop_len(i7process_t *proc, i7word_t obj, i7word_t pr);
|
||||
i7word_t i7_prop_addr(i7process_t *proc, i7word_t obj, i7word_t pr);
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -1231,6 +1231,7 @@ which until runtime -- when its identity will be found in the Inter variable
|
|||
EmitCode::val_symbol(K_value, total_s);
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_symbol(K_value, var_s[0]);
|
||||
if (multipurpose_function) {
|
||||
EmitCode::val_iname(K_value,
|
||||
|
@ -1420,6 +1421,7 @@ multiplying by $-1$ is order-reversing.
|
|||
@<Emit code for a property lookup@> =
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_symbol(K_value, var_s[0]);
|
||||
if (multipurpose_function) {
|
||||
EmitCode::val_iname(K_value,
|
||||
|
|
|
@ -133,6 +133,7 @@ void EmitCode::test_if_symbol_has_property(kind *K, inter_symbol *S, property *p
|
|||
EmitCode::down();
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_symbol(K, S);
|
||||
EmitCode::val_iname(K_value,
|
||||
RTProperties::iname(EitherOrProperties::get_negation(prn)));
|
||||
|
@ -141,6 +142,7 @@ void EmitCode::test_if_symbol_has_property(kind *K, inter_symbol *S, property *p
|
|||
} else {
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_symbol(K, S);
|
||||
EmitCode::val_iname(K_value, RTProperties::iname(prn));
|
||||
EmitCode::up();
|
||||
|
|
|
@ -144,6 +144,7 @@ world model only if X is a container, so we check that.
|
|||
EmitCode::down();
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(SELF_HL));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(CONTAINER_HL));
|
||||
EmitCode::up();
|
||||
|
@ -161,6 +162,7 @@ world model only if X is a supporter, so we check that.
|
|||
EmitCode::down();
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(SELF_HL));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(SUPPORTER_HL));
|
||||
EmitCode::up();
|
||||
|
@ -179,6 +181,7 @@ is a person, so we check that.
|
|||
EmitCode::down();
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(SELF_HL));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(ANIMATE_HL));
|
||||
EmitCode::up();
|
||||
|
@ -222,6 +225,7 @@ recycle.
|
|||
EmitCode::down();
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_symbol(K_value, kit->rv_s);
|
||||
EmitCode::val_iname(K_value, RTProperties::iname(P_worn));
|
||||
EmitCode::up();
|
||||
|
@ -238,6 +242,7 @@ recycle.
|
|||
EmitCode::down();
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_symbol(K_value, kit->rv_s);
|
||||
EmitCode::val_iname(K_value, RTProperties::iname(P_worn));
|
||||
EmitCode::up();
|
||||
|
@ -313,6 +318,7 @@ and so on until one of them matches.
|
|||
EmitCode::ref_symbol(K_value, kit->rv_s);
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(SELF_HL));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(COMPONENT_CHILD_HL));
|
||||
EmitCode::up();
|
||||
|
@ -360,6 +366,7 @@ and so on until one of them matches.
|
|||
EmitCode::ref_symbol(K_value, kit->rv_s);
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_symbol(K_value, kit->rv_s);
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(COMPONENT_SIBLING_HL));
|
||||
EmitCode::up();
|
||||
|
@ -394,6 +401,7 @@ because then, of course, it would be worn by P and not carried by P:
|
|||
EmitCode::down();
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(SELF_HL));
|
||||
EmitCode::val_iname(K_value, RTProperties::iname(P_worn));
|
||||
EmitCode::up();
|
||||
|
@ -409,6 +417,7 @@ because then, of course, it would be worn by P and not carried by P:
|
|||
EmitCode::down();
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(SELF_HL));
|
||||
EmitCode::val_iname(K_value, RTProperties::iname(P_worn));
|
||||
EmitCode::up();
|
||||
|
@ -465,6 +474,7 @@ properties rather than the object tree implement the relation.
|
|||
EmitCode::ref_symbol(K_value, kit->rv_s);
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(SELF_HL));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(COMPONENT_PARENT_HL));
|
||||
EmitCode::up();
|
||||
|
@ -578,7 +588,7 @@ if it works.
|
|||
@<Open a general relation search loop using a reversed property@> =
|
||||
EmitCode::inv(IF_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::inv(XPROPERTYEXISTS_BIP);
|
||||
EmitCode::inv(PROPERTYEXISTS_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(SELF_HL));
|
||||
|
@ -592,6 +602,7 @@ if it works.
|
|||
EmitCode::ref_symbol(K_value, kit->rv_s);
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(SELF_HL));
|
||||
EmitCode::val_iname(K_value, RTProperties::iname(prn));
|
||||
EmitCode::up();
|
||||
|
@ -626,7 +637,7 @@ if it works.
|
|||
EmitCode::down();
|
||||
EmitCode::inv(AND_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::inv(XPROPERTYEXISTS_BIP);
|
||||
EmitCode::inv(PROPERTYEXISTS_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_symbol(K_value, kit->rv_s);
|
||||
|
@ -636,6 +647,7 @@ if it works.
|
|||
EmitCode::down();
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_symbol(K_value, kit->rv_s);
|
||||
EmitCode::val_iname(K_value, RTProperties::iname(prn));
|
||||
EmitCode::up();
|
||||
|
|
|
@ -801,11 +801,13 @@ void ParseName::distinguish_visible_property(gpr_kit *kit, property *prn) {
|
|||
EmitCode::down();
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(PARSER_ONE_HL));
|
||||
EmitCode::val_iname(K_value, RTProperties::iname(prn));
|
||||
EmitCode::up();
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(PARSER_TWO_HL));
|
||||
EmitCode::val_iname(K_value, RTProperties::iname(prn));
|
||||
EmitCode::up();
|
||||
|
@ -815,11 +817,13 @@ void ParseName::distinguish_visible_property(gpr_kit *kit, property *prn) {
|
|||
EmitCode::down();
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(PARSER_ONE_HL));
|
||||
EmitCode::val_iname(K_value, RTProperties::iname(prn));
|
||||
EmitCode::up();
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(PARSER_TWO_HL));
|
||||
EmitCode::val_iname(K_value, RTProperties::iname(prn));
|
||||
EmitCode::up();
|
||||
|
@ -943,6 +947,7 @@ void ParseName::parse_visible_property(gpr_kit *kit,
|
|||
EmitCode::down();
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(SELF_HL));
|
||||
EmitCode::val_iname(K_value, RTProperties::iname(prn));
|
||||
EmitCode::up();
|
||||
|
@ -963,6 +968,7 @@ void ParseName::parse_visible_property(gpr_kit *kit,
|
|||
EmitCode::down();
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(SELF_HL));
|
||||
EmitCode::val_iname(K_value, RTProperties::iname(prn));
|
||||
EmitCode::up();
|
||||
|
@ -976,6 +982,7 @@ void ParseName::parse_visible_property(gpr_kit *kit,
|
|||
EmitCode::down();
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(SELF_HL));
|
||||
EmitCode::val_iname(K_value, RTProperties::iname(prn));
|
||||
EmitCode::up();
|
||||
|
@ -994,6 +1001,7 @@ void ParseName::parse_visible_property(gpr_kit *kit,
|
|||
EmitCode::down();
|
||||
EmitCode::inv(PROPERTYVALUE_BIP);
|
||||
EmitCode::down();
|
||||
EmitCode::val_iname(K_value, RTKindIDs::weak_iname(K_object));
|
||||
EmitCode::val_iname(K_value, Hierarchy::find(SELF_HL));
|
||||
EmitCode::val_iname(K_value, RTProperties::iname(prn));
|
||||
EmitCode::up();
|
||||
|
|
|
@ -247,4 +247,4 @@ Direct access to virtual machine object properties:
|
|||
(a) |primitive !propertyvalue val val -> val|.
|
||||
(b) |primitive !propertyaddress val val -> val|.
|
||||
(c) |primitive !propertylength val val -> val|.
|
||||
(d) |primitive !propertyexists val val -> val|.
|
||||
(d) |primitive !propertyexists val val val -> val|.
|
||||
|
|
|
@ -94,8 +94,8 @@ void Primitives::emit(inter_tree *I, inter_bookmark *IBM) {
|
|||
Primitives::emit_one(I, IBM, I"!externalcall", I"val val -> val");
|
||||
Primitives::emit_one(I, IBM, I"!propertyaddress", I"val val -> val");
|
||||
Primitives::emit_one(I, IBM, I"!propertylength", I"val val -> val");
|
||||
Primitives::emit_one(I, IBM, I"!xpropertyexists", I"val val val -> val");
|
||||
Primitives::emit_one(I, IBM, I"!propertyvalue", I"val val -> val");
|
||||
Primitives::emit_one(I, IBM, I"!propertyexists", I"val val val -> val");
|
||||
Primitives::emit_one(I, IBM, I"!propertyvalue", I"val val val -> val");
|
||||
Primitives::emit_one(I, IBM, I"!notin", I"val val -> val");
|
||||
}
|
||||
|
||||
|
@ -261,7 +261,7 @@ inter_ti Primitives::indirectv_interp(int arity) {
|
|||
@e EXTERNALCALL_BIP
|
||||
@e PROPERTYADDRESS_BIP
|
||||
@e PROPERTYLENGTH_BIP
|
||||
@e XPROPERTYEXISTS_BIP
|
||||
@e PROPERTYEXISTS_BIP
|
||||
@e PROPERTYVALUE_BIP
|
||||
|
||||
=
|
||||
|
@ -359,7 +359,7 @@ text_stream *Primitives::name(inter_ti bip) {
|
|||
case EXTERNALCALL_BIP: return I"!externalcall";
|
||||
case PROPERTYADDRESS_BIP: return I"!propertyaddress";
|
||||
case PROPERTYLENGTH_BIP: return I"!propertylength";
|
||||
case XPROPERTYEXISTS_BIP: return I"!xpropertyexists";
|
||||
case PROPERTYEXISTS_BIP: return I"!propertyexists";
|
||||
case PROPERTYVALUE_BIP: return I"!propertyvalue";
|
||||
}
|
||||
return I"<none>";
|
||||
|
@ -472,7 +472,7 @@ inter_ti Primitives::to_bip(inter_tree *I, inter_symbol *symb) {
|
|||
if (Str::eq(symb->symbol_name, I"!externalcall")) bip = EXTERNALCALL_BIP;
|
||||
if (Str::eq(symb->symbol_name, I"!propertyaddress")) bip = PROPERTYADDRESS_BIP;
|
||||
if (Str::eq(symb->symbol_name, I"!propertylength")) bip = PROPERTYLENGTH_BIP;
|
||||
if (Str::eq(symb->symbol_name, I"!xpropertyexists")) bip = XPROPERTYEXISTS_BIP;
|
||||
if (Str::eq(symb->symbol_name, I"!propertyexists")) bip = PROPERTYEXISTS_BIP;
|
||||
if (Str::eq(symb->symbol_name, I"!propertyvalue")) bip = PROPERTYVALUE_BIP;
|
||||
if (bip != 0) {
|
||||
Inter::Symbols::annotate_i(symb, BIP_CODE_IANN, bip);
|
||||
|
|
|
@ -348,7 +348,7 @@ void EmitInterSchemas::emit_inner(inter_tree *I, inter_schema_node *isn, value_h
|
|||
if (isn->isn_clarifier == HAS_XBIP) op = PROPERTYVALUE_BIP;
|
||||
|
||||
int insert_OBJECT_TY = FALSE;
|
||||
if (op == XPROPERTYEXISTS_BIP) {
|
||||
if ((op == PROPERTYEXISTS_BIP) || (op == PROPERTYVALUE_BIP)) {
|
||||
if ((isn->child_node->isn_type != OPERATION_ISNT) ||
|
||||
(isn->child_node->isn_clarifier != OWNERKIND_XBIP))
|
||||
insert_OBJECT_TY = TRUE;
|
||||
|
|
|
@ -1393,7 +1393,7 @@ inclusive; we ignore an empty token.
|
|||
if (Str::eq(T, I"ofclass")) { is = OPERATOR_ISTT; which = OFCLASS_BIP; }
|
||||
if (Str::eq(T, I"has")) { is = OPERATOR_ISTT; which = HAS_XBIP; }
|
||||
if (Str::eq(T, I"hasnt")) { is = OPERATOR_ISTT; which = HASNT_XBIP; }
|
||||
if (Str::eq(T, I"provides")) { is = OPERATOR_ISTT; which = XPROPERTYEXISTS_BIP; }
|
||||
if (Str::eq(T, I"provides")) { is = OPERATOR_ISTT; which = PROPERTYEXISTS_BIP; }
|
||||
if (Str::eq(T, I"in")) { is = OPERATOR_ISTT; which = IN_BIP; }
|
||||
if (Str::eq(T, I"notin")) { is = OPERATOR_ISTT; which = NOTIN_BIP; }
|
||||
|
||||
|
@ -2821,7 +2821,7 @@ int InterSchemas::precedence(inter_ti O) {
|
|||
if (O == HAS_XBIP) return 3;
|
||||
if (O == HASNT_XBIP) return 3;
|
||||
if (O == OFCLASS_BIP) return 3;
|
||||
if (O == XPROPERTYEXISTS_BIP) return 3;
|
||||
if (O == PROPERTYEXISTS_BIP) return 3;
|
||||
if (O == IN_BIP) return 3;
|
||||
if (O == NOTIN_BIP) return 3;
|
||||
|
||||
|
@ -2883,7 +2883,7 @@ text_stream *InterSchemas::text_form(inter_ti O) {
|
|||
if (O == HAS_XBIP) return I"has";
|
||||
if (O == HASNT_XBIP) return I"hasnt";
|
||||
if (O == OFCLASS_BIP) return I"ofclass";
|
||||
if (O == XPROPERTYEXISTS_BIP) return I"provides";
|
||||
if (O == PROPERTYEXISTS_BIP) return I"provides";
|
||||
if (O == IN_BIP) return I"in";
|
||||
if (O == NOTIN_BIP) return I"notin";
|
||||
|
||||
|
@ -2937,7 +2937,7 @@ int InterSchemas::arity(inter_ti O) {
|
|||
if (O == HAS_XBIP) return 2;
|
||||
if (O == HASNT_XBIP) return 2;
|
||||
if (O == OFCLASS_BIP) return 2;
|
||||
if (O == XPROPERTYEXISTS_BIP) return 2;
|
||||
if (O == PROPERTYEXISTS_BIP) return 2;
|
||||
if (O == IN_BIP) return 2;
|
||||
if (O == NOTIN_BIP) return 2;
|
||||
|
||||
|
|
|
@ -205,17 +205,11 @@ Z-machine specification, there is no good way to assemble it using |@| notation
|
|||
unless we want to save the result. (See the Z-Machine Standards Document.)
|
||||
As a dodge, we use the Inform 6 statement |read X Y| instead.
|
||||
|
||||
The three pseudo-opcodes |@provides_gprop|, |@read_gprop| and |@write_gprop| are
|
||||
however not valid for either Z or G.
|
||||
|
||||
=
|
||||
void I6TargetCode::invoke_opcode(code_generator *cgt, code_generation *gen,
|
||||
text_stream *opcode, int operand_count, inter_tree_node **operands,
|
||||
inter_tree_node *label, int label_sense, int void_context) {
|
||||
text_stream *OUT = CodeGen::current(gen);
|
||||
if (Str::eq(opcode, I"@provides_gprop")) @<Invoke special provides_gprop@>;
|
||||
if (Str::eq(opcode, I"@read_gprop")) @<Invoke special read_gprop@>;
|
||||
if (Str::eq(opcode, I"@write_gprop")) @<Invoke special write_gprop@>;
|
||||
if (Str::eq(opcode, I"@aread")) WRITE("read");
|
||||
else WRITE("%S", opcode);
|
||||
for (int opc = 0; opc < operand_count; opc++) {
|
||||
|
@ -230,130 +224,6 @@ void I6TargetCode::invoke_opcode(code_generator *cgt, code_generation *gen,
|
|||
if (void_context) WRITE(";\n");
|
||||
}
|
||||
|
||||
@<Invoke special provides_gprop@> =
|
||||
TEMPORARY_TEXT(K)
|
||||
TEMPORARY_TEXT(obj)
|
||||
TEMPORARY_TEXT(p)
|
||||
TEMPORARY_TEXT(val)
|
||||
CodeGen::select_temporary(gen, K);
|
||||
Vanilla::node(gen, operands[0]);
|
||||
CodeGen::deselect_temporary(gen);
|
||||
CodeGen::select_temporary(gen, obj);
|
||||
Vanilla::node(gen, operands[1]);
|
||||
CodeGen::deselect_temporary(gen);
|
||||
CodeGen::select_temporary(gen, p);
|
||||
Vanilla::node(gen, operands[2]);
|
||||
CodeGen::deselect_temporary(gen);
|
||||
CodeGen::select_temporary(gen, val);
|
||||
Vanilla::node(gen, operands[3]);
|
||||
CodeGen::deselect_temporary(gen);
|
||||
|
||||
I6_GEN_DATA(value_ranges_needed) = TRUE;
|
||||
I6_GEN_DATA(value_property_holders_needed) = TRUE;
|
||||
|
||||
WRITE("if (%S == OBJECT_TY) {\n", K);
|
||||
WRITE(" if ((%S) && (metaclass(%S) == Object)) {\n", obj, obj);
|
||||
WRITE(" if ((%S-->0 == 2) || (%S provides %S-->1)) {\n", p, obj, p);
|
||||
WRITE(" %S = 1;\n", val);
|
||||
WRITE(" } else {\n");
|
||||
WRITE(" %S = 0;\n", val);
|
||||
WRITE(" }\n");
|
||||
WRITE(" } else {\n");
|
||||
WRITE(" %S = 0;\n", val);
|
||||
WRITE(" }\n");
|
||||
WRITE("} else {\n");
|
||||
WRITE(" if ((%S >= 1) && (%S <= value_ranges-->%S)) {\n", obj, obj, K);
|
||||
WRITE(" holder = value_property_holders-->%S;\n", K);
|
||||
WRITE(" if ((holder) && (holder provides %S-->1)) {\n", p);
|
||||
WRITE(" %S = 1;\n", val);
|
||||
WRITE(" } else {\n");
|
||||
WRITE(" %S = 0;\n", val);
|
||||
WRITE(" }\n");
|
||||
WRITE(" } else {\n");
|
||||
WRITE(" %S = 0;\n", val);
|
||||
WRITE(" }\n");
|
||||
WRITE("}\n");
|
||||
|
||||
DISCARD_TEXT(K)
|
||||
DISCARD_TEXT(obj)
|
||||
DISCARD_TEXT(p)
|
||||
DISCARD_TEXT(val)
|
||||
return;
|
||||
|
||||
@<Invoke special read_gprop@> =
|
||||
TEMPORARY_TEXT(K)
|
||||
TEMPORARY_TEXT(obj)
|
||||
TEMPORARY_TEXT(p)
|
||||
TEMPORARY_TEXT(val)
|
||||
CodeGen::select_temporary(gen, K);
|
||||
Vanilla::node(gen, operands[0]);
|
||||
CodeGen::deselect_temporary(gen);
|
||||
CodeGen::select_temporary(gen, obj);
|
||||
Vanilla::node(gen, operands[1]);
|
||||
CodeGen::deselect_temporary(gen);
|
||||
CodeGen::select_temporary(gen, p);
|
||||
Vanilla::node(gen, operands[2]);
|
||||
CodeGen::deselect_temporary(gen);
|
||||
CodeGen::select_temporary(gen, val);
|
||||
Vanilla::node(gen, operands[3]);
|
||||
CodeGen::deselect_temporary(gen);
|
||||
|
||||
I6_GEN_DATA(value_property_holders_needed) = TRUE;
|
||||
|
||||
WRITE("if (%S == OBJECT_TY) {\n", K);
|
||||
WRITE(" if (%S-->0 == 2) {\n", p);
|
||||
WRITE(" if (%S has %S-->1) %S = 1; else %S = 0;\n", obj, p, val, val);
|
||||
WRITE(" } else {\n");
|
||||
WRITE(" if (%S-->1 == door_to) %S = %S.(%S-->1)();\n", p, val, obj, p);
|
||||
WRITE(" else %S = %S.(%S-->1);\n", val, obj, p);
|
||||
WRITE(" }\n");
|
||||
WRITE("} else {\n");
|
||||
WRITE(" holder = value_property_holders-->%S;\n", K);
|
||||
WRITE(" %S = (holder.(%S-->1))-->(%S+COL_HSIZE);\n", val, p, obj);
|
||||
WRITE("}\n");
|
||||
|
||||
DISCARD_TEXT(K)
|
||||
DISCARD_TEXT(obj)
|
||||
DISCARD_TEXT(p)
|
||||
DISCARD_TEXT(val)
|
||||
return;
|
||||
|
||||
@<Invoke special write_gprop@> =
|
||||
TEMPORARY_TEXT(K)
|
||||
TEMPORARY_TEXT(obj)
|
||||
TEMPORARY_TEXT(p)
|
||||
TEMPORARY_TEXT(val)
|
||||
CodeGen::select_temporary(gen, K);
|
||||
Vanilla::node(gen, operands[0]);
|
||||
CodeGen::deselect_temporary(gen);
|
||||
CodeGen::select_temporary(gen, obj);
|
||||
Vanilla::node(gen, operands[1]);
|
||||
CodeGen::deselect_temporary(gen);
|
||||
CodeGen::select_temporary(gen, p);
|
||||
Vanilla::node(gen, operands[2]);
|
||||
CodeGen::deselect_temporary(gen);
|
||||
CodeGen::select_temporary(gen, val);
|
||||
Vanilla::node(gen, operands[3]);
|
||||
CodeGen::deselect_temporary(gen);
|
||||
|
||||
I6_GEN_DATA(value_property_holders_needed) = TRUE;
|
||||
|
||||
WRITE("if (%S == OBJECT_TY) {\n", K);
|
||||
WRITE(" if (%S-->0 == 2) {\n", p);
|
||||
WRITE(" if (%S) give %S %S-->1; else give %S ~(%S-->1);\n", val, obj, p, obj, p);
|
||||
WRITE(" } else {\n");
|
||||
WRITE(" %S.(%S-->1) = %S;\n", obj, p, val);
|
||||
WRITE(" }\n");
|
||||
WRITE("} else {\n");
|
||||
WRITE(" ((value_property_holders-->%S).(%S-->1))-->(%S+COL_HSIZE) = %S;\n", K, p, obj, val);
|
||||
WRITE("}\n");
|
||||
|
||||
DISCARD_TEXT(K)
|
||||
DISCARD_TEXT(obj)
|
||||
DISCARD_TEXT(p)
|
||||
DISCARD_TEXT(val)
|
||||
return;
|
||||
|
||||
@ =
|
||||
int i6_next_is_a_ref = FALSE, i6_next_is_a_give = FALSE, i6_next_is_a_take = FALSE;
|
||||
void I6TargetCode::invoke_primitive(code_generator *cgt, code_generation *gen,
|
||||
|
@ -419,7 +289,7 @@ void I6TargetCode::invoke_primitive(code_generator *cgt, code_generation *gen,
|
|||
case CLEARBIT_BIP: store_form = I"i7_lvalue_CLEARBIT"; @<Perform a store@>; break;
|
||||
|
||||
@<Property value access@> =
|
||||
case XPROPERTYEXISTS_BIP:
|
||||
case PROPERTYEXISTS_BIP:
|
||||
I6_GEN_DATA(value_ranges_needed) = TRUE;
|
||||
I6_GEN_DATA(value_property_holders_needed) = TRUE;
|
||||
WRITE("(_final_provides("); VNODE_1C; WRITE(", "); VNODE_2C; WRITE(", "); VNODE_3C; WRITE("))"); break;
|
||||
|
@ -570,25 +440,26 @@ void I6TargetCode::invoke_primitive(code_generator *cgt, code_generation *gen,
|
|||
|
||||
@<Write attribute give@> =
|
||||
i6_next_is_a_give = FALSE;
|
||||
WRITE("give "); VNODE_1C; WRITE(" %S", I6TargetCode::inner_name(gen, P)); break;
|
||||
WRITE("give "); VNODE_2C; WRITE(" %S", I6TargetCode::inner_name(gen, P)); break;
|
||||
|
||||
@<Write attribute take@> =
|
||||
i6_next_is_a_take = FALSE;
|
||||
WRITE("give "); VNODE_1C; WRITE(" ~%S", I6TargetCode::inner_name(gen, P)); break;
|
||||
WRITE("give "); VNODE_2C; WRITE(" ~%S", I6TargetCode::inner_name(gen, P)); break;
|
||||
|
||||
@<Write property value@> =
|
||||
i6_next_is_a_ref = FALSE;
|
||||
WRITE("_final_write_pval("); VNODE_1C; WRITE(","); VNODE_2C; WRITE(", ");
|
||||
WRITE("_final_write_pval("); VNODE_1C; WRITE(","); VNODE_2C; WRITE(","); VNODE_3C; WRITE(", ");
|
||||
|
||||
@<Evaluate property value@> =
|
||||
switch (I6TargetCode::pval_case(P)) {
|
||||
case 1: WRITE("("); VNODE_1C; WRITE(" has %S", I6TargetCode::inner_name(gen, P)); WRITE(")"); break;
|
||||
case 2: WRITE("("); VNODE_1C; WRITE(".%S", I6TargetCode::inner_name(gen, P)); WRITE(")"); break;
|
||||
case 3: I6TargetCode::comparison_r(gen, InterTree::first_child(P), InterTree::second_child(P), 0); break;
|
||||
case 1: WRITE("("); VNODE_2C; WRITE(" has %S", I6TargetCode::inner_name(gen, P)); WRITE(")"); break;
|
||||
case 2: WRITE("("); VNODE_2C; WRITE(".%S", I6TargetCode::inner_name(gen, P)); WRITE(")"); break;
|
||||
case 3: I6_GEN_DATA(value_property_holders_needed) = TRUE;
|
||||
I6TargetCode::comparison_r(gen, InterTree::first_child(P), InterTree::second_child(P), InterTree::third_child(P), 0); break;
|
||||
}
|
||||
|
||||
@ =
|
||||
void I6TargetCode::comparison_r(code_generation *gen,
|
||||
void I6TargetCode::comparison_r(code_generation *gen, inter_tree_node *K,
|
||||
inter_tree_node *X, inter_tree_node *Y, int depth) {
|
||||
text_stream *OUT = CodeGen::current(gen);
|
||||
if (Y->W.data[ID_IFLD] == INV_IST) {
|
||||
|
@ -597,9 +468,9 @@ void I6TargetCode::comparison_r(code_generation *gen,
|
|||
inter_ti ybip = Primitives::to_bip(gen->from, prim);
|
||||
if (ybip == ALTERNATIVE_BIP) {
|
||||
if (depth == 0) { WRITE("((or_tmp_var = "); Vanilla::node(gen, X); WRITE(") && (("); }
|
||||
I6TargetCode::comparison_r(gen, NULL, InterTree::first_child(Y), depth+1);
|
||||
I6TargetCode::comparison_r(gen, K, NULL, InterTree::first_child(Y), depth+1);
|
||||
WRITE(") || (");
|
||||
I6TargetCode::comparison_r(gen, NULL, InterTree::second_child(Y), depth+1);
|
||||
I6TargetCode::comparison_r(gen, K, NULL, InterTree::second_child(Y), depth+1);
|
||||
if (depth == 0) { WRITE(")))"); }
|
||||
return;
|
||||
}
|
||||
|
@ -610,6 +481,8 @@ void I6TargetCode::comparison_r(code_generation *gen,
|
|||
case 2: WRITE("("); if (X) Vanilla::node(gen, X); else WRITE("or_tmp_var"); WRITE(".%S", I6TargetCode::inner_name_inner(gen, Y)); WRITE(")"); break;
|
||||
case 3:
|
||||
WRITE("_final_read_pval(");
|
||||
Vanilla::node(gen, K);
|
||||
WRITE(", ");
|
||||
if (X) Vanilla::node(gen, X); else WRITE("or_tmp_var");
|
||||
WRITE(", ");
|
||||
Vanilla::node(gen, Y);
|
||||
|
@ -622,13 +495,13 @@ void I6TargetCode::comparison_r(code_generation *gen,
|
|||
=
|
||||
int I6TargetCode::pval_case(inter_tree_node *P) {
|
||||
while (P->W.data[ID_IFLD] == REFERENCE_IST) P = InterTree::first_child(P);
|
||||
inter_tree_node *prop_node = InterTree::second_child(P);
|
||||
inter_tree_node *prop_node = InterTree::third_child(P);
|
||||
return I6TargetCode::pval_case_inner(prop_node);
|
||||
}
|
||||
|
||||
text_stream *I6TargetCode::inner_name(code_generation *gen, inter_tree_node *P) {
|
||||
while (P->W.data[ID_IFLD] == REFERENCE_IST) P = InterTree::first_child(P);
|
||||
inter_tree_node *prop_node = InterTree::second_child(P);
|
||||
inter_tree_node *prop_node = InterTree::third_child(P);
|
||||
return I6TargetCode::inner_name_inner(gen, prop_node);
|
||||
}
|
||||
|
||||
|
@ -816,15 +689,28 @@ then the result.
|
|||
void I6TargetCode::end_generation(code_generator *cgt, code_generation *gen) {
|
||||
segmentation_pos saved = CodeGen::select(gen, functions_I7CGS);
|
||||
text_stream *OUT = CodeGen::current(gen);
|
||||
WRITE("[ _final_read_pval o p t;\n");
|
||||
WRITE("[ _final_read_pval K o p t;\n");
|
||||
WRITE(" if (K == OBJECT_TY) {\n");
|
||||
WRITE(" t = p-->0; p = p-->1; ! print \"has \", o, \" \", p, \"^\";\n");
|
||||
WRITE(" if (t == 2) { if (o has p) rtrue; rfalse; }\n");
|
||||
WRITE(" if (o provides p) return o.p; rfalse;\n");
|
||||
WRITE(" if (o provides p) {\n");
|
||||
WRITE(" if (p == door_to) return o.p();\n");
|
||||
WRITE(" return o.p;\n");
|
||||
WRITE(" }\n");
|
||||
WRITE(" rfalse;\n");
|
||||
WRITE(" } else {\n");
|
||||
WRITE(" t = value_property_holders-->K;\n");
|
||||
WRITE(" return (t.(p-->1))-->(o+COL_HSIZE);\n");
|
||||
WRITE(" }\n");
|
||||
WRITE("];\n");
|
||||
WRITE("[ _final_write_pval o p v t;\n");
|
||||
WRITE("[ _final_write_pval K o p v t;\n");
|
||||
WRITE(" if (K == OBJECT_TY) {\n");
|
||||
WRITE(" t = p-->0; p = p-->1; ! print \"give \", o, \" \", p, \"^\";\n");
|
||||
WRITE(" if (t == 2) { if (v) give o p; else give o ~p; }\n");
|
||||
WRITE(" else { if (o provides p) o.p = v; }\n");
|
||||
WRITE(" } else {\n");
|
||||
WRITE(" ((value_property_holders-->K).(p-->1))-->(o+COL_HSIZE) = v;\n");
|
||||
WRITE(" }\n");
|
||||
WRITE("];\n");
|
||||
WRITE("[ _final_read_paddr o p v t;\n");
|
||||
WRITE(" t = p-->0; p = p-->1; ! print \"give \", o, \" \", p, \"^\";\n");
|
||||
|
|
|
@ -60,10 +60,6 @@ void CAssembly::assembly(code_generator *cgt, code_generation *gen,
|
|||
int store_this_operand[MAX_OPERANDS_IN_INTER_ASSEMBLY];
|
||||
for (int i=0; i<16; i++) store_this_operand[i] = FALSE;
|
||||
|
||||
if (Str::eq(opcode, I"@provides_gprop")) { store_this_operand[4] = TRUE; hacky_extras = TRUE;
|
||||
C_GEN_DATA(objdata.value_ranges_needed) = TRUE;
|
||||
C_GEN_DATA(objdata.value_property_holders_needed) = TRUE;
|
||||
}
|
||||
if (Str::eq(opcode, I"@read_gprop")) { store_this_operand[4] = TRUE; hacky_extras = TRUE;
|
||||
C_GEN_DATA(objdata.value_property_holders_needed) = TRUE;
|
||||
}
|
||||
|
@ -174,7 +170,7 @@ int i7_provides_gprop(i7process_t *proc, i7word_t K, i7word_t obj, i7word_t p,
|
|||
i7word_t i7_mgl_OBJECT_TY, i7word_t i7_mgl_value_ranges, i7word_t i7_mgl_value_property_holders, i7word_t i7_mgl_A_door_to, i7word_t i7_mgl_COL_HSIZE);
|
||||
void glulx_read_gprop(i7process_t *proc, i7word_t K, i7word_t obj, i7word_t p, i7word_t *val,
|
||||
i7word_t i7_mgl_OBJECT_TY, i7word_t i7_mgl_value_ranges, i7word_t i7_mgl_value_property_holders, i7word_t i7_mgl_A_door_to, i7word_t i7_mgl_COL_HSIZE);
|
||||
void glulx_write_gprop(i7process_t *proc, i7word_t K, i7word_t obj, i7word_t p, i7word_t val,
|
||||
void glulx_write_gprop(i7process_t *proc, i7word_t K, i7word_t obj, i7word_t p, i7word_t val, i7word_t form,
|
||||
i7word_t i7_mgl_OBJECT_TY, i7word_t i7_mgl_value_ranges, i7word_t i7_mgl_value_property_holders, i7word_t i7_mgl_A_door_to, i7word_t i7_mgl_COL_HSIZE);
|
||||
=
|
||||
|
||||
|
@ -233,21 +229,29 @@ void glulx_read_gprop(i7process_t *proc, i7word_t K, i7word_t obj, i7word_t pr,
|
|||
if (val) *val = (i7word_t) i7_read_word(proc, i7_read_prop_value(proc, holder, pr), (obj + i7_mgl_COL_HSIZE));
|
||||
}
|
||||
}
|
||||
void glulx_write_gprop(i7process_t *proc, i7word_t K, i7word_t obj, i7word_t pr, i7word_t val,
|
||||
|
||||
i7word_t i7_read_gprop(i7process_t *proc, i7word_t K, i7word_t obj, i7word_t pr,
|
||||
i7word_t i7_mgl_OBJECT_TY, i7word_t i7_mgl_value_ranges, i7word_t i7_mgl_value_property_holders, i7word_t i7_mgl_A_door_to, i7word_t i7_mgl_COL_HSIZE) {
|
||||
i7word_t val = 0;
|
||||
glulx_read_gprop(proc, K, obj, pr, &val, i7_mgl_OBJECT_TY, i7_mgl_value_ranges, i7_mgl_value_property_holders, i7_mgl_A_door_to, i7_mgl_COL_HSIZE);
|
||||
return val;
|
||||
}
|
||||
|
||||
void glulx_write_gprop(i7process_t *proc, i7word_t K, i7word_t obj, i7word_t pr, i7word_t val, i7word_t form,
|
||||
i7word_t i7_mgl_OBJECT_TY, i7word_t i7_mgl_value_ranges, i7word_t i7_mgl_value_property_holders, i7word_t i7_mgl_A_door_to, i7word_t i7_mgl_COL_HSIZE) {
|
||||
if ((K == i7_mgl_OBJECT_TY)) {
|
||||
if ((i7_read_word(proc, pr, 0) == 2)) {
|
||||
if (val) {
|
||||
i7_change_prop_value(proc, obj, pr, 1, i7_lvalue_SET);
|
||||
i7_change_prop_value(proc, K, obj, pr, 1, form);
|
||||
} else {
|
||||
i7_change_prop_value(proc, obj, pr, 0, i7_lvalue_SET);
|
||||
i7_change_prop_value(proc, K, obj, pr, 0, form);
|
||||
}
|
||||
} else {
|
||||
(i7_change_prop_value(proc, obj, pr, val, i7_lvalue_SET));
|
||||
(i7_change_prop_value(proc, K, obj, pr, val, form));
|
||||
}
|
||||
} else {
|
||||
i7word_t holder = i7_read_word(proc, i7_mgl_value_property_holders, K);
|
||||
(i7_write_word(proc, i7_read_prop_value(proc, holder, pr), (obj + i7_mgl_COL_HSIZE), val, i7_lvalue_SET));
|
||||
(i7_write_word(proc, i7_read_prop_value(proc, holder, pr), (obj + i7_mgl_COL_HSIZE), val, form));
|
||||
}
|
||||
}
|
||||
=
|
||||
|
|
|
@ -11,7 +11,7 @@ int CConditions::invoke_primitive(code_generation *gen, inter_ti bip, inter_tree
|
|||
case NOT_BIP: WRITE("(!("); VNODE_1C; WRITE("))"); break;
|
||||
case AND_BIP: WRITE("(("); VNODE_1C; WRITE(") && ("); VNODE_2C; WRITE("))"); break;
|
||||
case OR_BIP: WRITE("(("); VNODE_1C; WRITE(") || ("); VNODE_2C; WRITE("))"); break;
|
||||
case XPROPERTYEXISTS_BIP:
|
||||
case PROPERTYEXISTS_BIP:
|
||||
C_GEN_DATA(objdata.value_ranges_needed) = TRUE;
|
||||
C_GEN_DATA(objdata.value_property_holders_needed) = TRUE;
|
||||
WRITE("(i7_provides_gprop(proc, "); VNODE_1C; WRITE(", "); VNODE_2C; WRITE(", "); VNODE_3C; WRITE(", i7_mgl_OBJECT_TY, i7_mgl_value_ranges, i7_mgl_value_property_holders, i7_mgl_A_door_to, i7_mgl_COL_HSIZE))"); break;
|
||||
|
@ -31,11 +31,11 @@ int CConditions::invoke_primitive(code_generation *gen, inter_ti bip, inter_tree
|
|||
}
|
||||
|
||||
@<Generate comparison@> =
|
||||
CConditions::comparison_r(gen, bip, InterTree::first_child(P), InterTree::second_child(P), 0);
|
||||
CConditions::comparison_r(gen, bip, NULL, InterTree::first_child(P), InterTree::second_child(P), 0);
|
||||
|
||||
@ =
|
||||
void CConditions::comparison_r(code_generation *gen,
|
||||
inter_ti bip, inter_tree_node *X, inter_tree_node *Y, int depth) {
|
||||
inter_ti bip, inter_tree_node *K, inter_tree_node *X, inter_tree_node *Y, int depth) {
|
||||
if (Y->W.data[ID_IFLD] == INV_IST) {
|
||||
if (Y->W.data[METHOD_INV_IFLD] == INVOKED_PRIMITIVE) {
|
||||
inter_symbol *prim = Inter::Inv::invokee(Y);
|
||||
|
@ -43,10 +43,10 @@ void CConditions::comparison_r(code_generation *gen,
|
|||
if (ybip == ALTERNATIVE_BIP) {
|
||||
text_stream *OUT = CodeGen::current(gen);
|
||||
if (depth == 0) { WRITE("(proc->state.tmp = "); Vanilla::node(gen, X); WRITE(", ("); }
|
||||
CConditions::comparison_r(gen, bip, NULL, InterTree::first_child(Y), depth+1);
|
||||
CConditions::comparison_r(gen, bip, K, NULL, InterTree::first_child(Y), depth+1);
|
||||
if ((bip == NE_BIP) || (bip == NOTIN_BIP)) WRITE(" && ");
|
||||
else WRITE(" || ");
|
||||
CConditions::comparison_r(gen, bip, NULL, InterTree::second_child(Y), depth+1);
|
||||
CConditions::comparison_r(gen, bip, K, NULL, InterTree::second_child(Y), depth+1);
|
||||
if (depth == 0) { WRITE("))"); }
|
||||
return;
|
||||
}
|
||||
|
@ -57,9 +57,16 @@ void CConditions::comparison_r(code_generation *gen,
|
|||
text_stream *test_fn = CObjectModel::test_with_function(bip, &positive);
|
||||
if (Str::len(test_fn) > 0) {
|
||||
WRITE("(%S(proc, ", test_fn);
|
||||
if (bip == PROPERTYVALUE_BIP) {
|
||||
Vanilla::node(gen, K);
|
||||
WRITE(", ");
|
||||
}
|
||||
@<Compile first compared@>;
|
||||
WRITE(", ");
|
||||
@<Compile second compared@>;
|
||||
if (bip == PROPERTYVALUE_BIP) {
|
||||
WRITE(", i7_mgl_OBJECT_TY, i7_mgl_value_ranges, i7_mgl_value_property_holders, i7_mgl_A_door_to, i7_mgl_COL_HSIZE");
|
||||
}
|
||||
WRITE(")");
|
||||
if (positive == FALSE) WRITE(" == 0");
|
||||
WRITE(")");
|
||||
|
|
|
@ -737,10 +737,9 @@ int CObjectModel::invoke_primitive(code_generation *gen, inter_ti bip, inter_tre
|
|||
case PROPERTYADDRESS_BIP: WRITE("i7_prop_addr(proc, "); VNODE_1C; WRITE(", "); VNODE_2C; WRITE(")"); break;
|
||||
case PROPERTYLENGTH_BIP: WRITE("i7_prop_len(proc, "); VNODE_1C; WRITE(", "); VNODE_2C; WRITE(")"); break;
|
||||
case PROPERTYVALUE_BIP: if (CReferences::am_I_a_ref(gen)) {
|
||||
WRITE("i7_change_prop_value(proc, "); VNODE_1C; WRITE(", "); VNODE_2C; WRITE(", ");
|
||||
WRITE("glulx_write_gprop(proc, "); VNODE_1C; WRITE(", "); VNODE_2C; WRITE(", "); VNODE_3C; WRITE(", ");
|
||||
} else {
|
||||
CConditions::comparison_r(gen, bip, InterTree::first_child(P), InterTree::second_child(P), 0);
|
||||
// WRITE("i7_read_prop_value(proc, "); VNODE_1C; WRITE(", "); VNODE_2C; WRITE(")");
|
||||
CConditions::comparison_r(gen, bip, InterTree::first_child(P), InterTree::second_child(P), InterTree::third_child(P), 0);
|
||||
}
|
||||
break;
|
||||
case MESSAGE0_BIP: WRITE("i7_mcall_0(proc, "); VNODE_1C; WRITE(", "); VNODE_2C; WRITE(")"); break;
|
||||
|
@ -766,7 +765,7 @@ and write them.
|
|||
i7word_t fn_i7_mgl_CreatePropertyOffsets(i7process_t *proc);
|
||||
void i7_write_prop_value(i7process_t *proc, i7word_t owner_id, i7word_t prop_id, i7word_t val);
|
||||
i7word_t i7_read_prop_value(i7process_t *proc, i7word_t owner_id, i7word_t pr_array);
|
||||
i7word_t i7_change_prop_value(i7process_t *proc, i7word_t obj, i7word_t pr, i7word_t to, int way);
|
||||
i7word_t i7_change_prop_value(i7process_t *proc, i7word_t K, i7word_t obj, i7word_t pr, i7word_t to, int way);
|
||||
void i7_give(i7process_t *proc, i7word_t owner, i7word_t prop, i7word_t val);
|
||||
i7word_t i7_prop_len(i7process_t *proc, i7word_t obj, i7word_t pr);
|
||||
i7word_t i7_prop_addr(i7process_t *proc, i7word_t obj, i7word_t pr);
|
||||
|
@ -811,7 +810,7 @@ i7word_t i7_read_prop_value(i7process_t *proc, i7word_t owner_id, i7word_t pr_ar
|
|||
return i7_read_word(proc, address, 0);
|
||||
}
|
||||
|
||||
i7word_t i7_change_prop_value(i7process_t *proc, i7word_t obj, i7word_t pr, i7word_t to, int way) {
|
||||
i7word_t i7_change_prop_value(i7process_t *proc, i7word_t K, i7word_t obj, i7word_t pr, i7word_t to, int way) {
|
||||
i7word_t val = i7_read_prop_value(proc, obj, pr), new_val = val;
|
||||
switch (way) {
|
||||
case i7_lvalue_SET: i7_write_prop_value(proc, obj, pr, to); new_val = to; break;
|
||||
|
@ -850,7 +849,7 @@ i7word_t i7_prop_addr(i7process_t *proc, i7word_t obj, i7word_t pr_array) {
|
|||
text_stream *CObjectModel::test_with_function(inter_ti bip, int *positive) {
|
||||
switch (bip) {
|
||||
case OFCLASS_BIP: *positive = TRUE; return I"i7_ofclass"; break;
|
||||
case PROPERTYVALUE_BIP: *positive = TRUE; return I"i7_read_prop_value"; break;
|
||||
case PROPERTYVALUE_BIP: *positive = TRUE; return I"i7_read_gprop"; break;
|
||||
case IN_BIP: *positive = TRUE; return I"i7_in"; break;
|
||||
case NOTIN_BIP: *positive = FALSE; return I"i7_in"; break;
|
||||
}
|
||||
|
|
|
@ -104,7 +104,10 @@ That's what is done by the "A1 as ref" mode set up above.
|
|||
@<Handle the ref using the incomplete-function mode@> =
|
||||
WRITE("("); CReferences::A1_as_ref(gen, P);
|
||||
if (bip == STORE_BIP) { VNODE_2C; } else { WRITE("0"); }
|
||||
WRITE(", %S))", store_form);
|
||||
WRITE(", %S", store_form);
|
||||
if (Inter::Reference::node_is_ref_to(gen->from, ref, PROPERTYVALUE_BIP))
|
||||
WRITE(", i7_mgl_OBJECT_TY, i7_mgl_value_ranges, i7_mgl_value_property_holders, i7_mgl_A_door_to, i7_mgl_COL_HSIZE");
|
||||
WRITE("))");
|
||||
|
||||
@<Handle the ref with C code working either as lvalue or rvalue@> =
|
||||
switch (bip) {
|
||||
|
|
|
@ -74,6 +74,8 @@ void SynopticRelations::compile(inter_tree *I, tree_inventory *inv) {
|
|||
Produce::down(I);
|
||||
Produce::inv_primitive(I, PROPERTYVALUE_BIP);
|
||||
Produce::down(I);
|
||||
inter_symbol *OBJECT_TY_s = EmitInterSchemas::find_identifier_text(I, I"OBJECT_TY", NULL, NULL);
|
||||
Produce::val_symbol(I, K_value, OBJECT_TY_s);
|
||||
Produce::val_symbol(I, K_value, obj_s);
|
||||
Produce::val_symbol(I, K_value, pr_s);
|
||||
Produce::up(I);
|
||||
|
|
Loading…
Reference in a new issue