mirror of
https://github.com/ganelson/inform.git
synced 2024-07-02 23:14:57 +03:00
Eliminated EitherOrProperty access functions
This commit is contained in:
parent
38c332d7ba
commit
db3b345654
|
@ -42,7 +42,7 @@
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../extensions.html">Kits</a></li><li><a href="index.html">BasicInformKit</a></li><li><b>RTP Template</b></li></ul></div>
|
||||
<p class="purpose">To issue run-time problem messages, and to perform some run-time type checking which may issue such messages.</p>
|
||||
|
||||
<ul class="toc"><li><a href="S-rtp.html#SP1">§1. Reporting</a></li><li><a href="S-rtp.html#SP2">§2. Low-Level Errors</a></li><li><a href="S-rtp.html#SP3">§3. Argument Type Checking Failed</a></li><li><a href="S-rtp.html#SP4">§4. Return Type Checking Failed</a></li><li><a href="S-rtp.html#SP5">§5. Whether Provides</a></li><li><a href="S-rtp.html#SP6">§6. Scan Property Metadata</a></li><li><a href="S-rtp.html#SP7">§7. Get Either-Or Property</a></li><li><a href="S-rtp.html#SP8">§8. Set Either-Or Property</a></li><li><a href="S-rtp.html#SP9">§9. Value Property</a></li><li><a href="S-rtp.html#SP10">§10. Write Value Property</a></li><li><a href="S-rtp.html#SP11">§11. Printing Property Names</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="S-rtp.html#SP1">§1. Reporting</a></li><li><a href="S-rtp.html#SP2">§2. Low-Level Errors</a></li><li><a href="S-rtp.html#SP3">§3. Argument Type Checking Failed</a></li><li><a href="S-rtp.html#SP4">§4. Return Type Checking Failed</a></li><li><a href="S-rtp.html#SP5">§5. Whether Provides</a></li><li><a href="S-rtp.html#SP6">§6. Scan Property Metadata</a></li><li><a href="S-rtp.html#SP7">§7. Read Property</a></li><li><a href="S-rtp.html#SP8">§8. Write Property</a></li><li><a href="S-rtp.html#SP9">§9. Printing Property Names</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Reporting. </b>All RTPs are produced by calling the following routine, which takes one
|
||||
compulsory argument: <span class="extract"><span class="extract-syntax">n</span></span>, the RTP number. When I7 is being used with the
|
||||
|
@ -307,11 +307,11 @@ it doesn't mean it actually does have.
|
|||
<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">OBJECT_TY</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">obj</span><span class="plain-syntax"> < </span><span class="constant-syntax">1</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">obj</span><span class="plain-syntax"> > </span><span class="identifier-syntax">value_ranges</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">issue_rtp</span><span class="plain-syntax">) </span><span class="identifier-syntax">RunTimeProblem</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTP_BADVALUEPROPERTY</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</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><span class="identifier-syntax">holder</span><span class="plain-syntax"> = </span><span class="identifier-syntax">value_property_holders</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">holder</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">holder</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="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</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">obj</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</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">issue_rtp</span><span class="plain-syntax">) </span><span class="identifier-syntax">RunTimeProblem</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTP_PROPOFNOTHING</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">q</span><span class="plain-syntax">);</span>
|
||||
|
@ -334,9 +334,7 @@ it doesn't mean it actually does have.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> .</span><span class="identifier-syntax">PermissionFound</span><span class="plain-syntax">;</span>
|
||||
<span class="comment-syntax"> if (either_or ~= q-->2) { print (PrintPropertyName) q, " differs: ", either_or, " vs ", q-->2, "^"; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">q</span><span class="plain-syntax">-->2) </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">;</span>
|
||||
<span class="comment-syntax">if (either_or) rtrue;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</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="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>
|
||||
|
@ -361,58 +359,7 @@ The following searches from a given offset.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Get Either-Or Property. </b>If <span class="extract"><span class="extract-syntax">p</span></span> represents a property, then <span class="extract"><span class="extract-syntax">~p</span></span> (its bitwise negation) represents its
|
||||
logical negation. The bitwise negation will change the sign bit; since all
|
||||
properties are ordinarily positive, we can detect bitwise negation by looking
|
||||
for negative property numbers. (This could fail on Glulx story files above
|
||||
1GB in size, but that's about 1000 times the size of the record-sized file
|
||||
created thus far.)
|
||||
</p>
|
||||
|
||||
<p class="commentary">FBNA stands for First Boolean Not to be an Attribute, in the I6 sense. Some
|
||||
either/or (i.e., boolean) properties are stored as I6 attributes, others as
|
||||
I6 properties whose values are always <span class="extract"><span class="extract-syntax">true</span></span> or <span class="extract"><span class="extract-syntax">false</span></span>.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Note that we allow either/or properties to be {\it read} for any object,
|
||||
regardless of permissions, returning <span class="extract"><span class="extract-syntax">false</span></span> if the object does not have
|
||||
the property. This is so that a description such as "open things" can be
|
||||
applied against any object without run-time errors, even though it is only
|
||||
normally valid for doors and containers.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">GetEitherOrProperty</span><span class="plain-syntax"> </span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="identifier-syntax">p</span><span class="plain-syntax">;</span>
|
||||
<span class="comment-syntax">return GProperty(OBJECT_TY, o, p);</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="reserved-syntax">nothing</span><span class="plain-syntax">) </span><span class="reserved-syntax">rfalse</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">p</span><span class="plain-syntax"><0) </span><span class="identifier-syntax">p</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">WhetherProvides</span><span class="plain-syntax">(</span><span class="identifier-syntax">OBJECT_TY</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-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">o</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">p</span><span class="plain-syntax">) </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">; </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">rfalse</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. Set Either-Or Property. </b>An attempt to {\it write} an either/or property which is not provided will,
|
||||
however, always produce a run-time problem.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">SetEitherOrProperty</span><span class="plain-syntax"> </span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="identifier-syntax">p</span><span class="plain-syntax"> </span><span class="identifier-syntax">negate</span><span class="plain-syntax"> </span><span class="identifier-syntax">adj</span><span class="plain-syntax">;</span>
|
||||
<span class="comment-syntax">if (negate) WriteGProperty(OBJECT_TY, o, p, 0);</span>
|
||||
<span class="comment-syntax">else WriteGProperty(OBJECT_TY, o, p, 1);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax"><0) { </span><span class="identifier-syntax">p</span><span class="plain-syntax"> = ~</span><span class="identifier-syntax">p</span><span class="plain-syntax">; </span><span class="identifier-syntax">negate</span><span class="plain-syntax"> = ~</span><span class="identifier-syntax">negate</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">adj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">adj</span><span class="plain-syntax">)(</span><span class="identifier-syntax">o</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">WhetherProvides</span><span class="plain-syntax">(</span><span class="identifier-syntax">OBJECT_TY</span><span class="plain-syntax">, </span><span class="identifier-syntax">o</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">, </span><span class="reserved-syntax">true</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">negate</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">give</span><span class="plain-syntax"> </span><span class="identifier-syntax">o</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">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">give</span><span class="plain-syntax"> </span><span class="identifier-syntax">o</span><span class="plain-syntax"> </span><span class="identifier-syntax">p</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. Value Property. </b>Some value properties belong to other values (those created in tables), and
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Read Property. </b>Some value properties belong to other values (those created in tables), and
|
||||
these are stored indirectly through a pseudo-object <span class="extract"><span class="extract-syntax">V</span></span> — an I6 object which
|
||||
is not part of the world model, and not a valid I7 "object" value, but which is
|
||||
used in order that properties belonging to values
|
||||
|
@ -428,9 +375,12 @@ the one which the player is on.
|
|||
</p>
|
||||
|
||||
<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">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">WhetherProvides</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">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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">WhetherProvides</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">OBJECT_TY</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">pr</span><span class="plain-syntax">-->0 == </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">V</span><span class="plain-syntax"> </span><span class="reserved-syntax">has</span><span class="plain-syntax"> </span><span class="identifier-syntax">pr</span><span class="plain-syntax">) </span><span class="reserved-syntax">rtrue</span><span class="plain-syntax">; </span><span class="reserved-syntax">rfalse</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">pr</span><span class="plain-syntax"> == </span><span class="identifier-syntax">door_to</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</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="reserved-syntax">return</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="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
|
@ -441,7 +391,7 @@ the one which the player is on.
|
|||
<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>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. Write Value Property. </b>This routine's name must consist of the read-value-property routine's name
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. Write Property. </b>This routine's name must consist of the read-value-property routine's name
|
||||
with the prefix <span class="extract"><span class="extract-syntax">Write</span></span>, as that is how a reference to such a property is
|
||||
converted from an rvalue to an lvalue.
|
||||
</p>
|
||||
|
@ -450,7 +400,11 @@ converted from an rvalue to an lvalue.
|
|||
<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">WhetherProvides</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">OBJECT_TY</span><span class="plain-syntax">) {</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pr</span><span class="plain-syntax">-->0 == </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">val</span><span class="plain-syntax">) </span><span class="reserved-syntax">give</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">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">give</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="reserved-syntax">else</span><span class="plain-syntax"> {</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><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">holder</span><span class="plain-syntax"> = </span><span class="identifier-syntax">value_property_holders</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">holder</span><span class="plain-syntax">.</span><span class="identifier-syntax">pr</span><span class="plain-syntax">)-->(</span><span class="identifier-syntax">V</span><span class="plain-syntax">+</span><span class="identifier-syntax">COL_HSIZE</span><span class="plain-syntax">) = </span><span class="identifier-syntax">val</span><span class="plain-syntax">;</span>
|
||||
|
@ -458,7 +412,7 @@ converted from an rvalue to an lvalue.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">];</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. Printing Property Names. </b>Inform doesn't print property names prettily; it more or less prints them
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. Printing Property Names. </b>Inform doesn't print property names prettily; it more or less prints them
|
||||
only as decimal numbers.
|
||||
</p>
|
||||
|
||||
|
|
|
@ -195,8 +195,8 @@ which is true if the value of <span class="extract"><span class="extract-syntax"
|
|||
false for <span class="extract"><span class="extract-syntax">false</span></span>.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The preferred way to do this is to use the pair of functions <span class="extract"><span class="extract-syntax">GetEitherOrProperty</span></span>
|
||||
or <span class="extract"><span class="extract-syntax">SetEitherOrProperty</span></span>, defined in <a href="../BasicInformKit/index.html" class="internal">BasicInformKit</a>, because that way
|
||||
<p class="commentary">The preferred way to do this is to use the pair of functions <span class="extract"><span class="extract-syntax">GProperty</span></span>
|
||||
or <span class="extract"><span class="extract-syntax">WriteGProperty</span></span>, defined in <a href="../BasicInformKit/index.html" class="internal">BasicInformKit</a>, because that way
|
||||
suitable runtime problems are generated for mistaken accesses. But if we
|
||||
want the fastest possible access and know that it will be valid, we can use
|
||||
the following.
|
||||
|
|
|
@ -396,24 +396,24 @@ which would work just as well, but more slowly.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">identifier</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">neg</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::make_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ATOM_TASK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"GetEitherOrProperty(*1, %n) == false"</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"GProperty(OBJECT_TY, *1, %n, true) == false"</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::make_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ATOM_TRUE_TASK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"SetEitherOrProperty(*1, %n, true)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"WriteGProperty(OBJECT_TY, *1, %n, 0)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::make_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ATOM_FALSE_TASK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"SetEitherOrProperty(*1, %n, false)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"WriteGProperty(OBJECT_TY, *1, %n, 1)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</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><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">identifier</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><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::make_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ATOM_TASK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"GetEitherOrProperty(*1, %n)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"GProperty(OBJECT_TY, *1, %n, true)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::make_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ATOM_TRUE_TASK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"SetEitherOrProperty(*1, %n, false)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"WriteGProperty(OBJECT_TY, *1, %n, 1)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeanings::make_schema</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">, </span><span class="identifier-syntax">NOW_ATOM_FALSE_TASK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"SetEitherOrProperty(*1, %n, true)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(</span><span class="identifier-syntax">sch</span><span class="plain-syntax">, </span><span class="string-syntax">"WriteGProperty(OBJECT_TY, *1, %n, 0)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">identifier</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-prp.html#SP10">§10</a>.</li></ul>
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
Total memory consumption was 394265K = 385 MB
|
||||
Total memory consumption was 394323K = 385 MB
|
||||
|
||||
60.6% was used for 2000582 objects, in 371355 frames in 299 x 800K = 239200K = 233 MB:
|
||||
60.6% was used for 2004452 objects, in 372321 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 5177 x 100 = 517700 objects, 29156864 bytes
|
||||
7.2% text_stream_array 5187 x 100 = 518700 objects, 29213184 bytes
|
||||
4.2% linked_list 30994 objects, 17356640 bytes
|
||||
3.9% inter_symbol_array 139 x 1024 = 142336 objects, 15946080 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
|
||||
1.3% parse_node_annotation_array 345 x 500 = 172500 objects, 5531040 bytes
|
||||
|
@ -13,15 +13,15 @@ Total memory consumption was 394265K = 385 MB
|
|||
0.8% inter_name_array 69 x 1000 = 69000 objects, 3314208 bytes
|
||||
0.6% kind_array 68 x 1000 = 68000 objects, 2722176 bytes
|
||||
0.5% inter_name_generator_array 53 x 1000 = 53000 objects, 2121696 bytes
|
||||
0.4% inter_schema_token 13465 objects, 1938960 bytes
|
||||
0.4% inter_package 26569 objects, 1912968 bytes
|
||||
0.5% inter_schema_token 14185 objects, 2042640 bytes
|
||||
0.4% inter_package 26565 objects, 1912680 bytes
|
||||
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 26569 objects, 1700416 bytes
|
||||
0.3% dictionary 33269 objects, 1596912 bytes
|
||||
0.4% inter_symbols_table 26565 objects, 1700160 bytes
|
||||
0.3% dictionary 33265 objects, 1596720 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 393 x 100 = 39300 objects, 1270176 bytes
|
||||
0.3% dict_entry_array 402 x 100 = 40200 objects, 1299264 bytes
|
||||
0.2% map_data 670 objects, 1125600 bytes
|
||||
0.2% id_body 940 objects, 1075360 bytes
|
||||
0.2% adjective_meaning 202 objects, 1000304 bytes
|
||||
|
@ -30,7 +30,7 @@ Total memory consumption was 394265K = 385 MB
|
|||
0.2% ptoken 8382 objects, 871728 bytes
|
||||
0.2% grammatical_usage 3611 objects, 866640 bytes
|
||||
0.2% individual_form 2561 objects, 860496 bytes
|
||||
0.2% inter_schema_node 8665 objects, 831840 bytes
|
||||
0.2% inter_schema_node 8905 objects, 854880 bytes
|
||||
0.1% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||
0.1% local_variable_array 47 x 100 = 4700 objects, 452704 bytes
|
||||
---- scan_directory 94 objects, 388032 bytes
|
||||
|
@ -41,7 +41,7 @@ Total memory consumption was 394265K = 385 MB
|
|||
---- compilation_subtask 3346 objects, 267680 bytes
|
||||
---- inference_subject 665 objects, 260680 bytes
|
||||
---- inter_annotation_array 1 x 8192 objects, 196640 bytes
|
||||
---- hierarchy_location 1118 objects, 169936 bytes
|
||||
---- hierarchy_location 1116 objects, 169632 bytes
|
||||
---- binary_predicate 321 objects, 169488 bytes
|
||||
---- linguistic_stock_item 3316 objects, 159168 bytes
|
||||
---- rule_family_data 400 objects, 147200 bytes
|
||||
|
@ -238,16 +238,16 @@ Total memory consumption was 394265K = 385 MB
|
|||
|
||||
39.3% was used for memory not allocated for objects:
|
||||
|
||||
20.5% text stream storage 82820540 bytes in 535654 claims
|
||||
4.5% dictionary storage 18273792 bytes in 33269 claims
|
||||
20.5% text stream storage 82882584 bytes in 536688 claims
|
||||
4.5% dictionary storage 18271744 bytes in 33265 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 4175584 bytes in 27681 claims
|
||||
4.1% inter bytecode storage 16802772 bytes in 14 claims
|
||||
1.0% inter symbols storage 4175072 bytes in 27677 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
|
||||
|
@ -256,5 +256,5 @@ Total memory consumption was 394265K = 385 MB
|
|||
---- code generation workspace for objects 4128 bytes in 4 claims
|
||||
---- emitter array storage 161792 bytes in 2062 claims
|
||||
|
||||
18.5% was overhead - 74741736 bytes = 72989K = 71 MB
|
||||
18.4% was overhead - 74415928 bytes = 72671K = 70 MB
|
||||
|
||||
|
|
|
@ -1,27 +1,27 @@
|
|||
100.0% in inform7 run
|
||||
54.8% in compilation to Inter
|
||||
55.0% in compilation to Inter
|
||||
39.5% in //Sequence::undertake_queued_tasks//
|
||||
3.3% in //MajorNodes::pre_pass//
|
||||
2.5% in //MajorNodes::pass_1//
|
||||
3.5% in //MajorNodes::pre_pass//
|
||||
2.6% in //MajorNodes::pass_1//
|
||||
2.1% in //RTPhrasebook::compile_entries//
|
||||
1.4% in //ImperativeDefinitions::assess_all//
|
||||
1.1% in //RTKindConstructors::compile//
|
||||
0.4% in //ImperativeDefinitions::compile_first_block//
|
||||
0.4% in //MajorNodes::pass_2//
|
||||
0.4% in //Sequence::undertake_queued_tasks//
|
||||
0.4% in //Sequence::undertake_queued_tasks//
|
||||
0.4% in //World::stage_V//
|
||||
0.2% in //CompletionModule::compile//
|
||||
0.2% in //Sequence::undertake_queued_tasks//
|
||||
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.9% not specifically accounted for
|
||||
43.3% in running Inter pipeline
|
||||
1.6% not specifically accounted for
|
||||
43.1% in running Inter pipeline
|
||||
12.4% in step preparation
|
||||
9.6% in inter step 7/16: consolidate-text
|
||||
7.9% in inter step 2/16: link
|
||||
6.9% in inter step 16/16: generate inform6 -> auto.inf
|
||||
7.8% in inter step 2/16: link
|
||||
6.8% in inter step 16/16: generate inform6 -> auto.inf
|
||||
1.5% in inter step 11/16: make-identifiers-unique
|
||||
0.4% in inter step 12/16: reconcile-verbs
|
||||
0.2% in inter step 14/16: eliminate-redundant-operations
|
||||
|
@ -33,5 +33,5 @@
|
|||
0.1% in inter step 4/16: parse-linked-matter
|
||||
0.1% in inter step 5/16: resolve-conditional-compilation
|
||||
2.7% not specifically accounted for
|
||||
1.6% in supervisor
|
||||
1.7% in supervisor
|
||||
0.2% not specifically accounted for
|
||||
|
|
|
@ -264,11 +264,11 @@ it doesn't mean it actually does have.
|
|||
if (K ~= OBJECT_TY) {
|
||||
if ((obj < 1) || (obj > value_ranges-->K)) {
|
||||
if (issue_rtp) RunTimeProblem(RTP_BADVALUEPROPERTY);
|
||||
rfalse;
|
||||
} else {
|
||||
holder = value_property_holders-->K;
|
||||
if ((holder) && (holder provides q)) rtrue;
|
||||
}
|
||||
rfalse;
|
||||
}
|
||||
if (obj == 0) {
|
||||
if (issue_rtp) RunTimeProblem(RTP_PROPOFNOTHING, 0, q);
|
||||
|
@ -291,9 +291,7 @@ it doesn't mean it actually does have.
|
|||
rfalse;
|
||||
|
||||
.PermissionFound;
|
||||
! if (either_or ~= q-->2) { print (PrintPropertyName) q, " differs: ", either_or, " vs ", q-->2, "^"; }
|
||||
if (q-->2) rtrue;
|
||||
! if (either_or) rtrue;
|
||||
if (obj provides q) rtrue;
|
||||
if (issue_rtp) RunTimeProblem(RTP_UNSET, obj, q);
|
||||
rfalse;
|
||||
|
@ -318,56 +316,7 @@ The following searches from a given offset.
|
|||
rfalse;
|
||||
];
|
||||
|
||||
@h Get Either-Or Property.
|
||||
If |p| represents a property, then |~p| (its bitwise negation) represents its
|
||||
logical negation. The bitwise negation will change the sign bit; since all
|
||||
properties are ordinarily positive, we can detect bitwise negation by looking
|
||||
for negative property numbers. (This could fail on Glulx story files above
|
||||
1GB in size, but that's about 1000 times the size of the record-sized file
|
||||
created thus far.)
|
||||
|
||||
FBNA stands for First Boolean Not to be an Attribute, in the I6 sense. Some
|
||||
either/or (i.e., boolean) properties are stored as I6 attributes, others as
|
||||
I6 properties whose values are always |true| or |false|.
|
||||
|
||||
Note that we allow either/or properties to be {\it read} for any object,
|
||||
regardless of permissions, returning |false| if the object does not have
|
||||
the property. This is so that a description such as "open things" can be
|
||||
applied against any object without run-time errors, even though it is only
|
||||
normally valid for doors and containers.
|
||||
|
||||
=
|
||||
[ GetEitherOrProperty o p;
|
||||
! return GProperty(OBJECT_TY, o, p);
|
||||
if (o == nothing) rfalse;
|
||||
if (p<0) p = ~p;
|
||||
if (WhetherProvides(OBJECT_TY, o, p, false)) {
|
||||
if (o has p) rtrue; rfalse;
|
||||
}
|
||||
rfalse;
|
||||
];
|
||||
|
||||
@h Set Either-Or Property.
|
||||
An attempt to {\it write} an either/or property which is not provided will,
|
||||
however, always produce a run-time problem.
|
||||
|
||||
=
|
||||
[ SetEitherOrProperty o p negate adj;
|
||||
! if (negate) WriteGProperty(OBJECT_TY, o, p, 0);
|
||||
! else WriteGProperty(OBJECT_TY, o, p, 1);
|
||||
if (p<0) { p = ~p; negate = ~negate; }
|
||||
if (adj) {
|
||||
(adj)(o);
|
||||
} else if (WhetherProvides(OBJECT_TY, o, p, true)) {
|
||||
if (negate) {
|
||||
give o ~p;
|
||||
} else {
|
||||
give o p;
|
||||
}
|
||||
}
|
||||
];
|
||||
|
||||
@h Value Property.
|
||||
@h Read Property.
|
||||
Some value properties belong to other values (those created in tables), and
|
||||
these are stored indirectly through a pseudo-object |V| -- an I6 object which
|
||||
is not part of the world model, and not a valid I7 "object" value, but which is
|
||||
|
@ -382,9 +331,12 @@ this enables it to be an I6 routine returning the other side of the door from
|
|||
the one which the player is on.
|
||||
|
||||
=
|
||||
[ GProperty K V pr holder;
|
||||
if (WhetherProvides(K, V, pr, true)) {
|
||||
[ GProperty K V pr err holder;
|
||||
if (WhetherProvides(K, V, pr, 1-err)) {
|
||||
if (K == OBJECT_TY) {
|
||||
if (pr-->0 == 2) {
|
||||
if (V has pr) rtrue; rfalse;
|
||||
}
|
||||
if (pr == door_to) return V.pr();
|
||||
return V.pr;
|
||||
} else {
|
||||
|
@ -395,7 +347,7 @@ the one which the player is on.
|
|||
return 0;
|
||||
];
|
||||
|
||||
@h Write Value Property.
|
||||
@h Write Property.
|
||||
This routine's name must consist of the read-value-property routine's name
|
||||
with the prefix |Write|, as that is how a reference to such a property is
|
||||
converted from an rvalue to an lvalue.
|
||||
|
@ -404,7 +356,11 @@ converted from an rvalue to an lvalue.
|
|||
[ WriteGProperty K V pr val holder;
|
||||
if (WhetherProvides(K, V, pr, true)) {
|
||||
if (K == OBJECT_TY) {
|
||||
V.pr = val;
|
||||
if (pr-->0 == 2) {
|
||||
if (val) give V pr; else give V ~pr;
|
||||
} else {
|
||||
V.pr = val;
|
||||
}
|
||||
} else {
|
||||
holder = value_property_holders-->K;
|
||||
(holder.pr)-->(V+COL_HSIZE) = val;
|
||||
|
|
|
@ -8092,7 +8092,8 @@ package main _plain
|
|||
symbol private misc t_0
|
||||
symbol external misc K_object --> /main/generic/kinds/kind1/K_object
|
||||
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
|
||||
symbol external misc plug_00064 --> /main/BasicInformKit/functions/GetEitherOrProperty_fn/GetEitherOrProperty
|
||||
symbol external misc plug_00064 --> /main/BasicInformKit/functions/GProperty_fn/GProperty
|
||||
symbol external misc OBJECT_TY --> /main/generic/kinds/kind1/OBJECT_TY
|
||||
symbol external misc P_plural_named --> /main/basic_inform_by_graham_nelson/properties/property7/P_plural_named
|
||||
local t_0 K_object __call_parameter # :object
|
||||
code
|
||||
|
@ -8101,9 +8102,11 @@ package main _plain
|
|||
val K_unchecked t_0
|
||||
code
|
||||
inv !return
|
||||
inv GetEitherOrProperty
|
||||
inv GProperty
|
||||
val K_unchecked OBJECT_TY
|
||||
val K_unchecked t_0
|
||||
val K_unchecked P_plural_named
|
||||
val K_unchecked 1
|
||||
inv !return
|
||||
val K_unchecked 0
|
||||
package adjective_task2 _adjective_task
|
||||
|
@ -8115,7 +8118,8 @@ package main _plain
|
|||
symbol private misc t_0
|
||||
symbol external misc K_object --> /main/generic/kinds/kind1/K_object
|
||||
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
|
||||
symbol external misc plug_00065 --> /main/BasicInformKit/functions/SetEitherOrProperty_fn/SetEitherOrProperty
|
||||
symbol external misc plug_00065 --> /main/BasicInformKit/functions/WriteGProperty_fn/WriteGProperty
|
||||
symbol external misc OBJECT_TY --> /main/generic/kinds/kind1/OBJECT_TY
|
||||
symbol external misc P_plural_named --> /main/basic_inform_by_graham_nelson/properties/property7/P_plural_named
|
||||
local t_0 K_object __call_parameter # :object
|
||||
code
|
||||
|
@ -8124,10 +8128,11 @@ package main _plain
|
|||
val K_unchecked t_0
|
||||
code
|
||||
inv !return
|
||||
inv SetEitherOrProperty
|
||||
inv WriteGProperty
|
||||
val K_unchecked OBJECT_TY
|
||||
val K_unchecked t_0
|
||||
val K_unchecked P_plural_named
|
||||
val K_unchecked 0
|
||||
val K_unchecked 1
|
||||
inv !return
|
||||
val K_unchecked 0
|
||||
package adjective_task3 _adjective_task
|
||||
|
@ -8139,7 +8144,8 @@ package main _plain
|
|||
symbol private misc t_0
|
||||
symbol external misc K_object --> /main/generic/kinds/kind1/K_object
|
||||
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
|
||||
symbol external misc plug_00065 --> /main/BasicInformKit/functions/SetEitherOrProperty_fn/SetEitherOrProperty
|
||||
symbol external misc plug_00065 --> /main/BasicInformKit/functions/WriteGProperty_fn/WriteGProperty
|
||||
symbol external misc OBJECT_TY --> /main/generic/kinds/kind1/OBJECT_TY
|
||||
symbol external misc P_plural_named --> /main/basic_inform_by_graham_nelson/properties/property7/P_plural_named
|
||||
local t_0 K_object __call_parameter # :object
|
||||
code
|
||||
|
@ -8148,10 +8154,11 @@ package main _plain
|
|||
val K_unchecked t_0
|
||||
code
|
||||
inv !return
|
||||
inv SetEitherOrProperty
|
||||
inv WriteGProperty
|
||||
val K_unchecked OBJECT_TY
|
||||
val K_unchecked t_0
|
||||
val K_unchecked P_plural_named
|
||||
val K_unchecked 1
|
||||
val K_unchecked 0
|
||||
inv !return
|
||||
val K_unchecked 0
|
||||
constant ^text K_typeless_string = "plural-named"
|
||||
|
@ -8170,7 +8177,8 @@ package main _plain
|
|||
symbol private misc t_0
|
||||
symbol external misc K_object --> /main/generic/kinds/kind1/K_object
|
||||
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
|
||||
symbol external misc plug_00064 --> /main/BasicInformKit/functions/GetEitherOrProperty_fn/GetEitherOrProperty
|
||||
symbol external misc plug_00064 --> /main/BasicInformKit/functions/GProperty_fn/GProperty
|
||||
symbol external misc OBJECT_TY --> /main/generic/kinds/kind1/OBJECT_TY
|
||||
symbol external misc P_plural_named --> /main/basic_inform_by_graham_nelson/properties/property7/P_plural_named
|
||||
local t_0 K_object __call_parameter # :object
|
||||
code
|
||||
|
@ -8180,9 +8188,11 @@ package main _plain
|
|||
code
|
||||
inv !return
|
||||
inv !eq
|
||||
inv GetEitherOrProperty
|
||||
inv GProperty
|
||||
val K_unchecked OBJECT_TY
|
||||
val K_unchecked t_0
|
||||
val K_unchecked P_plural_named
|
||||
val K_unchecked 1
|
||||
val K_unchecked 0
|
||||
inv !return
|
||||
val K_unchecked 0
|
||||
|
@ -8195,7 +8205,8 @@ package main _plain
|
|||
symbol private misc t_0
|
||||
symbol external misc K_object --> /main/generic/kinds/kind1/K_object
|
||||
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
|
||||
symbol external misc plug_00065 --> /main/BasicInformKit/functions/SetEitherOrProperty_fn/SetEitherOrProperty
|
||||
symbol external misc plug_00065 --> /main/BasicInformKit/functions/WriteGProperty_fn/WriteGProperty
|
||||
symbol external misc OBJECT_TY --> /main/generic/kinds/kind1/OBJECT_TY
|
||||
symbol external misc P_plural_named --> /main/basic_inform_by_graham_nelson/properties/property7/P_plural_named
|
||||
local t_0 K_object __call_parameter # :object
|
||||
code
|
||||
|
@ -8204,10 +8215,11 @@ package main _plain
|
|||
val K_unchecked t_0
|
||||
code
|
||||
inv !return
|
||||
inv SetEitherOrProperty
|
||||
inv WriteGProperty
|
||||
val K_unchecked OBJECT_TY
|
||||
val K_unchecked t_0
|
||||
val K_unchecked P_plural_named
|
||||
val K_unchecked 1
|
||||
val K_unchecked 0
|
||||
inv !return
|
||||
val K_unchecked 0
|
||||
package adjective_task3 _adjective_task
|
||||
|
@ -8219,7 +8231,8 @@ package main _plain
|
|||
symbol private misc t_0
|
||||
symbol external misc K_object --> /main/generic/kinds/kind1/K_object
|
||||
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
|
||||
symbol external misc plug_00065 --> /main/BasicInformKit/functions/SetEitherOrProperty_fn/SetEitherOrProperty
|
||||
symbol external misc plug_00065 --> /main/BasicInformKit/functions/WriteGProperty_fn/WriteGProperty
|
||||
symbol external misc OBJECT_TY --> /main/generic/kinds/kind1/OBJECT_TY
|
||||
symbol external misc P_plural_named --> /main/basic_inform_by_graham_nelson/properties/property7/P_plural_named
|
||||
local t_0 K_object __call_parameter # :object
|
||||
code
|
||||
|
@ -8228,10 +8241,11 @@ package main _plain
|
|||
val K_unchecked t_0
|
||||
code
|
||||
inv !return
|
||||
inv SetEitherOrProperty
|
||||
inv WriteGProperty
|
||||
val K_unchecked OBJECT_TY
|
||||
val K_unchecked t_0
|
||||
val K_unchecked P_plural_named
|
||||
val K_unchecked 0
|
||||
val K_unchecked 1
|
||||
inv !return
|
||||
val K_unchecked 0
|
||||
constant ^text K_typeless_string = "singular-named"
|
||||
|
@ -8250,7 +8264,8 @@ package main _plain
|
|||
symbol private misc t_0
|
||||
symbol external misc K_object --> /main/generic/kinds/kind1/K_object
|
||||
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
|
||||
symbol external misc plug_00064 --> /main/BasicInformKit/functions/GetEitherOrProperty_fn/GetEitherOrProperty
|
||||
symbol external misc plug_00064 --> /main/BasicInformKit/functions/GProperty_fn/GProperty
|
||||
symbol external misc OBJECT_TY --> /main/generic/kinds/kind1/OBJECT_TY
|
||||
symbol external misc P_proper_named --> /main/basic_inform_by_graham_nelson/properties/property9/P_proper_named
|
||||
local t_0 K_object __call_parameter # :object
|
||||
code
|
||||
|
@ -8259,9 +8274,11 @@ package main _plain
|
|||
val K_unchecked t_0
|
||||
code
|
||||
inv !return
|
||||
inv GetEitherOrProperty
|
||||
inv GProperty
|
||||
val K_unchecked OBJECT_TY
|
||||
val K_unchecked t_0
|
||||
val K_unchecked P_proper_named
|
||||
val K_unchecked 1
|
||||
inv !return
|
||||
val K_unchecked 0
|
||||
package adjective_task2 _adjective_task
|
||||
|
@ -8273,7 +8290,8 @@ package main _plain
|
|||
symbol private misc t_0
|
||||
symbol external misc K_object --> /main/generic/kinds/kind1/K_object
|
||||
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
|
||||
symbol external misc plug_00065 --> /main/BasicInformKit/functions/SetEitherOrProperty_fn/SetEitherOrProperty
|
||||
symbol external misc plug_00065 --> /main/BasicInformKit/functions/WriteGProperty_fn/WriteGProperty
|
||||
symbol external misc OBJECT_TY --> /main/generic/kinds/kind1/OBJECT_TY
|
||||
symbol external misc P_proper_named --> /main/basic_inform_by_graham_nelson/properties/property9/P_proper_named
|
||||
local t_0 K_object __call_parameter # :object
|
||||
code
|
||||
|
@ -8282,10 +8300,11 @@ package main _plain
|
|||
val K_unchecked t_0
|
||||
code
|
||||
inv !return
|
||||
inv SetEitherOrProperty
|
||||
inv WriteGProperty
|
||||
val K_unchecked OBJECT_TY
|
||||
val K_unchecked t_0
|
||||
val K_unchecked P_proper_named
|
||||
val K_unchecked 0
|
||||
val K_unchecked 1
|
||||
inv !return
|
||||
val K_unchecked 0
|
||||
package adjective_task3 _adjective_task
|
||||
|
@ -8297,7 +8316,8 @@ package main _plain
|
|||
symbol private misc t_0
|
||||
symbol external misc K_object --> /main/generic/kinds/kind1/K_object
|
||||
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
|
||||
symbol external misc plug_00065 --> /main/BasicInformKit/functions/SetEitherOrProperty_fn/SetEitherOrProperty
|
||||
symbol external misc plug_00065 --> /main/BasicInformKit/functions/WriteGProperty_fn/WriteGProperty
|
||||
symbol external misc OBJECT_TY --> /main/generic/kinds/kind1/OBJECT_TY
|
||||
symbol external misc P_proper_named --> /main/basic_inform_by_graham_nelson/properties/property9/P_proper_named
|
||||
local t_0 K_object __call_parameter # :object
|
||||
code
|
||||
|
@ -8306,10 +8326,11 @@ package main _plain
|
|||
val K_unchecked t_0
|
||||
code
|
||||
inv !return
|
||||
inv SetEitherOrProperty
|
||||
inv WriteGProperty
|
||||
val K_unchecked OBJECT_TY
|
||||
val K_unchecked t_0
|
||||
val K_unchecked P_proper_named
|
||||
val K_unchecked 1
|
||||
val K_unchecked 0
|
||||
inv !return
|
||||
val K_unchecked 0
|
||||
constant ^text K_typeless_string = "proper-named"
|
||||
|
@ -8328,7 +8349,8 @@ package main _plain
|
|||
symbol private misc t_0
|
||||
symbol external misc K_object --> /main/generic/kinds/kind1/K_object
|
||||
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
|
||||
symbol external misc plug_00064 --> /main/BasicInformKit/functions/GetEitherOrProperty_fn/GetEitherOrProperty
|
||||
symbol external misc plug_00064 --> /main/BasicInformKit/functions/GProperty_fn/GProperty
|
||||
symbol external misc OBJECT_TY --> /main/generic/kinds/kind1/OBJECT_TY
|
||||
symbol external misc P_proper_named --> /main/basic_inform_by_graham_nelson/properties/property9/P_proper_named
|
||||
local t_0 K_object __call_parameter # :object
|
||||
code
|
||||
|
@ -8338,9 +8360,11 @@ package main _plain
|
|||
code
|
||||
inv !return
|
||||
inv !eq
|
||||
inv GetEitherOrProperty
|
||||
inv GProperty
|
||||
val K_unchecked OBJECT_TY
|
||||
val K_unchecked t_0
|
||||
val K_unchecked P_proper_named
|
||||
val K_unchecked 1
|
||||
val K_unchecked 0
|
||||
inv !return
|
||||
val K_unchecked 0
|
||||
|
@ -8353,7 +8377,8 @@ package main _plain
|
|||
symbol private misc t_0
|
||||
symbol external misc K_object --> /main/generic/kinds/kind1/K_object
|
||||
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
|
||||
symbol external misc plug_00065 --> /main/BasicInformKit/functions/SetEitherOrProperty_fn/SetEitherOrProperty
|
||||
symbol external misc plug_00065 --> /main/BasicInformKit/functions/WriteGProperty_fn/WriteGProperty
|
||||
symbol external misc OBJECT_TY --> /main/generic/kinds/kind1/OBJECT_TY
|
||||
symbol external misc P_proper_named --> /main/basic_inform_by_graham_nelson/properties/property9/P_proper_named
|
||||
local t_0 K_object __call_parameter # :object
|
||||
code
|
||||
|
@ -8362,10 +8387,11 @@ package main _plain
|
|||
val K_unchecked t_0
|
||||
code
|
||||
inv !return
|
||||
inv SetEitherOrProperty
|
||||
inv WriteGProperty
|
||||
val K_unchecked OBJECT_TY
|
||||
val K_unchecked t_0
|
||||
val K_unchecked P_proper_named
|
||||
val K_unchecked 1
|
||||
val K_unchecked 0
|
||||
inv !return
|
||||
val K_unchecked 0
|
||||
package adjective_task3 _adjective_task
|
||||
|
@ -8377,7 +8403,8 @@ package main _plain
|
|||
symbol private misc t_0
|
||||
symbol external misc K_object --> /main/generic/kinds/kind1/K_object
|
||||
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
|
||||
symbol external misc plug_00065 --> /main/BasicInformKit/functions/SetEitherOrProperty_fn/SetEitherOrProperty
|
||||
symbol external misc plug_00065 --> /main/BasicInformKit/functions/WriteGProperty_fn/WriteGProperty
|
||||
symbol external misc OBJECT_TY --> /main/generic/kinds/kind1/OBJECT_TY
|
||||
symbol external misc P_proper_named --> /main/basic_inform_by_graham_nelson/properties/property9/P_proper_named
|
||||
local t_0 K_object __call_parameter # :object
|
||||
code
|
||||
|
@ -8386,10 +8413,11 @@ package main _plain
|
|||
val K_unchecked t_0
|
||||
code
|
||||
inv !return
|
||||
inv SetEitherOrProperty
|
||||
inv WriteGProperty
|
||||
val K_unchecked OBJECT_TY
|
||||
val K_unchecked t_0
|
||||
val K_unchecked P_proper_named
|
||||
val K_unchecked 0
|
||||
val K_unchecked 1
|
||||
inv !return
|
||||
val K_unchecked 0
|
||||
constant ^text K_typeless_string = "improper-named"
|
||||
|
@ -8408,7 +8436,8 @@ package main _plain
|
|||
symbol private misc t_0
|
||||
symbol external misc K_object --> /main/generic/kinds/kind1/K_object
|
||||
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
|
||||
symbol external misc plug_00064 --> /main/BasicInformKit/functions/GetEitherOrProperty_fn/GetEitherOrProperty
|
||||
symbol external misc plug_00064 --> /main/BasicInformKit/functions/GProperty_fn/GProperty
|
||||
symbol external misc OBJECT_TY --> /main/generic/kinds/kind1/OBJECT_TY
|
||||
symbol external misc P_ambiguously_plural --> /main/basic_inform_by_graham_nelson/properties/property8/P_ambiguously_plural
|
||||
local t_0 K_object __call_parameter # :object
|
||||
code
|
||||
|
@ -8417,9 +8446,11 @@ package main _plain
|
|||
val K_unchecked t_0
|
||||
code
|
||||
inv !return
|
||||
inv GetEitherOrProperty
|
||||
inv GProperty
|
||||
val K_unchecked OBJECT_TY
|
||||
val K_unchecked t_0
|
||||
val K_unchecked P_ambiguously_plural
|
||||
val K_unchecked 1
|
||||
inv !return
|
||||
val K_unchecked 0
|
||||
package adjective_task2 _adjective_task
|
||||
|
@ -8431,7 +8462,8 @@ package main _plain
|
|||
symbol private misc t_0
|
||||
symbol external misc K_object --> /main/generic/kinds/kind1/K_object
|
||||
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
|
||||
symbol external misc plug_00065 --> /main/BasicInformKit/functions/SetEitherOrProperty_fn/SetEitherOrProperty
|
||||
symbol external misc plug_00065 --> /main/BasicInformKit/functions/WriteGProperty_fn/WriteGProperty
|
||||
symbol external misc OBJECT_TY --> /main/generic/kinds/kind1/OBJECT_TY
|
||||
symbol external misc P_ambiguously_plural --> /main/basic_inform_by_graham_nelson/properties/property8/P_ambiguously_plural
|
||||
local t_0 K_object __call_parameter # :object
|
||||
code
|
||||
|
@ -8440,10 +8472,11 @@ package main _plain
|
|||
val K_unchecked t_0
|
||||
code
|
||||
inv !return
|
||||
inv SetEitherOrProperty
|
||||
inv WriteGProperty
|
||||
val K_unchecked OBJECT_TY
|
||||
val K_unchecked t_0
|
||||
val K_unchecked P_ambiguously_plural
|
||||
val K_unchecked 0
|
||||
val K_unchecked 1
|
||||
inv !return
|
||||
val K_unchecked 0
|
||||
package adjective_task3 _adjective_task
|
||||
|
@ -8455,7 +8488,8 @@ package main _plain
|
|||
symbol private misc t_0
|
||||
symbol external misc K_object --> /main/generic/kinds/kind1/K_object
|
||||
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
|
||||
symbol external misc plug_00065 --> /main/BasicInformKit/functions/SetEitherOrProperty_fn/SetEitherOrProperty
|
||||
symbol external misc plug_00065 --> /main/BasicInformKit/functions/WriteGProperty_fn/WriteGProperty
|
||||
symbol external misc OBJECT_TY --> /main/generic/kinds/kind1/OBJECT_TY
|
||||
symbol external misc P_ambiguously_plural --> /main/basic_inform_by_graham_nelson/properties/property8/P_ambiguously_plural
|
||||
local t_0 K_object __call_parameter # :object
|
||||
code
|
||||
|
@ -8464,10 +8498,11 @@ package main _plain
|
|||
val K_unchecked t_0
|
||||
code
|
||||
inv !return
|
||||
inv SetEitherOrProperty
|
||||
inv WriteGProperty
|
||||
val K_unchecked OBJECT_TY
|
||||
val K_unchecked t_0
|
||||
val K_unchecked P_ambiguously_plural
|
||||
val K_unchecked 1
|
||||
val K_unchecked 0
|
||||
inv !return
|
||||
val K_unchecked 0
|
||||
constant ^text K_typeless_string = "ambiguously plural"
|
||||
|
@ -34790,7 +34825,7 @@ package main _plain
|
|||
constant KIT_CONFIGURATION_BITMAP K_typeless_int = 0
|
||||
constant KIT_CONFIGURATION_LOOKMODE K_typeless_int = 2
|
||||
constant I7_VERSION_NUMBER K_typeless_string = "10.1.0"
|
||||
constant I7_FULL_VERSION_NUMBER K_typeless_string = "10.1.0-alpha.1+6T42"
|
||||
constant I7_FULL_VERSION_NUMBER K_typeless_string = "10.1.0-alpha.1+6T43"
|
||||
constant ^virtual_machine K_typeless_string = "C/32d/v1/no-main"
|
||||
constant ^virtual_machine_icon K_typeless_string = "vm_glulx.png"
|
||||
constant ^language_elements_used K_typeless_string = "core, naming, instance counting, glulx external files"
|
||||
|
@ -38517,9 +38552,9 @@ package main _plain
|
|||
symbol plug misc plug_00061 --> /main/connectors/RELATION_TY_VToOAdjective
|
||||
symbol plug misc plug_00062 --> /main/connectors/RELATION_TY_VToVAdjective
|
||||
symbol plug misc plug_00063 --> /main/connectors/REAL_NUMBER_TY_Nan
|
||||
symbol plug misc plug_00064 --> /main/connectors/GetEitherOrProperty
|
||||
symbol plug misc plug_00064 --> /main/connectors/GProperty
|
||||
symbol socket misc K_phrase_object____nothing --> /main/generic/kinds/kind15/K_phrase_object____nothing
|
||||
symbol plug misc plug_00065 --> /main/connectors/SetEitherOrProperty
|
||||
symbol plug misc plug_00065 --> /main/connectors/WriteGProperty
|
||||
symbol plug misc plug_00066 --> /main/connectors/REAL_NUMBER_TY_Pow
|
||||
symbol socket misc K_phrase_real_number____rea --> /main/generic/kinds/kind15/K_phrase_real_number____rea
|
||||
symbol plug misc plug_00067 --> /main/connectors/REAL_NUMBER_TY_Plus
|
||||
|
@ -97298,46 +97333,17 @@ package main _plain
|
|||
symbol private misc o
|
||||
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
|
||||
symbol private misc p
|
||||
symbol external misc WhetherProvides --> /main/BasicInformKit/functions/WhetherProvides_fn/WhetherProvides
|
||||
symbol external misc GProperty --> /main/BasicInformKit/functions/GProperty_fn/GProperty
|
||||
symbol external misc plug_00140 --> /main/generic/kinds/kind1/OBJECT_TY
|
||||
local o K_unchecked
|
||||
local p K_unchecked
|
||||
code
|
||||
inv !if
|
||||
inv !eq
|
||||
val K_unchecked o
|
||||
val K_unchecked 0
|
||||
code
|
||||
inv !return
|
||||
val K_unchecked 0
|
||||
inv !if
|
||||
inv !lt
|
||||
val K_unchecked p
|
||||
val K_unchecked 0
|
||||
code
|
||||
inv !store
|
||||
reference
|
||||
val K_unchecked p
|
||||
inv !bitwisenot
|
||||
val K_unchecked p
|
||||
inv !if
|
||||
inv WhetherProvides
|
||||
inv !return
|
||||
inv GProperty
|
||||
val K_unchecked OBJECT_TY
|
||||
val K_unchecked o
|
||||
val K_unchecked p
|
||||
val K_unchecked 0
|
||||
code
|
||||
inv !if
|
||||
inv !has
|
||||
val K_unchecked o
|
||||
val K_unchecked p
|
||||
code
|
||||
inv !return
|
||||
val K_unchecked 1
|
||||
inv !return
|
||||
val K_unchecked 0
|
||||
inv !return
|
||||
val K_unchecked 0
|
||||
val K_unchecked 1
|
||||
constant GetEitherOrProperty K_unchecked_function = GetEitherOrProperty_B __assimilated=1
|
||||
package SetEitherOrProperty_fn _function
|
||||
symbol public misc SetEitherOrProperty
|
||||
|
@ -97348,52 +97354,27 @@ package main _plain
|
|||
symbol private misc p
|
||||
symbol private misc negate
|
||||
symbol private misc adj
|
||||
symbol external misc WhetherProvides --> /main/BasicInformKit/functions/WhetherProvides_fn/WhetherProvides
|
||||
symbol external misc WriteGProperty --> /main/BasicInformKit/functions/WriteGProperty_fn/WriteGProperty
|
||||
symbol external misc plug_00140 --> /main/generic/kinds/kind1/OBJECT_TY
|
||||
local o K_unchecked
|
||||
local p K_unchecked
|
||||
local negate K_unchecked
|
||||
local adj K_unchecked
|
||||
code
|
||||
inv !if
|
||||
inv !lt
|
||||
val K_unchecked p
|
||||
val K_unchecked 0
|
||||
code
|
||||
inv !store
|
||||
reference
|
||||
val K_unchecked p
|
||||
inv !bitwisenot
|
||||
val K_unchecked p
|
||||
inv !store
|
||||
reference
|
||||
val K_unchecked negate
|
||||
inv !bitwisenot
|
||||
val K_unchecked negate
|
||||
inv !ifelse
|
||||
val K_unchecked adj
|
||||
val K_unchecked negate
|
||||
code
|
||||
inv !indirect1
|
||||
val K_unchecked adj
|
||||
inv WriteGProperty
|
||||
val K_unchecked OBJECT_TY
|
||||
val K_unchecked o
|
||||
val K_unchecked p
|
||||
val K_unchecked 0
|
||||
code
|
||||
inv !if
|
||||
inv WhetherProvides
|
||||
val K_unchecked OBJECT_TY
|
||||
val K_unchecked o
|
||||
val K_unchecked p
|
||||
val K_unchecked 1
|
||||
code
|
||||
inv !ifelse
|
||||
val K_unchecked negate
|
||||
code
|
||||
inv !take
|
||||
val K_unchecked o
|
||||
val K_unchecked p
|
||||
code
|
||||
inv !give
|
||||
val K_unchecked o
|
||||
val K_unchecked p
|
||||
inv WriteGProperty
|
||||
val K_unchecked OBJECT_TY
|
||||
val K_unchecked o
|
||||
val K_unchecked p
|
||||
val K_unchecked 1
|
||||
constant SetEitherOrProperty K_unchecked_function = SetEitherOrProperty_B __assimilated=1
|
||||
package GProperty_fn _function
|
||||
symbol public misc GProperty
|
||||
|
@ -97403,6 +97384,7 @@ package main _plain
|
|||
symbol external misc K_unchecked --> /main/generic/kinds/K_unchecked
|
||||
symbol private misc V
|
||||
symbol private misc pr
|
||||
symbol private misc err
|
||||
symbol private misc holder
|
||||
symbol external misc WhetherProvides --> /main/BasicInformKit/functions/WhetherProvides_fn/WhetherProvides
|
||||
symbol external misc plug_00140 --> /main/generic/kinds/kind1/OBJECT_TY
|
||||
|
@ -97412,6 +97394,7 @@ package main _plain
|
|||
local K K_unchecked
|
||||
local V K_unchecked
|
||||
local pr K_unchecked
|
||||
local err K_unchecked
|
||||
local holder K_unchecked
|
||||
code
|
||||
inv !if
|
||||
|
@ -97419,13 +97402,31 @@ package main _plain
|
|||
val K_unchecked K
|
||||
val K_unchecked V
|
||||
val K_unchecked pr
|
||||
val K_unchecked 1
|
||||
inv !minus
|
||||
val K_unchecked 1
|
||||
val K_unchecked err
|
||||
code
|
||||
inv !ifelse
|
||||
inv !eq
|
||||
val K_unchecked K
|
||||
val K_unchecked OBJECT_TY
|
||||
code
|
||||
inv !if
|
||||
inv !eq
|
||||
inv !lookup
|
||||
val K_unchecked pr
|
||||
val K_unchecked 0
|
||||
val K_unchecked 2
|
||||
code
|
||||
inv !if
|
||||
inv !has
|
||||
val K_unchecked V
|
||||
val K_unchecked pr
|
||||
code
|
||||
inv !return
|
||||
val K_unchecked 1
|
||||
inv !return
|
||||
val K_unchecked 0
|
||||
inv !if
|
||||
inv !eq
|
||||
val K_unchecked pr
|
||||
|
@ -97489,12 +97490,30 @@ package main _plain
|
|||
val K_unchecked K
|
||||
val K_unchecked OBJECT_TY
|
||||
code
|
||||
inv !store
|
||||
reference
|
||||
inv !propertyvalue
|
||||
val K_unchecked V
|
||||
inv !ifelse
|
||||
inv !eq
|
||||
inv !lookup
|
||||
val K_unchecked pr
|
||||
val K_unchecked val
|
||||
val K_unchecked 0
|
||||
val K_unchecked 2
|
||||
code
|
||||
inv !ifelse
|
||||
val K_unchecked val
|
||||
code
|
||||
inv !give
|
||||
val K_unchecked V
|
||||
val K_unchecked pr
|
||||
code
|
||||
inv !take
|
||||
val K_unchecked V
|
||||
val K_unchecked pr
|
||||
code
|
||||
inv !store
|
||||
reference
|
||||
inv !propertyvalue
|
||||
val K_unchecked V
|
||||
val K_unchecked pr
|
||||
val K_unchecked val
|
||||
code
|
||||
inv !store
|
||||
reference
|
||||
|
|
|
@ -117,8 +117,8 @@ This compiles code for the test |N has prn|, that is, compiles a condition
|
|||
which is true if the value of |prn| for |N| is |true|, and correspondingly
|
||||
false for |false|.
|
||||
|
||||
The preferred way to do this is to use the pair of functions |GetEitherOrProperty|
|
||||
or |SetEitherOrProperty|, defined in //BasicInformKit//, because that way
|
||||
The preferred way to do this is to use the pair of functions |GProperty|
|
||||
or |WriteGProperty|, defined in //BasicInformKit//, because that way
|
||||
suitable runtime problems are generated for mistaken accesses. But if we
|
||||
want the fastest possible access and know that it will be valid, we can use
|
||||
the following.
|
||||
|
|
|
@ -292,24 +292,24 @@ which would work just as well, but more slowly.
|
|||
inter_name *identifier = RTProperties::iname(neg);
|
||||
|
||||
i6_schema *sch = AdjectiveMeanings::make_schema(am, TEST_ATOM_TASK);
|
||||
Calculus::Schemas::modify(sch, "GetEitherOrProperty(*1, %n) == false", identifier);
|
||||
Calculus::Schemas::modify(sch, "GProperty(OBJECT_TY, *1, %n, true) == false", identifier);
|
||||
|
||||
sch = AdjectiveMeanings::make_schema(am, NOW_ATOM_TRUE_TASK);
|
||||
Calculus::Schemas::modify(sch, "SetEitherOrProperty(*1, %n, true)", identifier);
|
||||
Calculus::Schemas::modify(sch, "WriteGProperty(OBJECT_TY, *1, %n, 0)", identifier);
|
||||
|
||||
sch = AdjectiveMeanings::make_schema(am, NOW_ATOM_FALSE_TASK);
|
||||
Calculus::Schemas::modify(sch, "SetEitherOrProperty(*1, %n, false)", identifier);
|
||||
Calculus::Schemas::modify(sch, "WriteGProperty(OBJECT_TY, *1, %n, 1)", identifier);
|
||||
} else {
|
||||
inter_name *identifier = RTProperties::iname(prn);
|
||||
|
||||
i6_schema *sch = AdjectiveMeanings::make_schema(am, TEST_ATOM_TASK);
|
||||
Calculus::Schemas::modify(sch, "GetEitherOrProperty(*1, %n)", identifier);
|
||||
Calculus::Schemas::modify(sch, "GProperty(OBJECT_TY, *1, %n, true)", identifier);
|
||||
|
||||
sch = AdjectiveMeanings::make_schema(am, NOW_ATOM_TRUE_TASK);
|
||||
Calculus::Schemas::modify(sch, "SetEitherOrProperty(*1, %n, false)", identifier);
|
||||
Calculus::Schemas::modify(sch, "WriteGProperty(OBJECT_TY, *1, %n, 1)", identifier);
|
||||
|
||||
sch = AdjectiveMeanings::make_schema(am, NOW_ATOM_FALSE_TASK);
|
||||
Calculus::Schemas::modify(sch, "SetEitherOrProperty(*1, %n, true)", identifier);
|
||||
Calculus::Schemas::modify(sch, "WriteGProperty(OBJECT_TY, *1, %n, 0)", identifier);
|
||||
}
|
||||
|
||||
@<Set the schemata for an either/or property adjective with some other domain@> =
|
||||
|
|
Loading…
Reference in a new issue