mirror of
https://github.com/ganelson/inform.git
synced 2024-07-01 06:24:58 +03:00
Absorbed the remaining content of "6M62 Patches" extension
This commit is contained in:
parent
de4d348fda
commit
033eec5ef1
|
@ -1,6 +1,6 @@
|
||||||
# Inform 7
|
# Inform 7
|
||||||
|
|
||||||
v10.1.0-beta+6V17 'Krypton' (30 May 2022)
|
v10.1.0-beta+6V18 'Krypton' (31 May 2022)
|
||||||
|
|
||||||
## About Inform 7
|
## About Inform 7
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
Prerelease: beta
|
Prerelease: beta
|
||||||
Build Date: 30 May 2022
|
Build Date: 31 May 2022
|
||||||
Build Number: 6V17
|
Build Number: 6V18
|
||||||
|
|
|
@ -230,7 +230,7 @@ a \(2^n\)-sized block exactly containing the whole of the rest of the heap.
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">HeapInitialise</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> </span><span class="identifier-syntax">bsize</span><span class="plain-syntax"> </span><span class="identifier-syntax">blk2</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">[ </span><span class="identifier-syntax">HeapInitialise</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> </span><span class="identifier-syntax">bsize</span><span class="plain-syntax"> </span><span class="identifier-syntax">blk2</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">blk2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Flex_Heap</span><span class="plain-syntax"> + </span><span class="constant-syntax">16</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">blk2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Flex_Heap</span><span class="plain-syntax"> + </span><span class="identifier-syntax">BLK_DATA_MULTI_OFFSET</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Flex_Heap</span><span class="plain-syntax">-></span><span class="identifier-syntax">BLK_HEADER_N</span><span class="plain-syntax"> = </span><span class="constant-syntax">4</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Flex_Heap</span><span class="plain-syntax">-></span><span class="identifier-syntax">BLK_HEADER_N</span><span class="plain-syntax"> = </span><span class="constant-syntax">4</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Flex_Heap</span><span class="plain-syntax">--></span><span class="identifier-syntax">BLK_HEADER_KOV</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">Flex_Heap</span><span class="plain-syntax">--></span><span class="identifier-syntax">BLK_HEADER_KOV</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">Flex_Heap</span><span class="plain-syntax">--></span><span class="identifier-syntax">BLK_HEADER_RCOUNT</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MAX_POSITIVE_NUMBER</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">Flex_Heap</span><span class="plain-syntax">--></span><span class="identifier-syntax">BLK_HEADER_RCOUNT</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MAX_POSITIVE_NUMBER</span><span class="plain-syntax">;</span>
|
||||||
|
@ -288,17 +288,18 @@ which handles non-multiple blocks better.)
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">SMALLEST_BLK_WORTH_ALLOCATING</span><span class="plain-syntax"> = </span><span class="constant-syntax">12</span><span class="plain-syntax">; </span><span class="comment-syntax">i.e. 2^12 = 4096 bytes</span>
|
<span class="reserved-syntax">Constant</span><span class="plain-syntax"> </span><span class="identifier-syntax">SMALLEST_BLK_WORTH_ALLOCATING</span><span class="plain-syntax"> = </span><span class="constant-syntax">12</span><span class="plain-syntax">; </span><span class="comment-syntax">i.e. 2^12 = 4096 bytes</span>
|
||||||
|
|
||||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">HeapMakeSpace</span><span class="plain-syntax"> </span><span class="identifier-syntax">size</span><span class="plain-syntax"> </span><span class="identifier-syntax">multiple</span><span class="plain-syntax"> </span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax"> </span><span class="identifier-syntax">newblock</span><span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">[ </span><span class="identifier-syntax">HeapMakeSpace</span><span class="plain-syntax"> </span><span class="identifier-syntax">size</span><span class="plain-syntax"> </span><span class="identifier-syntax">multiple</span><span class="plain-syntax"> </span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax"> </span><span class="identifier-syntax">newblock</span><span class="plain-syntax"> </span><span class="identifier-syntax">B</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax"> </span><span class="identifier-syntax">hsize</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (::) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</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">multiple</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">multiple</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">hsize</span><span class="plain-syntax"> = </span><span class="identifier-syntax">BLK_DATA_MULTI_OFFSET</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">HeapNetFreeSpace</span><span class="plain-syntax">(</span><span class="identifier-syntax">multiple</span><span class="plain-syntax">) >= </span><span class="identifier-syntax">size</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">HeapNetFreeSpace</span><span class="plain-syntax">(</span><span class="identifier-syntax">multiple</span><span class="plain-syntax">) >= </span><span class="identifier-syntax">size</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">else</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">hsize</span><span class="plain-syntax"> = </span><span class="identifier-syntax">BLK_DATA_OFFSET</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">HeapLargestFreeBlock</span><span class="plain-syntax">(0) >= </span><span class="identifier-syntax">size</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">HeapLargestFreeBlock</span><span class="plain-syntax">(0) >= </span><span class="identifier-syntax">size</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="plain-syntax"> </span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">n</span><span class="plain-syntax">=0: (</span><span class="identifier-syntax">n</span><span class="plain-syntax"><</span><span class="identifier-syntax">SMALLEST_BLK_WORTH_ALLOCATING</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax"><</span><span class="identifier-syntax">size</span><span class="plain-syntax">): </span><span class="identifier-syntax">n</span><span class="plain-syntax">++)</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">n</span><span class="plain-syntax">=0: (</span><span class="identifier-syntax">n</span><span class="plain-syntax"><</span><span class="identifier-syntax">SMALLEST_BLK_WORTH_ALLOCATING</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax"><(</span><span class="identifier-syntax">size</span><span class="plain-syntax">+</span><span class="identifier-syntax">hsize</span><span class="plain-syntax">)): </span><span class="identifier-syntax">n</span><span class="plain-syntax">++)</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax"> = </span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax">*2;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax"> = </span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax">*2;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax"> < </span><span class="identifier-syntax">size</span><span class="plain-syntax">+16) </span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax"> = </span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax">*2;</span>
|
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">newblock</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VM_AllocateMemory</span><span class="plain-syntax">(</span><span class="identifier-syntax">newblocksize</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">newblock</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VM_AllocateMemory</span><span class="plain-syntax">(</span><span class="identifier-syntax">newblocksize</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">newblock</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</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">newblock</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><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">newblock</span><span class="plain-syntax">-></span><span class="identifier-syntax">BLK_HEADER_N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">n</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">newblock</span><span class="plain-syntax">-></span><span class="identifier-syntax">BLK_HEADER_N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">n</span><span class="plain-syntax">;</span>
|
||||||
|
|
|
@ -91,15 +91,15 @@ words 2 and 3 are meaningless.
|
||||||
|
|
||||||
<span class="reserved-syntax">Array</span><span class="plain-syntax"> </span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax"> --> </span><span class="constant-syntax">3</span><span class="plain-syntax">;</span>
|
<span class="reserved-syntax">Array</span><span class="plain-syntax"> </span><span class="identifier-syntax">latest_rule_result</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">RecordRuleOutcome</span><span class="plain-syntax"> </span><span class="identifier-syntax">usage</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule1</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule2</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">[ </span><span class="identifier-syntax">RecordRuleOutcome</span><span class="plain-syntax"> </span><span class="identifier-syntax">usage</span><span class="plain-syntax"> </span><span class="identifier-syntax">strong_kind</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">latest_rule_result</span><span class="plain-syntax">-->0 == </span><span class="identifier-syntax">RS_SUCCEEDS</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">RS_FAILS</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">latest_rule_result</span><span class="plain-syntax">-->0 == </span><span class="identifier-syntax">RS_SUCCEEDS</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">RS_FAILS</span><span class="plain-syntax">) &&</span>
|
||||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">KOVIsBlockValue</span><span class="plain-syntax">(</span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax">-->1)))</span>
|
<span class="plain-syntax"> (</span><span class="identifier-syntax">KOVIsBlockValue</span><span class="plain-syntax">(</span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax">-->1)))</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BlkValueFree</span><span class="plain-syntax">(</span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax">-->2);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">BlkValueFree</span><span class="plain-syntax">(</span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax">-->2);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">usage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">RS_SUCCEEDS</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">RS_FAILS</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">KOVIsBlockValue</span><span class="plain-syntax">(</span><span class="identifier-syntax">rule1</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">usage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">RS_SUCCEEDS</span><span class="plain-syntax"> </span><span class="reserved-syntax">or</span><span class="plain-syntax"> </span><span class="identifier-syntax">RS_FAILS</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">KOVIsBlockValue</span><span class="plain-syntax">(</span><span class="identifier-syntax">strong_kind</span><span class="plain-syntax">)))</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">rule2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">BlkValueCopy</span><span class="plain-syntax">(</span><span class="identifier-syntax">BlkValueCreate</span><span class="plain-syntax">(</span><span class="identifier-syntax">rule1</span><span class="plain-syntax">), </span><span class="identifier-syntax">rule2</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">BlkValueCopy</span><span class="plain-syntax">(</span><span class="identifier-syntax">BlkValueCreate</span><span class="plain-syntax">(</span><span class="identifier-syntax">strong_kind</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">latest_rule_result</span><span class="plain-syntax">-->0 = </span><span class="identifier-syntax">usage</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax">-->0 = </span><span class="identifier-syntax">usage</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax">-->1 = </span><span class="identifier-syntax">rule1</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax">-->1 = </span><span class="identifier-syntax">strong_kind</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax">-->2 = </span><span class="identifier-syntax">rule2</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">latest_rule_result</span><span class="plain-syntax">-->2 = </span><span class="identifier-syntax">val</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">];</span>
|
<span class="plain-syntax">];</span>
|
||||||
</pre>
|
</pre>
|
||||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Following. </b>Until January 2011, there were two ways to invoke a rulebook: to "follow" it
|
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Following. </b>Until January 2011, there were two ways to invoke a rulebook: to "follow" it
|
||||||
|
@ -236,12 +236,12 @@ call it.)
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RulebookFails</span><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">RulebookFails</span><span class="plain-syntax">();</span>
|
||||||
<span class="plain-syntax">];</span>
|
<span class="plain-syntax">];</span>
|
||||||
|
|
||||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">RulebookSucceeds</span><span class="plain-syntax"> </span><span class="identifier-syntax">weak_kind</span><span class="plain-syntax"> </span><span class="identifier-syntax">value</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">[ </span><span class="identifier-syntax">RulebookSucceeds</span><span class="plain-syntax"> </span><span class="identifier-syntax">strong_kind</span><span class="plain-syntax"> </span><span class="identifier-syntax">value</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RecordRuleOutcome</span><span class="plain-syntax">(</span><span class="identifier-syntax">RS_SUCCEEDS</span><span class="plain-syntax">, </span><span class="identifier-syntax">weak_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">value</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">RecordRuleOutcome</span><span class="plain-syntax">(</span><span class="identifier-syntax">RS_SUCCEEDS</span><span class="plain-syntax">, </span><span class="identifier-syntax">strong_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">value</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">];</span>
|
<span class="plain-syntax">];</span>
|
||||||
|
|
||||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">RulebookFails</span><span class="plain-syntax"> </span><span class="identifier-syntax">weak_kind</span><span class="plain-syntax"> </span><span class="identifier-syntax">value</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">[ </span><span class="identifier-syntax">RulebookFails</span><span class="plain-syntax"> </span><span class="identifier-syntax">strong_kind</span><span class="plain-syntax"> </span><span class="identifier-syntax">value</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RecordRuleOutcome</span><span class="plain-syntax">(</span><span class="identifier-syntax">RS_FAILS</span><span class="plain-syntax">, </span><span class="identifier-syntax">weak_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">value</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">RecordRuleOutcome</span><span class="plain-syntax">(</span><span class="identifier-syntax">RS_FAILS</span><span class="plain-syntax">, </span><span class="identifier-syntax">strong_kind</span><span class="plain-syntax">, </span><span class="identifier-syntax">value</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">];</span>
|
<span class="plain-syntax">];</span>
|
||||||
|
|
||||||
<span class="plain-syntax">[ </span><span class="identifier-syntax">RuleHasNoOutcome</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">[ </span><span class="identifier-syntax">RuleHasNoOutcome</span><span class="plain-syntax">;</span>
|
||||||
|
|
|
@ -640,6 +640,7 @@ read if the blob in question were replaced with the text in <span class="extract
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cp1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">txt</span><span class="plain-syntax">-->0; </span><span class="identifier-syntax">p1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TEXT_TY_Temporarily_Transmute</span><span class="plain-syntax">(</span><span class="identifier-syntax">txt</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">cp1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">txt</span><span class="plain-syntax">-->0; </span><span class="identifier-syntax">p1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TEXT_TY_Temporarily_Transmute</span><span class="plain-syntax">(</span><span class="identifier-syntax">txt</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">cp2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rtxt</span><span class="plain-syntax">-->0; </span><span class="identifier-syntax">p2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TEXT_TY_Temporarily_Transmute</span><span class="plain-syntax">(</span><span class="identifier-syntax">rtxt</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">cp2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rtxt</span><span class="plain-syntax">-->0; </span><span class="identifier-syntax">p2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TEXT_TY_Temporarily_Transmute</span><span class="plain-syntax">(</span><span class="identifier-syntax">rtxt</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEXT_TY_Transmute</span><span class="plain-syntax">(</span><span class="identifier-syntax">ctxt</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">TEXT_TY_Transmute</span><span class="plain-syntax">(</span><span class="identifier-syntax">ctxt</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">ctxt</span><span class="plain-syntax">) </span><span class="identifier-syntax">BlkMakeMutable</span><span class="plain-syntax">(</span><span class="identifier-syntax">ctxt</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">r</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TEXT_TY_BlobAccessI</span><span class="plain-syntax">(</span><span class="identifier-syntax">txt</span><span class="plain-syntax">, </span><span class="identifier-syntax">blobtype</span><span class="plain-syntax">, </span><span class="identifier-syntax">ctxt</span><span class="plain-syntax">, </span><span class="identifier-syntax">wanted</span><span class="plain-syntax">, </span><span class="identifier-syntax">rtxt</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">r</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TEXT_TY_BlobAccessI</span><span class="plain-syntax">(</span><span class="identifier-syntax">txt</span><span class="plain-syntax">, </span><span class="identifier-syntax">blobtype</span><span class="plain-syntax">, </span><span class="identifier-syntax">ctxt</span><span class="plain-syntax">, </span><span class="identifier-syntax">wanted</span><span class="plain-syntax">, </span><span class="identifier-syntax">rtxt</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEXT_TY_Untransmute</span><span class="plain-syntax">(</span><span class="identifier-syntax">txt</span><span class="plain-syntax">, </span><span class="identifier-syntax">p1</span><span class="plain-syntax">, </span><span class="identifier-syntax">cp1</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">TEXT_TY_Untransmute</span><span class="plain-syntax">(</span><span class="identifier-syntax">txt</span><span class="plain-syntax">, </span><span class="identifier-syntax">p1</span><span class="plain-syntax">, </span><span class="identifier-syntax">cp1</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEXT_TY_Untransmute</span><span class="plain-syntax">(</span><span class="identifier-syntax">rtxt</span><span class="plain-syntax">, </span><span class="identifier-syntax">p2</span><span class="plain-syntax">, </span><span class="identifier-syntax">cp2</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">TEXT_TY_Untransmute</span><span class="plain-syntax">(</span><span class="identifier-syntax">rtxt</span><span class="plain-syntax">, </span><span class="identifier-syntax">p2</span><span class="plain-syntax">, </span><span class="identifier-syntax">cp2</span><span class="plain-syntax">);</span>
|
||||||
|
|
|
@ -1828,7 +1828,7 @@ there's no decision.
|
||||||
<span class="plain-syntax"> (- </span><span class="identifier-syntax">RulebookFails</span><span class="plain-syntax">(); </span><span class="identifier-syntax">rtrue</span><span class="plain-syntax">; -) - </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">only</span><span class="plain-syntax">.</span>
|
<span class="plain-syntax"> (- </span><span class="identifier-syntax">RulebookFails</span><span class="plain-syntax">(); </span><span class="identifier-syntax">rtrue</span><span class="plain-syntax">; -) - </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">only</span><span class="plain-syntax">.</span>
|
||||||
<span class="identifier-syntax">To</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">succeeds</span><span class="plain-syntax"> </span><span class="identifier-syntax">with</span><span class="plain-syntax"> </span><span class="identifier-syntax">result</span><span class="plain-syntax"> (</span><span class="identifier-syntax">val</span><span class="plain-syntax"> - </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">value</span><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">To</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">succeeds</span><span class="plain-syntax"> </span><span class="identifier-syntax">with</span><span class="plain-syntax"> </span><span class="identifier-syntax">result</span><span class="plain-syntax"> (</span><span class="identifier-syntax">val</span><span class="plain-syntax"> - </span><span class="identifier-syntax">a</span><span class="plain-syntax"> </span><span class="identifier-syntax">value</span><span class="plain-syntax">)</span>
|
||||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">documented</span><span class="plain-syntax"> </span><span class="identifier-syntax">at</span><span class="plain-syntax"> </span><span class="identifier-syntax">ph_succeedswith</span><span class="plain-syntax">):</span>
|
<span class="plain-syntax"> (</span><span class="identifier-syntax">documented</span><span class="plain-syntax"> </span><span class="identifier-syntax">at</span><span class="plain-syntax"> </span><span class="identifier-syntax">ph_succeedswith</span><span class="plain-syntax">):</span>
|
||||||
<span class="plain-syntax"> (- </span><span class="identifier-syntax">RulebookSucceeds</span><span class="plain-syntax">({-</span><span class="identifier-syntax">weak</span><span class="plain-syntax">-</span><span class="identifier-syntax">kind</span><span class="plain-syntax">:</span><span class="identifier-syntax">rule</span><span class="plain-syntax">-</span><span class="identifier-syntax">return</span><span class="plain-syntax">-</span><span class="identifier-syntax">kind</span><span class="plain-syntax">},{-</span><span class="identifier-syntax">return</span><span class="plain-syntax">-</span><span class="identifier-syntax">value</span><span class="plain-syntax">-</span><span class="identifier-syntax">from</span><span class="plain-syntax">-</span><span class="identifier-syntax">rule</span><span class="plain-syntax">:</span><span class="identifier-syntax">val</span><span class="plain-syntax">}); </span><span class="identifier-syntax">rtrue</span><span class="plain-syntax">; -) - </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">only</span><span class="plain-syntax">.</span>
|
<span class="plain-syntax"> (- </span><span class="identifier-syntax">RulebookSucceeds</span><span class="plain-syntax">({-</span><span class="identifier-syntax">strong</span><span class="plain-syntax">-</span><span class="identifier-syntax">kind</span><span class="plain-syntax">:</span><span class="identifier-syntax">rule</span><span class="plain-syntax">-</span><span class="identifier-syntax">return</span><span class="plain-syntax">-</span><span class="identifier-syntax">kind</span><span class="plain-syntax">},{-</span><span class="identifier-syntax">return</span><span class="plain-syntax">-</span><span class="identifier-syntax">value</span><span class="plain-syntax">-</span><span class="identifier-syntax">from</span><span class="plain-syntax">-</span><span class="identifier-syntax">rule</span><span class="plain-syntax">:</span><span class="identifier-syntax">val</span><span class="plain-syntax">}); </span><span class="identifier-syntax">rtrue</span><span class="plain-syntax">; -) - </span><span class="identifier-syntax">in</span><span class="plain-syntax"> </span><span class="identifier-syntax">to</span><span class="plain-syntax"> </span><span class="identifier-syntax">only</span><span class="plain-syntax">.</span>
|
||||||
<span class="identifier-syntax">To</span><span class="plain-syntax"> </span><span class="identifier-syntax">decide</span><span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">succeeded</span>
|
<span class="identifier-syntax">To</span><span class="plain-syntax"> </span><span class="identifier-syntax">decide</span><span class="plain-syntax"> </span><span class="identifier-syntax">if</span><span class="plain-syntax"> </span><span class="identifier-syntax">rule</span><span class="plain-syntax"> </span><span class="identifier-syntax">succeeded</span>
|
||||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">documented</span><span class="plain-syntax"> </span><span class="identifier-syntax">at</span><span class="plain-syntax"> </span><span class="identifier-syntax">ph_succeeded</span><span class="plain-syntax">):</span>
|
<span class="plain-syntax"> (</span><span class="identifier-syntax">documented</span><span class="plain-syntax"> </span><span class="identifier-syntax">at</span><span class="plain-syntax"> </span><span class="identifier-syntax">ph_succeeded</span><span class="plain-syntax">):</span>
|
||||||
<span class="plain-syntax"> (- (</span><span class="identifier-syntax">RulebookSucceeded</span><span class="plain-syntax">()) -).</span>
|
<span class="plain-syntax"> (- (</span><span class="identifier-syntax">RulebookSucceeded</span><span class="plain-syntax">()) -).</span>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
Total memory consumption was 123376K = 120 MB
|
Total memory consumption was 123451K = 121 MB
|
||||||
|
|
||||||
---- was used for 2044960 objects, in 362883 frames in 0 x 800K = 0K = 0 MB:
|
---- was used for 2044983 objects, in 362906 frames in 0 x 800K = 0K = 0 MB:
|
||||||
|
|
||||||
33.0% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
|
33.0% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
|
||||||
20.5% text_stream_array 4605 x 100 = 460500 objects, 25935360 bytes
|
20.5% text_stream_array 4605 x 100 = 460500 objects, 25935360 bytes
|
||||||
|
@ -113,7 +113,7 @@ Total memory consumption was 123376K = 120 MB
|
||||||
---- booking_list 407 objects, 13024 bytes
|
---- booking_list 407 objects, 13024 bytes
|
||||||
---- adjective_iname_holder 320 objects, 12800 bytes
|
---- adjective_iname_holder 320 objects, 12800 bytes
|
||||||
---- pathname 308 objects, 12320 bytes
|
---- pathname 308 objects, 12320 bytes
|
||||||
---- uniqueness_count 454 objects, 10896 bytes
|
---- uniqueness_count 477 objects, 11448 bytes
|
||||||
---- inter_construct 30 objects, 10320 bytes
|
---- inter_construct 30 objects, 10320 bytes
|
||||||
---- filename 253 objects, 10120 bytes
|
---- filename 253 objects, 10120 bytes
|
||||||
---- stopwatch_timer 113 objects, 9040 bytes
|
---- stopwatch_timer 113 objects, 9040 bytes
|
||||||
|
@ -237,7 +237,7 @@ Total memory consumption was 123376K = 120 MB
|
||||||
|
|
||||||
100.0% was used for memory not allocated for objects:
|
100.0% was used for memory not allocated for objects:
|
||||||
|
|
||||||
57.7% text stream storage 72935620 bytes in 478023 claims
|
57.7% text stream storage 72943316 bytes in 478057 claims
|
||||||
4.1% dictionary storage 5228544 bytes in 7520 claims
|
4.1% dictionary storage 5228544 bytes in 7520 claims
|
||||||
---- sorting 1448 bytes in 149 claims
|
---- sorting 1448 bytes in 149 claims
|
||||||
5.6% source text 7200000 bytes in 3 claims
|
5.6% source text 7200000 bytes in 3 claims
|
||||||
|
@ -245,8 +245,8 @@ Total memory consumption was 123376K = 120 MB
|
||||||
0.2% documentation fragments 262144 bytes in 1 claim
|
0.2% documentation fragments 262144 bytes in 1 claim
|
||||||
---- linguistic stock array 81920 bytes in 2 claims
|
---- linguistic stock array 81920 bytes in 2 claims
|
||||||
---- small word set array 105600 bytes in 22 claims
|
---- small word set array 105600 bytes in 22 claims
|
||||||
3.5% inter symbols storage 4520272 bytes in 27949 claims
|
3.5% inter symbols storage 4520768 bytes in 27950 claims
|
||||||
13.2% inter bytecode storage 16767568 bytes in 14 claims
|
13.3% inter bytecode storage 16836156 bytes in 14 claims
|
||||||
4.9% inter links storage 6222976 bytes in 11 claims
|
4.9% inter links storage 6222976 bytes in 11 claims
|
||||||
0.1% inter tree location list storage 191232 bytes in 32 claims
|
0.1% inter tree location list storage 191232 bytes in 32 claims
|
||||||
1.3% instance-of-kind counting 1700416 bytes in 1 claim
|
1.3% instance-of-kind counting 1700416 bytes in 1 claim
|
||||||
|
@ -255,5 +255,5 @@ Total memory consumption was 123376K = 120 MB
|
||||||
---- code generation workspace for objects 1336 bytes in 4 claims
|
---- code generation workspace for objects 1336 bytes in 4 claims
|
||||||
0.2% emitter array storage 280288 bytes in 1999 claims
|
0.2% emitter array storage 280288 bytes in 1999 claims
|
||||||
|
|
||||||
-146.-1% was overhead - -184657272 bytes = -180329K = -176 MB
|
-146.0% was overhead - -184657824 bytes = -180329K = -176 MB
|
||||||
|
|
||||||
|
|
|
@ -1,25 +1,25 @@
|
||||||
100.0% in inform7 run
|
100.0% in inform7 run
|
||||||
71.7% in compilation to Inter
|
71.4% in compilation to Inter
|
||||||
51.2% in //Sequence::undertake_queued_tasks//
|
50.8% in //Sequence::undertake_queued_tasks//
|
||||||
4.7% in //MajorNodes::pre_pass//
|
4.7% in //MajorNodes::pre_pass//
|
||||||
3.3% in //MajorNodes::pass_1//
|
3.3% in //MajorNodes::pass_1//
|
||||||
1.7% in //ImperativeDefinitions::assess_all//
|
1.7% in //ImperativeDefinitions::assess_all//
|
||||||
1.7% in //RTPhrasebook::compile_entries//
|
1.7% in //RTPhrasebook::compile_entries//
|
||||||
1.3% in //RTKindConstructors::compile//
|
1.3% in //RTKindConstructors::compile//
|
||||||
0.9% in //Sequence::lint_inter//
|
0.9% in //Sequence::lint_inter//
|
||||||
|
0.5% in //ImperativeDefinitions::compile_first_block//
|
||||||
0.5% in //MajorNodes::pass_2//
|
0.5% in //MajorNodes::pass_2//
|
||||||
0.5% in //Sequence::undertake_queued_tasks//
|
0.5% in //Sequence::undertake_queued_tasks//
|
||||||
0.5% in //World::stage_V//
|
0.5% in //World::stage_V//
|
||||||
0.3% in //ImperativeDefinitions::compile_first_block//
|
|
||||||
0.3% in //Sequence::undertake_queued_tasks//
|
0.3% in //Sequence::undertake_queued_tasks//
|
||||||
0.1% in //CompletionModule::compile//
|
0.1% in //CompletionModule::compile//
|
||||||
0.1% in //InferenceSubjects::emit_all//
|
0.1% in //InferenceSubjects::emit_all//
|
||||||
0.1% in //RTKindConstructors::compile_permissions//
|
0.1% in //RTKindConstructors::compile_permissions//
|
||||||
0.1% in //Task::make_built_in_kind_constructors//
|
0.1% in //Task::make_built_in_kind_constructors//
|
||||||
0.1% in //World::stages_II_and_III//
|
0.1% in //World::stages_II_and_III//
|
||||||
2.8% not specifically accounted for
|
2.6% not specifically accounted for
|
||||||
25.6% in running Inter pipeline
|
25.9% in running Inter pipeline
|
||||||
10.1% in step 14/15: generate inform6 -> auto.inf
|
10.3% in step 14/15: generate inform6 -> auto.inf
|
||||||
5.5% in step 5/15: load-binary-kits
|
5.5% in step 5/15: load-binary-kits
|
||||||
5.3% in step 6/15: make-synoptic-module
|
5.3% in step 6/15: make-synoptic-module
|
||||||
1.3% in step 9/15: make-identifiers-unique
|
1.3% in step 9/15: make-identifiers-unique
|
||||||
|
|
|
@ -1325,7 +1325,7 @@ To rule fails
|
||||||
(- RulebookFails(); rtrue; -) - in to only.
|
(- RulebookFails(); rtrue; -) - in to only.
|
||||||
To rule succeeds with result (val - a value)
|
To rule succeeds with result (val - a value)
|
||||||
(documented at ph_succeedswith):
|
(documented at ph_succeedswith):
|
||||||
(- RulebookSucceeds({-weak-kind:rule-return-kind},{-return-value-from-rule:val}); rtrue; -) - in to only.
|
(- RulebookSucceeds({-strong-kind:rule-return-kind},{-return-value-from-rule:val}); rtrue; -) - in to only.
|
||||||
To decide if rule succeeded
|
To decide if rule succeeded
|
||||||
(documented at ph_succeeded):
|
(documented at ph_succeeded):
|
||||||
(- (RulebookSucceeded()) -).
|
(- (RulebookSucceeded()) -).
|
||||||
|
|
|
@ -151,7 +151,7 @@ a $2^n$-sized block exactly containing the whole of the rest of the heap.
|
||||||
|
|
||||||
=
|
=
|
||||||
[ HeapInitialise n bsize blk2;
|
[ HeapInitialise n bsize blk2;
|
||||||
blk2 = Flex_Heap + 16;
|
blk2 = Flex_Heap + BLK_DATA_MULTI_OFFSET;
|
||||||
Flex_Heap->BLK_HEADER_N = 4;
|
Flex_Heap->BLK_HEADER_N = 4;
|
||||||
Flex_Heap-->BLK_HEADER_KOV = 0;
|
Flex_Heap-->BLK_HEADER_KOV = 0;
|
||||||
Flex_Heap-->BLK_HEADER_RCOUNT = MAX_POSITIVE_NUMBER;
|
Flex_Heap-->BLK_HEADER_RCOUNT = MAX_POSITIVE_NUMBER;
|
||||||
|
@ -207,17 +207,18 @@ which handles non-multiple blocks better.)
|
||||||
=
|
=
|
||||||
Constant SMALLEST_BLK_WORTH_ALLOCATING = 12; ! i.e. 2^12 = 4096 bytes
|
Constant SMALLEST_BLK_WORTH_ALLOCATING = 12; ! i.e. 2^12 = 4096 bytes
|
||||||
|
|
||||||
[ HeapMakeSpace size multiple newblocksize newblock B n;
|
[ HeapMakeSpace size multiple newblocksize newblock B n hsize;
|
||||||
for (::) {
|
for (::) {
|
||||||
if (multiple) {
|
if (multiple) {
|
||||||
|
hsize = BLK_DATA_MULTI_OFFSET;
|
||||||
if (HeapNetFreeSpace(multiple) >= size) rtrue;
|
if (HeapNetFreeSpace(multiple) >= size) rtrue;
|
||||||
} else {
|
} else {
|
||||||
|
hsize = BLK_DATA_OFFSET;
|
||||||
if (HeapLargestFreeBlock(0) >= size) rtrue;
|
if (HeapLargestFreeBlock(0) >= size) rtrue;
|
||||||
}
|
}
|
||||||
newblocksize = 1;
|
newblocksize = 1;
|
||||||
for (n=0: (n<SMALLEST_BLK_WORTH_ALLOCATING) || (newblocksize<size): n++)
|
for (n=0: (n<SMALLEST_BLK_WORTH_ALLOCATING) || (newblocksize<(size+hsize)): n++)
|
||||||
newblocksize = newblocksize*2;
|
newblocksize = newblocksize*2;
|
||||||
while (newblocksize < size+16) newblocksize = newblocksize*2;
|
|
||||||
newblock = VM_AllocateMemory(newblocksize);
|
newblock = VM_AllocateMemory(newblocksize);
|
||||||
if (newblock == 0) rfalse;
|
if (newblock == 0) rfalse;
|
||||||
newblock->BLK_HEADER_N = n;
|
newblock->BLK_HEADER_N = n;
|
||||||
|
|
|
@ -26,15 +26,15 @@ Constant RS_FAILS = 2;
|
||||||
|
|
||||||
Array latest_rule_result --> 3;
|
Array latest_rule_result --> 3;
|
||||||
|
|
||||||
[ RecordRuleOutcome usage rule1 rule2;
|
[ RecordRuleOutcome usage strong_kind val;
|
||||||
if ((latest_rule_result-->0 == RS_SUCCEEDS or RS_FAILS) &&
|
if ((latest_rule_result-->0 == RS_SUCCEEDS or RS_FAILS) &&
|
||||||
(KOVIsBlockValue(latest_rule_result-->1)))
|
(KOVIsBlockValue(latest_rule_result-->1)))
|
||||||
BlkValueFree(latest_rule_result-->2);
|
BlkValueFree(latest_rule_result-->2);
|
||||||
if ((usage == RS_SUCCEEDS or RS_FAILS) && (KOVIsBlockValue(rule1)))
|
if ((usage == RS_SUCCEEDS or RS_FAILS) && (KOVIsBlockValue(strong_kind)))
|
||||||
rule2 = BlkValueCopy(BlkValueCreate(rule1), rule2);
|
val = BlkValueCopy(BlkValueCreate(strong_kind), val);
|
||||||
latest_rule_result-->0 = usage;
|
latest_rule_result-->0 = usage;
|
||||||
latest_rule_result-->1 = rule1;
|
latest_rule_result-->1 = strong_kind;
|
||||||
latest_rule_result-->2 = rule2;
|
latest_rule_result-->2 = val;
|
||||||
];
|
];
|
||||||
|
|
||||||
@h Following.
|
@h Following.
|
||||||
|
@ -165,12 +165,12 @@ call it.)
|
||||||
RulebookFails();
|
RulebookFails();
|
||||||
];
|
];
|
||||||
|
|
||||||
[ RulebookSucceeds weak_kind value;
|
[ RulebookSucceeds strong_kind value;
|
||||||
RecordRuleOutcome(RS_SUCCEEDS, weak_kind, value);
|
RecordRuleOutcome(RS_SUCCEEDS, strong_kind, value);
|
||||||
];
|
];
|
||||||
|
|
||||||
[ RulebookFails weak_kind value;
|
[ RulebookFails strong_kind value;
|
||||||
RecordRuleOutcome(RS_FAILS, weak_kind, value);
|
RecordRuleOutcome(RS_FAILS, strong_kind, value);
|
||||||
];
|
];
|
||||||
|
|
||||||
[ RuleHasNoOutcome;
|
[ RuleHasNoOutcome;
|
||||||
|
|
|
@ -580,6 +580,7 @@ Constant ACCEPTEDPN_BRM = 6;
|
||||||
cp1 = txt-->0; p1 = TEXT_TY_Temporarily_Transmute(txt);
|
cp1 = txt-->0; p1 = TEXT_TY_Temporarily_Transmute(txt);
|
||||||
cp2 = rtxt-->0; p2 = TEXT_TY_Temporarily_Transmute(rtxt);
|
cp2 = rtxt-->0; p2 = TEXT_TY_Temporarily_Transmute(rtxt);
|
||||||
TEXT_TY_Transmute(ctxt);
|
TEXT_TY_Transmute(ctxt);
|
||||||
|
if (ctxt) BlkMakeMutable(ctxt);
|
||||||
r = TEXT_TY_BlobAccessI(txt, blobtype, ctxt, wanted, rtxt);
|
r = TEXT_TY_BlobAccessI(txt, blobtype, ctxt, wanted, rtxt);
|
||||||
TEXT_TY_Untransmute(txt, p1, cp1);
|
TEXT_TY_Untransmute(txt, p1, cp1);
|
||||||
TEXT_TY_Untransmute(rtxt, p2, cp2);
|
TEXT_TY_Untransmute(rtxt, p2, cp2);
|
||||||
|
|
|
@ -1677,7 +1677,7 @@ To rule fails
|
||||||
(- RulebookFails(); rtrue; -) - in to only.
|
(- RulebookFails(); rtrue; -) - in to only.
|
||||||
To rule succeeds with result (val - a value)
|
To rule succeeds with result (val - a value)
|
||||||
(documented at ph_succeedswith):
|
(documented at ph_succeedswith):
|
||||||
(- RulebookSucceeds({-weak-kind:rule-return-kind},{-return-value-from-rule:val}); rtrue; -) - in to only.
|
(- RulebookSucceeds({-strong-kind:rule-return-kind},{-return-value-from-rule:val}); rtrue; -) - in to only.
|
||||||
To decide if rule succeeded
|
To decide if rule succeeded
|
||||||
(documented at ph_succeeded):
|
(documented at ph_succeeded):
|
||||||
(- (RulebookSucceeded()) -).
|
(- (RulebookSucceeded()) -).
|
||||||
|
|
Loading…
Reference in a new issue