1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-05 08:34:22 +03:00

Scene status and changing made synoptic

This commit is contained in:
Graham Nelson 2021-05-01 18:18:59 +01:00
parent 81229aadec
commit 741209e225
34 changed files with 858 additions and 305 deletions

View file

@ -201,7 +201,7 @@ of packages of type <span class="extract"><span class="extract-syntax">_activity
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-act.html#SP2">&#167;2</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-act.html#SP2">&#167;2</a>.</li></ul>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-rls.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresscurrent">act</li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-act2.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="3-rls.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresscurrent">act</li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresssection"><a href="3-ins.html">ins</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-act2.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -274,7 +274,7 @@ of packages of type <span class="extract"><span class="extract-syntax">_action</
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-act2.html#SP3">&#167;3</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-act2.html#SP3">&#167;3</a>.</li></ul>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-act.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresscurrent">act2</li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-prp.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="3-act.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresscurrent">act2</li><li class="progresssection"><a href="3-ins.html">ins</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-ins.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -623,7 +623,7 @@ of packages of type <span class="extract"><span class="extract-syntax">_relation
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-chr.html#SP2_6">&#167;2.6</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-chr.html#SP2_6">&#167;2.6</a>.</li></ul>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-tbl.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresscurrent">chr</li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="4-cg.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="3-tbl.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresssection"><a href="3-ins.html">ins</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresscurrent">chr</li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-scn.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -215,7 +215,7 @@ is its allocation ID plus 1. (In effect, this means extensions are numbered from
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-ext.html#SP2">&#167;2</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-ext.html#SP2">&#167;2</a>.</li></ul>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-su.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresscurrent">ext</li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-lt.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="3-su.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresscurrent">ext</li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresssection"><a href="3-ins.html">ins</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-lt.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -0,0 +1,101 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Instances</title>
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
</script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
<nav role="navigation">
<h1><a href="../index.html">
<img src="../docs-assets/Inform.png" height=72">
</a></h1>
<ul><li><a href="../compiler.html">compiler tools</a></li>
<li><a href="../other.html">other tools</a></li>
<li><a href="../extensions.html">extensions and kits</a></li>
<li><a href="../units.html">unit test tools</a></li>
</ul><h2>Compiler Webs</h2><ul>
<li><a href="../inbuild/index.html">inbuild</a></li>
<li><a href="../inform7/index.html">inform7</a></li>
<li><a href="../inter/index.html">inter</a></li>
</ul><h2>Inbuild Modules</h2><ul>
<li><a href="../supervisor-module/index.html">supervisor</a></li>
</ul><h2>Inform7 Modules</h2><ul>
<li><a href="../core-module/index.html">core</a></li>
<li><a href="../assertions-module/index.html">assertions</a></li>
<li><a href="../values-module/index.html">values</a></li>
<li><a href="../knowledge-module/index.html">knowledge</a></li>
<li><a href="../imperative-module/index.html">imperative</a></li>
<li><a href="../runtime-module/index.html">runtime</a></li>
<li><a href="../if-module/index.html">if</a></li>
<li><a href="../multimedia-module/index.html">multimedia</a></li>
<li><a href="../index-module/index.html">index</a></li>
</ul><h2>Inter Modules</h2><ul>
<li><a href="../bytecode-module/index.html">bytecode</a></li>
<li><a href="../building-module/index.html">building</a></li>
<li><a href="index.html"><span class="selectedlink">codegen</span></a></li>
</ul><h2>Services</h2><ul>
<li><a href="../arch-module/index.html">arch</a></li>
<li><a href="../calculus-module/index.html">calculus</a></li>
<li><a href="../html-module/index.html">html</a></li>
<li><a href="../inflections-module/index.html">inflections</a></li>
<li><a href="../kinds-module/index.html">kinds</a></li>
<li><a href="../linguistics-module/index.html">linguistics</a></li>
<li><a href="../problems-module/index.html">problems</a></li>
<li><a href="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</a></li>
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'Instances' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inter Modules</a></li><li><a href="index.html">codegen</a></li><li><a href="index.html#3">Chapter 3: Synoptic Resources</a></li><li><b>Instances</b></li></ul></div>
<p class="purpose">To renumber the instances and construct suitable functions and arrays.</p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>Before this runs, instance packages are scattered all over the Inter tree.
</p>
<p class="commentary">As this is called, <a href="3-su.html" class="internal">Synoptic Utilities</a> has already formed a list <span class="extract"><span class="extract-syntax">instance_nodes</span></span>
of packages of type <span class="extract"><span class="extract-syntax">_instance</span></span>.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">SynopticInstances::renumber</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">SynopticInstances::renumber</span></span>:<br/>Synoptic Utilities - <a href="3-su.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_tree_location_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">instance_nodes</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">TreeLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">instance_nodes</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TreeLists::sort</span><span class="plain-syntax">(</span><span class="identifier-syntax">instance_nodes</span><span class="plain-syntax">, </span><a href="3-su.html#SP2" class="function-link"><span class="function-syntax">Synoptic::module_order</span></a><span class="plain-syntax">);</span>
<span class="comment-syntax"> for (int i=0; i&lt;TreeLists::len(instance_nodes); i++) {</span>
<span class="comment-syntax"> inter_package *pack = Inter::Package::defined_by_frame(instance_nodes-&gt;list[i].node);</span>
<span class="comment-syntax"> inter_tree_node *D = Synoptic::get_definition(pack, I"scene_id");</span>
<span class="comment-syntax"> D-&gt;W.data[DATA_CONST_IFLD+1] = (inter_ti) i;</span>
<span class="comment-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-act2.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresscurrent">ins</li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-prp.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

View file

@ -200,7 +200,7 @@ and use that to define a sorting function on nodes:
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
</pre> </pre>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-ext.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresscurrent">lt</li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-rsp.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="3-ext.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresscurrent">lt</li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresssection"><a href="3-ins.html">ins</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-rsp.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -119,7 +119,7 @@ of packages of type <span class="extract"><span class="extract-syntax">_activity
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-prp.html#SP2">&#167;2</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-prp.html#SP2">&#167;2</a>.</li></ul>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-act2.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresscurrent">prp</li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-rlt.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="3-ins.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresssection"><a href="3-ins.html">ins</a></li><li class="progresscurrent">prp</li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-rlt.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -367,7 +367,7 @@ of packages of type <span class="extract"><span class="extract-syntax">_rulebook
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-rls.html#SP2_7">&#167;2.7</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-rls.html#SP2_7">&#167;2.7</a>.</li></ul>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-rsp.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresscurrent">rls</li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-act.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="3-rsp.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresscurrent">rls</li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresssection"><a href="3-ins.html">ins</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-act.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -199,7 +199,7 @@ of packages of type <span class="extract"><span class="extract-syntax">_relation
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-rlt.html#SP2">&#167;2</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-rlt.html#SP2">&#167;2</a>.</li></ul>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-prp.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresscurrent">rlt</li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-tbl.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="3-prp.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresssection"><a href="3-ins.html">ins</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresscurrent">rlt</li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-tbl.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -269,7 +269,7 @@ code is less limited.
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-rsp.html#SP2">&#167;2</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-rsp.html#SP2">&#167;2</a>.</li></ul>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-lt.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresscurrent">rsp</li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-rls.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="3-lt.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresscurrent">rsp</li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresssection"><a href="3-ins.html">ins</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-rls.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -0,0 +1,213 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Scenes</title>
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
</script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
<nav role="navigation">
<h1><a href="../index.html">
<img src="../docs-assets/Inform.png" height=72">
</a></h1>
<ul><li><a href="../compiler.html">compiler tools</a></li>
<li><a href="../other.html">other tools</a></li>
<li><a href="../extensions.html">extensions and kits</a></li>
<li><a href="../units.html">unit test tools</a></li>
</ul><h2>Compiler Webs</h2><ul>
<li><a href="../inbuild/index.html">inbuild</a></li>
<li><a href="../inform7/index.html">inform7</a></li>
<li><a href="../inter/index.html">inter</a></li>
</ul><h2>Inbuild Modules</h2><ul>
<li><a href="../supervisor-module/index.html">supervisor</a></li>
</ul><h2>Inform7 Modules</h2><ul>
<li><a href="../core-module/index.html">core</a></li>
<li><a href="../assertions-module/index.html">assertions</a></li>
<li><a href="../values-module/index.html">values</a></li>
<li><a href="../knowledge-module/index.html">knowledge</a></li>
<li><a href="../imperative-module/index.html">imperative</a></li>
<li><a href="../runtime-module/index.html">runtime</a></li>
<li><a href="../if-module/index.html">if</a></li>
<li><a href="../multimedia-module/index.html">multimedia</a></li>
<li><a href="../index-module/index.html">index</a></li>
</ul><h2>Inter Modules</h2><ul>
<li><a href="../bytecode-module/index.html">bytecode</a></li>
<li><a href="../building-module/index.html">building</a></li>
<li><a href="index.html"><span class="selectedlink">codegen</span></a></li>
</ul><h2>Services</h2><ul>
<li><a href="../arch-module/index.html">arch</a></li>
<li><a href="../calculus-module/index.html">calculus</a></li>
<li><a href="../html-module/index.html">html</a></li>
<li><a href="../inflections-module/index.html">inflections</a></li>
<li><a href="../kinds-module/index.html">kinds</a></li>
<li><a href="../linguistics-module/index.html">linguistics</a></li>
<li><a href="../problems-module/index.html">problems</a></li>
<li><a href="../syntax-module/index.html">syntax</a></li>
<li><a href="../words-module/index.html">words</a></li>
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'Scenes' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inter Modules</a></li><li><a href="index.html">codegen</a></li><li><a href="index.html#3">Chapter 3: Synoptic Resources</a></li><li><b>Scenes</b></li></ul></div>
<p class="purpose">To renumber the scenes and construct suitable functions and arrays.</p>
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. </b>Before this runs, property packages are scattered all over the Inter tree.
We must allocate each one a unique ID.
</p>
<p class="commentary">As this is called, <a href="3-su.html" class="internal">Synoptic Utilities</a> has already formed a list <span class="extract"><span class="extract-syntax">property_nodes</span></span>
of packages of type <span class="extract"><span class="extract-syntax">_activity</span></span>.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">SynopticScenes::renumber</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">SynopticScenes::renumber</span></span>:<br/>Synoptic Utilities - <a href="3-su.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_tree_location_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">scene_nodes</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">TreeLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">scene_nodes</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TreeLists::sort</span><span class="plain-syntax">(</span><span class="identifier-syntax">scene_nodes</span><span class="plain-syntax">, </span><a href="3-su.html#SP2" class="function-link"><span class="function-syntax">Synoptic::module_order</span></a><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">TreeLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">scene_nodes</span><span class="plain-syntax">); </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Package::defined_by_frame</span><span class="plain-syntax">(</span><span class="identifier-syntax">scene_nodes</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">list</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">].</span><span class="identifier-syntax">node</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_textual</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^name"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"scene %d: %S\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</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="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>There are also resources to create in the <span class="extract"><span class="extract-syntax">synoptic</span></span> module:
</p>
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">SHOWSCENESTATUS_SYNID</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">DETECTSCENECHANGE_SYNID</span>
</pre>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">SynopticScenes::redefine</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">SynopticScenes::redefine</span></span>:<br/>Synoptic Utilities - <a href="3-su.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con_s</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">synid</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Packages::container</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> </span><span class="identifier-syntax">IBM</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Bookmarks::at_end_of_this_package</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">synid</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">SHOWSCENESTATUS_SYNID:</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><a href="3-su.html#SP3" class="function-link"><span class="function-syntax">Synoptic::begin_redefining_function</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-scn.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Add a body of code to the SHOWSCENESTATUS function</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="3-su.html#SP3" class="function-link"><span class="function-syntax">Synoptic::end_redefining_function</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">DETECTSCENECHANGE_SYNID:</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><a href="3-su.html#SP3" class="function-link"><span class="function-syntax">Synoptic::begin_redefining_function</span></a><span class="plain-syntax">(&amp;</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-scn.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Add a body of code to the DETECTSCENECHANGE function</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="3-su.html#SP3" class="function-link"><span class="function-syntax">Synoptic::end_redefining_function</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">default:</span><span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP2_1" class="paragraph-anchor"></a><b>&#167;2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add a body of code to the SHOWSCENESTATUS function</span><span class="named-paragraph-number">2.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">TreeLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">scene_nodes</span><span class="plain-syntax">); </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Package::defined_by_frame</span><span class="plain-syntax">(</span><span class="identifier-syntax">scene_nodes</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">list</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">].</span><span class="identifier-syntax">node</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ssf_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^scene_status_fn"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_call</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">ssf_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-scn.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_2" class="paragraph-anchor"></a><b>&#167;2.2. </b>There is one argument, <span class="extract"><span class="extract-syntax">chs</span></span>: the number of iterations so far. Iterations
occur because each set of scene changes could change the circumstances in such
a way that other scene changes are now required (through external conditions,
not through anchors); we don't want this to lock up, so we will cap recursion.
Within the routine, a second local variable, <span class="extract"><span class="extract-syntax">ch</span></span>, is a flag indicating
whether any change in status has or has not occurred.
</p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">MAX_SCENE_CHANGE_ITERATION</span><span class="plain-syntax"> </span><span class="constant-syntax">20</span>
</pre>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add a body of code to the DETECTSCENECHANGE function</span><span class="named-paragraph-number">2.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">chs_s</span><span class="plain-syntax"> = </span><a href="3-su.html#SP3" class="function-link"><span class="function-syntax">Synoptic::get_local</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"chs"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">myself_s</span><span class="plain-syntax"> = </span><a href="3-su.html#SP3" class="function-link"><span class="function-syntax">Synoptic::get_local</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"myself"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Again_l</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Produce::reserve_label</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">".Again"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CScene_l</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Produce::reserve_label</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">".CScene"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::place_label</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">Again_l</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">TreeLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">scene_nodes</span><span class="plain-syntax">); </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Package::defined_by_frame</span><span class="plain-syntax">(</span><span class="identifier-syntax">scene_nodes</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">list</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">].</span><span class="identifier-syntax">node</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">scf_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^scene_change_fn"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IF_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_call</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">scf_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::code</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">JUMP_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::lab</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">CScene_l</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::rfalse</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::place_label</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">CScene_l</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">IF_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">GT_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">chs_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="constant-syntax">MAX_SCENE_CHANGE_ITERATION</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::code</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">PRINT_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"&gt;--&gt; The scene change machinery is stuck.\n"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::rtrue</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">PREINCREMENT_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::ref_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">chs_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="comment-syntax"> Produce::inv_call(I, myself_s);</span>
<span class="comment-syntax"> Produce::down(I);</span>
<span class="comment-syntax"> Produce::inv_primitive(I, PREINCREMENT_BIP);</span>
<span class="comment-syntax"> Produce::down(I);</span>
<span class="comment-syntax"> Produce::ref_symbol(I, K_value, chs_s);</span>
<span class="comment-syntax"> Produce::up(I);</span>
<span class="comment-syntax"> Produce::up(I);</span>
<span class="comment-syntax"> Produce::rtrue(I);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">JUMP_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::lab</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">Again_l</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-scn.html#SP2">&#167;2</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-chr.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresssection"><a href="3-ins.html">ins</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresscurrent">scn</li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="4-cg.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

View file

@ -97,6 +97,8 @@ function togglePopup(material_id) {
<span class="identifier-syntax">inter_tree_location_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">table_column_usage_nodes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span> <span class="identifier-syntax">inter_tree_location_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">table_column_usage_nodes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="identifier-syntax">inter_tree_location_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">past_tense_action_nodes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span> <span class="identifier-syntax">inter_tree_location_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">past_tense_action_nodes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="identifier-syntax">inter_tree_location_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">past_tense_condition_nodes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span> <span class="identifier-syntax">inter_tree_location_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">past_tense_condition_nodes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="identifier-syntax">inter_tree_location_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">instance_nodes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="identifier-syntax">inter_tree_location_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">scene_nodes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::go</span><span class="plain-syntax">(</span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">step</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::go</span><span class="plain-syntax">(</span><span class="reserved-syntax">pipeline_step</span><span class="plain-syntax"> *</span><span class="identifier-syntax">step</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_nodes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TreeLists::new</span><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><span class="identifier-syntax">text_nodes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TreeLists::new</span><span class="plain-syntax">();</span>
@ -113,6 +115,8 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="identifier-syntax">table_column_usage_nodes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TreeLists::new</span><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><span class="identifier-syntax">table_column_usage_nodes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TreeLists::new</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">past_tense_action_nodes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TreeLists::new</span><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><span class="identifier-syntax">past_tense_action_nodes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TreeLists::new</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">past_tense_condition_nodes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TreeLists::new</span><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><span class="identifier-syntax">past_tense_condition_nodes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TreeLists::new</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance_nodes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TreeLists::new</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">scene_nodes</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TreeLists::new</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">InterTree::traverse</span><span class="plain-syntax">(</span><span class="identifier-syntax">step</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">repository</span><span class="plain-syntax">, </span><a href="3-su.html#SP1" class="function-link"><span class="function-syntax">Synoptic::visitor</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">InterTree::traverse</span><span class="plain-syntax">(</span><span class="identifier-syntax">step</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">repository</span><span class="plain-syntax">, </span><a href="3-su.html#SP1" class="function-link"><span class="function-syntax">Synoptic::visitor</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-lt.html#SP1" class="function-link"><span class="function-syntax">SynopticText::alphabetise</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">step</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">repository</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_nodes</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-lt.html#SP1" class="function-link"><span class="function-syntax">SynopticText::alphabetise</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">step</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">repository</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_nodes</span><span class="plain-syntax">);</span>
@ -126,6 +130,8 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><a href="3-rlt.html#SP1" class="function-link"><span class="function-syntax">SynopticRelations::renumber</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">step</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">repository</span><span class="plain-syntax">, </span><span class="identifier-syntax">relation_nodes</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-rlt.html#SP1" class="function-link"><span class="function-syntax">SynopticRelations::renumber</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">step</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">repository</span><span class="plain-syntax">, </span><span class="identifier-syntax">relation_nodes</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-tbl.html#SP1" class="function-link"><span class="function-syntax">SynopticTables::renumber</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">step</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">repository</span><span class="plain-syntax">, </span><span class="identifier-syntax">table_nodes</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-tbl.html#SP1" class="function-link"><span class="function-syntax">SynopticTables::renumber</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">step</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">repository</span><span class="plain-syntax">, </span><span class="identifier-syntax">table_nodes</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-chr.html#SP1" class="function-link"><span class="function-syntax">SynopticChronology::renumber</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">step</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">repository</span><span class="plain-syntax">, </span><span class="identifier-syntax">past_tense_action_nodes</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="3-chr.html#SP1" class="function-link"><span class="function-syntax">SynopticChronology::renumber</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">step</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">repository</span><span class="plain-syntax">, </span><span class="identifier-syntax">past_tense_action_nodes</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-ins.html#SP1" class="function-link"><span class="function-syntax">SynopticInstances::renumber</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">step</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">repository</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance_nodes</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="3-scn.html#SP1" class="function-link"><span class="function-syntax">SynopticScenes::renumber</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">step</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">repository</span><span class="plain-syntax">, </span><span class="identifier-syntax">scene_nodes</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">TRUE</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">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
@ -167,6 +173,12 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="identifier-syntax">TreeLists::add</span><span class="plain-syntax">(</span><span class="identifier-syntax">past_tense_action_nodes</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">TreeLists::add</span><span class="plain-syntax">(</span><span class="identifier-syntax">past_tense_action_nodes</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">ptype</span><span class="plain-syntax"> == </span><span class="identifier-syntax">PackageTypes::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_past_condition"</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">ptype</span><span class="plain-syntax"> == </span><span class="identifier-syntax">PackageTypes::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_past_condition"</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TreeLists::add</span><span class="plain-syntax">(</span><span class="identifier-syntax">past_tense_condition_nodes</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">TreeLists::add</span><span class="plain-syntax">(</span><span class="identifier-syntax">past_tense_condition_nodes</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">ptype</span><span class="plain-syntax"> == </span><span class="identifier-syntax">PackageTypes::get</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"_instance"</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TreeLists::add</span><span class="plain-syntax">(</span><span class="identifier-syntax">instance_nodes</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Package::defined_by_frame</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">Metadata::exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"^is_scene"</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TreeLists::add</span><span class="plain-syntax">(</span><span class="identifier-syntax">scene_nodes</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>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
</pre> </pre>
@ -191,13 +203,14 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-rlt.html#SP2" class="function-link"><span class="function-syntax">SynopticRelations::redefine</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">con_s</span><span class="plain-syntax">, </span><span class="identifier-syntax">synid</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-rlt.html#SP2" class="function-link"><span class="function-syntax">SynopticRelations::redefine</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">con_s</span><span class="plain-syntax">, </span><span class="identifier-syntax">synid</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-tbl.html#SP2" class="function-link"><span class="function-syntax">SynopticTables::redefine</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">con_s</span><span class="plain-syntax">, </span><span class="identifier-syntax">synid</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-tbl.html#SP2" class="function-link"><span class="function-syntax">SynopticTables::redefine</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">con_s</span><span class="plain-syntax">, </span><span class="identifier-syntax">synid</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-chr.html#SP2" class="function-link"><span class="function-syntax">SynopticChronology::redefine</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">con_s</span><span class="plain-syntax">, </span><span class="identifier-syntax">synid</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-chr.html#SP2" class="function-link"><span class="function-syntax">SynopticChronology::redefine</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">con_s</span><span class="plain-syntax">, </span><span class="identifier-syntax">synid</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-scn.html#SP2" class="function-link"><span class="function-syntax">SynopticScenes::redefine</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">con_s</span><span class="plain-syntax">, </span><span class="identifier-syntax">synid</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Couldn't consolidate $3\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">con_s</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Couldn't consolidate $3\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">con_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"symbol cannot be consolidated"</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"symbol cannot be consolidated"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::module_order</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Synoptic::module_order</span></span>:<br/>Rules - <a href="3-rls.html#SP1">&#167;1</a><br/>Activities - <a href="3-act.html#SP1">&#167;1</a><br/>Actions - <a href="3-act2.html#SP2">&#167;2</a><br/>Properties - <a href="3-prp.html#SP1">&#167;1</a><br/>Relations - <a href="3-rlt.html#SP1">&#167;1</a><br/>Tables - <a href="3-tbl.html#SP1">&#167;1</a><br/>Chronology - <a href="3-chr.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ent1</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ent2</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::module_order</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Synoptic::module_order</span></span>:<br/>Rules - <a href="3-rls.html#SP1">&#167;1</a><br/>Activities - <a href="3-act.html#SP1">&#167;1</a><br/>Actions - <a href="3-act2.html#SP2">&#167;2</a><br/>Instances - <a href="3-ins.html#SP1">&#167;1</a><br/>Properties - <a href="3-prp.html#SP1">&#167;1</a><br/>Relations - <a href="3-rlt.html#SP1">&#167;1</a><br/>Tables - <a href="3-tbl.html#SP1">&#167;1</a><br/>Chronology - <a href="3-chr.html#SP1">&#167;1</a><br/>Scenes - <a href="3-scn.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ent1</span><span class="plain-syntax">, </span><span class="reserved-syntax">const</span><span class="plain-syntax"> </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ent2</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">itl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">itl_entry</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">ent1</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">itl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E1</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">itl_entry</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">ent1</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">itl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E2</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">itl_entry</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">ent2</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">itl_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E2</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">itl_entry</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">ent2</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">E1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">E2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">E1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">E2</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
@ -234,14 +247,14 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::create_with_unique_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::Packages::scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">), </span><span class="identifier-syntax">name</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">InterSymbolsTables::create_with_unique_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::Packages::scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">), </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Synoptic::get_local</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Synoptic::get_local</span></span>:<br/>Extensions - <a href="3-ext.html#SP2_3">&#167;2.3</a><br/>Responses - <a href="3-rsp.html#SP2_4">&#167;2.4</a><br/>Rules - <a href="3-rls.html#SP2_6">&#167;2.6</a>, <a href="3-rls.html#SP2_7">&#167;2.7</a><br/>Actions - <a href="3-act2.html#SP3_6">&#167;3.6</a><br/>Relations - <a href="3-rlt.html#SP2_3">&#167;2.3</a>, <a href="3-rlt.html#SP2_4">&#167;2.4</a><br/>Tables - <a href="3-tbl.html#SP2_2">&#167;2.2</a>, <a href="3-tbl.html#SP2_3">&#167;2.3</a><br/>Chronology - <a href="3-chr.html#SP2_6">&#167;2.6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span> <span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Synoptic::get_local</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Synoptic::get_local</span></span>:<br/>Extensions - <a href="3-ext.html#SP2_3">&#167;2.3</a><br/>Responses - <a href="3-rsp.html#SP2_4">&#167;2.4</a><br/>Rules - <a href="3-rls.html#SP2_6">&#167;2.6</a>, <a href="3-rls.html#SP2_7">&#167;2.7</a><br/>Actions - <a href="3-act2.html#SP3_6">&#167;3.6</a><br/>Relations - <a href="3-rlt.html#SP2_3">&#167;2.3</a>, <a href="3-rlt.html#SP2_4">&#167;2.4</a><br/>Tables - <a href="3-tbl.html#SP2_2">&#167;2.2</a>, <a href="3-tbl.html#SP2_3">&#167;2.3</a><br/>Chronology - <a href="3-chr.html#SP2_6">&#167;2.6</a><br/>Scenes - <a href="3-scn.html#SP2_2">&#167;2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Bookmarks::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">Produce::at</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span> <span class="plain-syntax"> </span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Bookmarks::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">Produce::at</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbolsTables::symbol_from_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::Packages::scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">), </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbolsTables::symbol_from_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::Packages::scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">), </span><span class="identifier-syntax">name</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">loc_s</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">Metadata::err</span><span class="plain-syntax">(</span><span class="string-syntax">"local not found"</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</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">loc_s</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">Metadata::err</span><span class="plain-syntax">(</span><span class="string-syntax">"local not found"</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</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">loc_s</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">loc_s</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::begin_redefining_function</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Synoptic::begin_redefining_function</span></span>:<br/>Extensions - <a href="3-ext.html#SP2">&#167;2</a><br/>Responses - <a href="3-rsp.html#SP2">&#167;2</a><br/>Rules - <a href="3-rls.html#SP2">&#167;2</a><br/>Actions - <a href="3-act2.html#SP3">&#167;3</a><br/>Relations - <a href="3-rlt.html#SP2">&#167;2</a><br/>Tables - <a href="3-tbl.html#SP2">&#167;2</a><br/>Chronology - <a href="3-chr.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span> <span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::begin_redefining_function</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Synoptic::begin_redefining_function</span></span>:<br/>Extensions - <a href="3-ext.html#SP2">&#167;2</a><br/>Responses - <a href="3-rsp.html#SP2">&#167;2</a><br/>Rules - <a href="3-rls.html#SP2">&#167;2</a><br/>Actions - <a href="3-act2.html#SP3">&#167;3</a><br/>Relations - <a href="3-rlt.html#SP2">&#167;2</a><br/>Tables - <a href="3-tbl.html#SP2">&#167;2</a><br/>Chronology - <a href="3-chr.html#SP2">&#167;2</a><br/>Scenes - <a href="3-scn.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_bookmark</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">W</span><span class="plain-syntax">.</span><span class="identifier-syntax">data</span><span class="plain-syntax">[</span><span class="identifier-syntax">FORMAT_CONST_IFLD</span><span class="plain-syntax">] != </span><span class="identifier-syntax">CONSTANT_ROUTINE</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">-&gt;</span><span class="identifier-syntax">W</span><span class="plain-syntax">.</span><span class="identifier-syntax">data</span><span class="plain-syntax">[</span><span class="identifier-syntax">FORMAT_CONST_IFLD</span><span class="plain-syntax">] != </span><span class="identifier-syntax">CONSTANT_ROUTINE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"%d\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">W</span><span class="plain-syntax">.</span><span class="identifier-syntax">data</span><span class="plain-syntax">[</span><span class="identifier-syntax">FORMAT_CONST_IFLD</span><span class="plain-syntax">]);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"%d\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">W</span><span class="plain-syntax">.</span><span class="identifier-syntax">data</span><span class="plain-syntax">[</span><span class="identifier-syntax">FORMAT_CONST_IFLD</span><span class="plain-syntax">]);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"not a function"</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"not a function"</span><span class="plain-syntax">);</span>
@ -260,7 +273,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</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">save</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::end_redefining_function</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Synoptic::end_redefining_function</span></span>:<br/>Extensions - <a href="3-ext.html#SP2">&#167;2</a><br/>Responses - <a href="3-rsp.html#SP2">&#167;2</a><br/>Rules - <a href="3-rls.html#SP2">&#167;2</a><br/>Actions - <a href="3-act2.html#SP3">&#167;3</a><br/>Relations - <a href="3-rlt.html#SP2">&#167;2</a><br/>Tables - <a href="3-tbl.html#SP2">&#167;2</a><br/>Chronology - <a href="3-chr.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::end_redefining_function</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Synoptic::end_redefining_function</span></span>:<br/>Extensions - <a href="3-ext.html#SP2">&#167;2</a><br/>Responses - <a href="3-rsp.html#SP2">&#167;2</a><br/>Rules - <a href="3-rls.html#SP2">&#167;2</a><br/>Actions - <a href="3-act2.html#SP3">&#167;3</a><br/>Relations - <a href="3-rlt.html#SP2">&#167;2</a><br/>Tables - <a href="3-tbl.html#SP2">&#167;2</a><br/>Chronology - <a href="3-chr.html#SP2">&#167;2</a><br/>Scenes - <a href="3-scn.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Packaging::set_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">save</span><span class="plain-syntax">.</span><span class="identifier-syntax">saved_IRS</span><span class="plain-syntax">, </span><span class="identifier-syntax">save</span><span class="plain-syntax">.</span><span class="identifier-syntax">saved_enclosure</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">Packaging::set_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">save</span><span class="plain-syntax">.</span><span class="identifier-syntax">saved_IRS</span><span class="plain-syntax">, </span><span class="identifier-syntax">save</span><span class="plain-syntax">.</span><span class="identifier-syntax">saved_enclosure</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::pop_code_position</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">Produce::pop_code_position</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Site::set_cir</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">Site::set_cir</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
@ -346,7 +359,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="identifier-syntax">Q</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">W</span><span class="plain-syntax">.</span><span class="identifier-syntax">data</span><span class="plain-syntax">[</span><span class="identifier-syntax">Q</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">W</span><span class="plain-syntax">.</span><span class="identifier-syntax">extent</span><span class="plain-syntax">-1] = </span><span class="identifier-syntax">val2</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">Q</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">W</span><span class="plain-syntax">.</span><span class="identifier-syntax">data</span><span class="plain-syntax">[</span><span class="identifier-syntax">Q</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">W</span><span class="plain-syntax">.</span><span class="identifier-syntax">extent</span><span class="plain-syntax">-1] = </span><span class="identifier-syntax">val2</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Synoptic::get_definition</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Synoptic::get_definition</span></span>:<br/>Extensions - <a href="3-ext.html#SP1">&#167;1</a><br/>Responses - <a href="3-rsp.html#SP1">&#167;1</a><br/>Rules - <a href="3-rls.html#SP1">&#167;1</a><br/>Activities - <a href="3-act.html#SP1">&#167;1</a><br/>Actions - <a href="3-act2.html#SP2">&#167;2</a><br/>Properties - <a href="3-prp.html#SP1">&#167;1</a><br/>Relations - <a href="3-rlt.html#SP1">&#167;1</a><br/>Tables - <a href="3-tbl.html#SP1">&#167;1</a>, <a href="3-tbl.html#SP2_4">&#167;2.4</a><br/>Chronology - <a href="3-chr.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span> <span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Synoptic::get_definition</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Synoptic::get_definition</span></span>:<br/>Extensions - <a href="3-ext.html#SP1">&#167;1</a><br/>Responses - <a href="3-rsp.html#SP1">&#167;1</a><br/>Rules - <a href="3-rls.html#SP1">&#167;1</a><br/>Activities - <a href="3-act.html#SP1">&#167;1</a><br/>Actions - <a href="3-act2.html#SP2">&#167;2</a><br/>Instances - <a href="3-ins.html#SP1">&#167;1</a><br/>Properties - <a href="3-prp.html#SP1">&#167;1</a><br/>Relations - <a href="3-rlt.html#SP1">&#167;1</a><br/>Tables - <a href="3-tbl.html#SP1">&#167;1</a>, <a href="3-tbl.html#SP2_4">&#167;2.4</a><br/>Chronology - <a href="3-chr.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pack</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbolsTables::symbol_from_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::Packages::scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">), </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">def_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbolsTables::symbol_from_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::Packages::scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">), </span><span class="identifier-syntax">name</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">def_s</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</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">def_s</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Unable to find symbol %S in $6\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Unable to find symbol %S in $6\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">pack</span><span class="plain-syntax">);</span>
@ -380,7 +393,7 @@ function togglePopup(material_id) {
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
</pre> </pre>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-ero.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresscurrent">su</li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-ext.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="2-ero.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresscurrent">su</li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresssection"><a href="3-ins.html">ins</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresssection"><a href="3-tbl.html">tbl</a></li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-ext.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -288,7 +288,7 @@ of packages of type <span class="extract"><span class="extract-syntax">_table</s
</pre> </pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-tbl.html#SP2">&#167;2</a>.</li></ul> <ul class="endnotetexts"><li>This code is used in <a href="3-tbl.html#SP2">&#167;2</a>.</li></ul>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-rlt.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresscurrent">tbl</li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-chr.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="3-rlt.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-su.html">su</a></li><li class="progresssection"><a href="3-ext.html">ext</a></li><li class="progresssection"><a href="3-lt.html">lt</a></li><li class="progresssection"><a href="3-rsp.html">rsp</a></li><li class="progresssection"><a href="3-rls.html">rls</a></li><li class="progresssection"><a href="3-act.html">act</a></li><li class="progresssection"><a href="3-act2.html">act2</a></li><li class="progresssection"><a href="3-ins.html">ins</a></li><li class="progresssection"><a href="3-prp.html">prp</a></li><li class="progresssection"><a href="3-rlt.html">rlt</a></li><li class="progresscurrent">tbl</li><li class="progresssection"><a href="3-chr.html">chr</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresschapter"><a href="4-cg.html">4</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="3-chr.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -305,7 +305,7 @@ we also have to direct it to a given text.
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
</pre> </pre>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="3-chr.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresschapter"><a href="3-su.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">cg</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-cal.html">cal</a></li><li class="progresssection"><a href="4-iap.html">iap</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="4-fc.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="3-scn.html">&#10094;</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-mt.html">2</a></li><li class="progresschapter"><a href="3-su.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">cg</li><li class="progresssection"><a href="4-fc.html">fc</a></li><li class="progresssection"><a href="4-cal.html">cal</a></li><li class="progresssection"><a href="4-iap.html">iap</a></li><li class="progresssection"><a href="4-vrb.html">vrb</a></li><li class="progresschapter"><a href="5-ft.html">5</a></li><li class="progressnext"><a href="4-fc.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->
</main> </main>

View file

@ -198,6 +198,11 @@
<spon class="sectiontitle">Actions</span></a> - <spon class="sectiontitle">Actions</span></a> -
<span class="sectionpurpose">To renumber the actions and construct suitable functions and arrays.</span></p> <span class="sectionpurpose">To renumber the actions and construct suitable functions and arrays.</span></p>
</li> </li>
<li>
<p class="sectionentry"><a href="3-ins.html">
<spon class="sectiontitle">Instances</span></a> -
<span class="sectionpurpose">To renumber the instances and construct suitable functions and arrays.</span></p>
</li>
<li> <li>
<p class="sectionentry"><a href="3-prp.html"> <p class="sectionentry"><a href="3-prp.html">
<spon class="sectiontitle">Properties</span></a> - <spon class="sectiontitle">Properties</span></a> -
@ -218,6 +223,11 @@
<spon class="sectiontitle">Chronology</span></a> - <spon class="sectiontitle">Chronology</span></a> -
<span class="sectionpurpose">To construct suitable functions and arrays to manage past-tense references in code.</span></p> <span class="sectionpurpose">To construct suitable functions and arrays to manage past-tense references in code.</span></p>
</li> </li>
<li>
<p class="sectionentry"><a href="3-scn.html">
<spon class="sectiontitle">Scenes</span></a> -
<span class="sectionpurpose">To renumber the scenes and construct suitable functions and arrays.</span></p>
</li>
</ul> </ul>
</li> </li>
<li> <li>

View file

@ -326,6 +326,7 @@ so on. Those absolute basics are made here.
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTRules::rulebook_var_creators</span><span class="plain-syntax">)</span> <span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTRules::rulebook_var_creators</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTRules::compile_rulebooks</span><span class="plain-syntax">)</span> <span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTRules::compile_rulebooks</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTRules::compile_metadata</span><span class="plain-syntax">)</span> <span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTRules::compile_metadata</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTInstances::compile_metadata</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTProperties::compile_metadata</span><span class="plain-syntax">)</span> <span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTProperties::compile_metadata</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTActivities::activity_var_creators</span><span class="plain-syntax">)</span> <span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTActivities::activity_var_creators</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTVerbs::ConjugateVerb</span><span class="plain-syntax">)</span> <span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTVerbs::ConjugateVerb</span><span class="plain-syntax">)</span>

View file

@ -97,8 +97,11 @@ to non-trivial functions as well as tables of data.
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Scenes::production_line</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">debugging</span><span class="plain-syntax">,</span> <span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Scenes::production_line</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">debugging</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">stopwatch_timer</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sequence_timer</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><span class="identifier-syntax">stopwatch_timer</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sequence_timer</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">stage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">INTER1_CSEQ</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">stage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">INTER1_CSEQ</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTScenes::DetectSceneChange_routine</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTScenes::compile_change_functions</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTScenes::ShowSceneStatus_routine</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTScenes::compile_show_status_functions</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">stage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">INTER3_CSEQ</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTScenes::compile_synoptic_resources</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>

File diff suppressed because one or more lines are too long

View file

@ -381,7 +381,7 @@ it represents an actual number at run-time, the second if not:
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::iname_constant</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">Emit::iname_constant</span></span>:<br/>Hierarchy - <a href="2-hrr.html#SP23">&#167;23</a><br/>Responses - <a href="4-rsp.html#SP6">&#167;6</a><br/>Rules - <a href="5-rls.html#SP2">&#167;2</a>, <a href="5-rls.html#SP7">&#167;7</a>, <a href="5-rls.html#SP10">&#167;10</a>, <a href="5-rls.html#SP12">&#167;12</a><br/>Activities - <a href="5-act.html#SP2">&#167;2</a><br/>Runtime Support for Kinds - <a href="5-rsfk.html#SP14">&#167;14</a><br/>Instance Counting - <a href="5-ic.html#SP9">&#167;9</a><br/>Relations at Run Time - <a href="5-rart.html#SP1">&#167;1</a>, <a href="5-rart.html#SP4">&#167;4</a>, <a href="5-rart.html#SP4_1">&#167;4.1</a><br/>Runtime Support for Tables - <a href="5-rsft.html#SP4_1_1_1_1_3">&#167;4.1.1.1.1.3</a><br/>Chronology - <a href="5-chr.html#SP3">&#167;3</a>, <a href="5-chr.html#SP4">&#167;4</a><br/>Naming - <a href="6-nmn.html#SP2">&#167;2</a><br/>Spatial - <a href="6-spt.html#SP1">&#167;1</a><br/>The Map - <a href="6-tm.html#SP2_1">&#167;2.1</a><br/>The Score - <a href="6-ts.html#SP1">&#167;1</a><br/>Actions - <a href="7-act.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val_iname</span><span class="plain-syntax">) {</span> <span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::iname_constant</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">Emit::iname_constant</span></span>:<br/>Hierarchy - <a href="2-hrr.html#SP23">&#167;23</a><br/>Responses - <a href="4-rsp.html#SP6">&#167;6</a><br/>Rules - <a href="5-rls.html#SP2">&#167;2</a>, <a href="5-rls.html#SP7">&#167;7</a>, <a href="5-rls.html#SP10">&#167;10</a>, <a href="5-rls.html#SP12">&#167;12</a><br/>Activities - <a href="5-act.html#SP2">&#167;2</a><br/>Runtime Support for Kinds - <a href="5-rsfk.html#SP14">&#167;14</a><br/>Instance Counting - <a href="5-ic.html#SP9">&#167;9</a><br/>Relations at Run Time - <a href="5-rart.html#SP1">&#167;1</a>, <a href="5-rart.html#SP4">&#167;4</a>, <a href="5-rart.html#SP4_1">&#167;4.1</a><br/>Runtime Support for Tables - <a href="5-rsft.html#SP4_1_1_1_1_3">&#167;4.1.1.1.1.3</a><br/>Chronology - <a href="5-chr.html#SP3">&#167;3</a>, <a href="5-chr.html#SP4">&#167;4</a><br/>Naming - <a href="6-nmn.html#SP2">&#167;2</a><br/>Spatial - <a href="6-spt.html#SP1">&#167;1</a><br/>The Map - <a href="6-tm.html#SP2_1">&#167;2.1</a><br/>The Score - <a href="6-ts.html#SP1">&#167;1</a><br/>Scenes - <a href="6-scn.html#SP2">&#167;2</a>, <a href="6-scn.html#SP6">&#167;6</a><br/>Actions - <a href="7-act.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val_iname</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::enter_home_of</span><span class="plain-syntax">(</span><span class="identifier-syntax">con_iname</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Packaging::enter_home_of</span><span class="plain-syntax">(</span><span class="identifier-syntax">con_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Produce::define_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">con_iname</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Produce::define_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">con_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kind_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Produce::kind_to_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kind_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Produce::kind_to_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>

File diff suppressed because one or more lines are too long

View file

@ -86,11 +86,28 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><a href="5-ni.html#SP1" class="function-link"><span class="function-syntax">NounIdentifiers::noun_compose_identifier</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">instance_package</span><span class="plain-syntax">,</span> <span class="plain-syntax"> </span><a href="5-ni.html#SP1" class="function-link"><span class="function-syntax">NounIdentifiers::noun_compose_identifier</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">instance_package</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_noun</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_noun</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="identifier-syntax">instance_iname</span><span class="plain-syntax"> = </span><a href="5-ni.html#SP1" class="function-link"><span class="function-syntax">NounIdentifiers::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_noun</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="identifier-syntax">instance_iname</span><span class="plain-syntax"> = </span><a href="5-ni.html#SP1" class="function-link"><span class="function-syntax">NounIdentifiers::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_noun</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata_from_wording</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">instance_package</span><span class="plain-syntax">, </span><span class="constant-syntax">INSTANCE_NAME_METADATA_HL</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Nouns::nominative</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_noun</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="identifier-syntax">instance_emitted</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="identifier-syntax">instance_emitted</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTInstances::compile_metadata</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata_from_wording</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">instance_package</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="constant-syntax">INSTANCE_NAME_METADATA_HL</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Nouns::nominative</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_noun</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata_from_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">instance_package</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="constant-syntax">INSTANCE_VALUE_METADATA_HL</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">instance_iname</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">kn_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP12" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">INSTANCE_KIND_METADATA_HL</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">instance_package</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="5-rsfk.html#SP14" class="function-link"><span class="function-syntax">RTKinds::constant_from_strong_id</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">kn_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">K_scene</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_scene</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP23" class="function-link"><span class="function-syntax">Hierarchy::apply_metadata_from_number</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">instance_package</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="constant-syntax">INSTANCE_IS_SCENE_METADATA_HL</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTInstances::iname</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">RTInstances::iname</span></span>:<br/><a href="5-ins.html#SP2">&#167;2</a>, <a href="5-ins.html#SP4">&#167;4</a><br/>List Literals - <a href="4-ll.html#SP7_2">&#167;7.2</a><br/>Stored Action Literals - <a href="4-sal.html#SP1">&#167;1</a><br/>Runtime Support for Kinds - <a href="5-rsfk.html#SP26_3">&#167;26.3</a><br/>Naming - <a href="6-nmn.html#SP2">&#167;2</a><br/>The Player - <a href="6-tp.html#SP1">&#167;1</a><br/>Backdrops - <a href="6-bck.html#SP2_1">&#167;2.1</a><br/>Regions - <a href="6-rgn.html#SP2">&#167;2</a><br/>The Map - <a href="6-tm.html#SP2_2">&#167;2.2</a>, <a href="6-tm.html#SP3">&#167;3</a>, <a href="6-tm.html#SP4">&#167;4</a><br/>Action Patterns - <a href="7-ap.html#SP6_1_1_1">&#167;6.1.1.1</a><br/>Tokens Parsing Values - <a href="8-tpv.html#SP1_1">&#167;1.1</a><br/>Test Scripts - <a href="10-ts.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span> <span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTInstances::iname</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">RTInstances::iname</span></span>:<br/><a href="5-ins.html#SP2">&#167;2</a>, <a href="5-ins.html#SP4">&#167;4</a><br/>List Literals - <a href="4-ll.html#SP7_2">&#167;7.2</a><br/>Stored Action Literals - <a href="4-sal.html#SP1">&#167;1</a><br/>Runtime Support for Kinds - <a href="5-rsfk.html#SP26_3">&#167;26.3</a><br/>Naming - <a href="6-nmn.html#SP2">&#167;2</a><br/>The Player - <a href="6-tp.html#SP1">&#167;1</a><br/>Backdrops - <a href="6-bck.html#SP2_1">&#167;2.1</a><br/>Regions - <a href="6-rgn.html#SP2">&#167;2</a><br/>The Map - <a href="6-tm.html#SP2_2">&#167;2.2</a>, <a href="6-tm.html#SP3">&#167;3</a>, <a href="6-tm.html#SP4">&#167;4</a><br/>Action Patterns - <a href="7-ap.html#SP6_1_1_1">&#167;6.1.1.1</a><br/>Tokens Parsing Values - <a href="8-tpv.html#SP1_1">&#167;1.1</a><br/>Test Scripts - <a href="10-ts.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">instance_iname</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">instance_iname</span><span class="plain-syntax">;</span>
@ -152,7 +169,7 @@ declarations) and finally return <span class="extract"><span class="extract-synt
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">iname</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">iname</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">RTInstances::package</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">RTInstances::package</span></span>:<br/>Emit Property Values - <a href="5-epv.html#SP2">&#167;2</a><br/>Naming - <a href="6-nmn.html#SP2">&#167;2</a><br/>Backdrops - <a href="6-bck.html#SP1">&#167;1</a><br/>Regions - <a href="6-rgn.html#SP1">&#167;1</a><br/>The Map - <a href="6-tm.html#SP3">&#167;3</a><br/>Actions - <a href="7-act.html#SP1">&#167;1</a><br/>Parsing - <a href="8-prs.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span> <span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">RTInstances::package</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">RTInstances::package</span></span>:<br/>Emit Property Values - <a href="5-epv.html#SP2">&#167;2</a><br/>Naming - <a href="6-nmn.html#SP2">&#167;2</a><br/>Backdrops - <a href="6-bck.html#SP1">&#167;1</a><br/>Regions - <a href="6-rgn.html#SP1">&#167;1</a><br/>The Map - <a href="6-tm.html#SP3">&#167;3</a><br/>Scenes - <a href="6-scn.html#SP2">&#167;2</a>, <a href="6-scn.html#SP6">&#167;6</a><br/>Actions - <a href="7-act.html#SP1">&#167;1</a><br/>Parsing - <a href="8-prs.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="5-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">); </span><span class="comment-syntax"> Thus forcing this to exist...</span> <span class="plain-syntax"> </span><a href="5-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">); </span><span class="comment-syntax"> Thus forcing this to exist...</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">instance_package</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">instance_package</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>

View file

@ -618,7 +618,7 @@ turns up. This means remembering everything we've seen, using a new structure:
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTKinds::constant_from_strong_id</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">RTKinds::constant_from_strong_id</span></span>:<br/>Runtime Support for Tables - <a href="5-rsft.html#SP1">&#167;1</a><br/>Actions - <a href="7-act.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTKinds::constant_from_strong_id</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">RTKinds::constant_from_strong_id</span></span>:<br/>Instances - <a href="5-ins.html#SP1">&#167;1</a><br/>Runtime Support for Tables - <a href="5-rsft.html#SP1">&#167;1</a><br/>Actions - <a href="7-act.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">runtime_kind_structure</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rks</span><span class="plain-syntax"> = </span><a href="5-rsfk.html#SP15" class="function-link"><span class="function-syntax">RTKinds::get_rks</span></a><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">runtime_kind_structure</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rks</span><span class="plain-syntax"> = </span><a href="5-rsfk.html#SP15" class="function-link"><span class="function-syntax">RTKinds::get_rks</span></a><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">rks</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">rks</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP11" class="function-link"><span class="function-syntax">Emit::iname_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">rks</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rks_iname</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="2-emt.html#SP11" class="function-link"><span class="function-syntax">Emit::iname_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">rks</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rks_iname</span><span class="plain-syntax">);</span>

View file

@ -113,89 +113,33 @@ occurs, and (b) act upon it. This is all handled by the following Inter
function. function.
</p> </p>
<p class="commentary">There is one argument, <span class="extract"><span class="extract-syntax">chs</span></span>: the number of iterations so far. Iterations
occur because each set of scene changes could change the circumstances in such
a way that other scene changes are now required (through external conditions,
not through anchors); we don't want this to lock up, so we will cap recursion.
Within the routine, a second local variable, <span class="extract"><span class="extract-syntax">ch</span></span>, is a flag indicating
whether any change in status has or has not occurred.
</p>
<p class="commentary">There is no significance to the return value. <p class="commentary">There is no significance to the return value.
</p> </p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">MAX_SCENE_CHANGE_ITERATION</span><span class="plain-syntax"> </span><span class="constant-syntax">20</span>
</pre>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTScenes::DetectSceneChange_routine</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTScenes::compile_change_functions</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</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">iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DETECTSCENECHANGE_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Functions::begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">chs_s</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"chs"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"count of changes made"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ch_s</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"ch"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"flag: change made"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CScene_l</span><span class="plain-syntax"> = </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::reserve_label</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">".CScene"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">scene</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sc</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">scene</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sc</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">, </span><span class="identifier-syntax">scene</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="6-scn.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Compile code detecting the ends of a specific scene</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">, </span><span class="identifier-syntax">scene</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">iname</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::place_label</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">CScene_l</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="2-hrr.html#SP12" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SCENE_CHANGE_FN_HL</span><span class="plain-syntax">, </span><a href="5-ins.html#SP4" class="function-link"><span class="function-syntax">RTInstances::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_instance</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-scn.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Add the scene-change tail</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Functions::begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ch_s</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Functions::end</span><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"ch"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"flag: change made"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP17" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-scn.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Compile code detecting the ends of a specific scene</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP11" class="function-link"><span class="function-syntax">EmitCode::rfalse</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Functions::end</span><span class="plain-syntax">(</span><span class="identifier-syntax">save</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">md_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP12" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">INSTANCE_SCF_METADATA_HL</span><span class="plain-syntax">, </span><a href="5-ins.html#SP4" class="function-link"><span class="function-syntax">RTInstances::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_instance</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP11" class="function-link"><span class="function-syntax">Emit::iname_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">md_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</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_1" class="paragraph-anchor"></a><b>&#167;2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add the scene-change tail</span><span class="named-paragraph-number">2.1</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP2_1" class="paragraph-anchor"></a><b>&#167;2.1. </b>Recall that ends numbered 1, 2, 3, ... are all ways for the scene to end,
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><a href="2-ec.html#SP10" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IF_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP10" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">GT_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">chs_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_number</span></a><span class="plain-syntax">((</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="constant-syntax">MAX_SCENE_CHANGE_ITERATION</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP5" class="function-link"><span class="function-syntax">EmitCode::code</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP10" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PRINT_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"&gt;--&gt; The scene change machinery is stuck.\n"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP11" class="function-link"><span class="function-syntax">EmitCode::rtrue</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP10" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IF_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP10" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">GT_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">ch_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_number</span></a><span class="plain-syntax">(0);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP5" class="function-link"><span class="function-syntax">EmitCode::code</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP10" class="function-link"><span class="function-syntax">EmitCode::call</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP10" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PREINCREMENT_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP9" class="function-link"><span class="function-syntax">EmitCode::ref_symbol</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">chs_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP11" class="function-link"><span class="function-syntax">EmitCode::rfalse</span></a><span class="plain-syntax">();</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="6-scn.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_2" class="paragraph-anchor"></a><b>&#167;2.2. </b>Recall that ends numbered 1, 2, 3, ... are all ways for the scene to end,
so they are only checked if its status is currently running; end 0 is the so they are only checked if its status is currently running; end 0 is the
beginning, checked only if it isn't. We give priority to the higher end beginning, checked only if it isn't. We give priority to the higher end
numbers so that more abstruse ways to end take precedence over less. numbers so that more abstruse ways to end take precedence over less.
</p> </p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile code detecting the ends of a specific scene</span><span class="named-paragraph-number">2.2</span></span><span class="comment-syntax"> =</span> <p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile code detecting the ends of a specific scene</span><span class="named-paragraph-number">2.1</span></span><span class="comment-syntax"> =</span>
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
@ -213,7 +157,7 @@ numbers so that more abstruse ways to end take precedence over less.
<span class="plain-syntax"> </span><a href="2-ec.html#SP5" class="function-link"><span class="function-syntax">EmitCode::code</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP5" class="function-link"><span class="function-syntax">EmitCode::code</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">end</span><span class="plain-syntax">=</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">no_ends</span><span class="plain-syntax">-1; </span><span class="identifier-syntax">end</span><span class="plain-syntax">&gt;=1; </span><span class="identifier-syntax">end</span><span class="plain-syntax">--)</span> <span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">end</span><span class="plain-syntax">=</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">no_ends</span><span class="plain-syntax">-1; </span><span class="identifier-syntax">end</span><span class="plain-syntax">&gt;=1; </span><span class="identifier-syntax">end</span><span class="plain-syntax">--)</span>
<span class="plain-syntax"> </span><a href="6-scn.html#SP3" class="function-link"><span class="function-syntax">RTScenes::test_scene_end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">, </span><span class="identifier-syntax">end</span><span class="plain-syntax">, </span><span class="identifier-syntax">ch_s</span><span class="plain-syntax">, </span><span class="identifier-syntax">CScene_l</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="6-scn.html#SP3" class="function-link"><span class="function-syntax">RTScenes::test_scene_end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">, </span><span class="identifier-syntax">end</span><span class="plain-syntax">, </span><span class="identifier-syntax">ch_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
@ -230,7 +174,7 @@ numbers so that more abstruse ways to end take precedence over less.
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP5" class="function-link"><span class="function-syntax">EmitCode::code</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP5" class="function-link"><span class="function-syntax">EmitCode::code</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="6-scn.html#SP3" class="function-link"><span class="function-syntax">RTScenes::test_scene_end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">ch_s</span><span class="plain-syntax">, </span><span class="identifier-syntax">CScene_l</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="6-scn.html#SP3" class="function-link"><span class="function-syntax">RTScenes::test_scene_end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">ch_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
</pre> </pre>
@ -243,7 +187,7 @@ below.
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTScenes::test_scene_end</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">RTScenes::test_scene_end</span></span>:<br/><a href="6-scn.html#SP2_2">&#167;2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">scene</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">end</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ch_s</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CScene_l</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTScenes::test_scene_end</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">RTScenes::test_scene_end</span></span>:<br/><a href="6-scn.html#SP2_1">&#167;2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">scene</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">end</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ch_s</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">end</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">start_of_play</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">end</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">start_of_play</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP10" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IF_BIP</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP10" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IF_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
@ -316,10 +260,7 @@ instruction because we're not compiling a loop.)
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_number</span></a><span class="plain-syntax">(1);</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_number</span></a><span class="plain-syntax">(1);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="6-scn.html#SP4" class="function-link"><span class="function-syntax">RTScenes::compile_scene_end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">, </span><span class="identifier-syntax">end</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="6-scn.html#SP4" class="function-link"><span class="function-syntax">RTScenes::compile_scene_end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">, </span><span class="identifier-syntax">end</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP10" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">JUMP_BIP</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP11" class="function-link"><span class="function-syntax">EmitCode::rtrue</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP13" class="function-link"><span class="function-syntax">EmitCode::lab</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">CScene_l</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
</pre> </pre>
@ -589,15 +530,16 @@ what handles this.
</p> </p>
<pre class="displayed-code all-displayed-code code-font"> <pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTScenes::ShowSceneStatus_routine</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span> <span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTScenes::compile_show_status_functions</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</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">iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SHOWSCENESTATUS_HL</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">scene</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sc</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Functions::begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">, </span><span class="identifier-syntax">scene</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP10" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IFDEBUG_BIP</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">iname</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><a href="2-hrr.html#SP12" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SCENE_STATUS_FN_HL</span><span class="plain-syntax">, </span><a href="5-ins.html#SP4" class="function-link"><span class="function-syntax">RTInstances::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_instance</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP5" class="function-link"><span class="function-syntax">EmitCode::code</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Functions::begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP10" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IFDEBUG_BIP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">scene</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sc</span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP5" class="function-link"><span class="function-syntax">EmitCode::code</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">, </span><span class="identifier-syntax">scene</span><span class="plain-syntax">) {</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::down</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">NW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::get_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_instance</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">NW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::get_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_instance</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP10" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IFELSE_BIP</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP10" class="function-link"><span class="function-syntax">EmitCode::inv</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">IFELSE_BIP</span><span class="plain-syntax">);</span>
@ -620,11 +562,12 @@ what handles this.
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-scn.html#SP6_2" class="named-paragraph-link"><span class="named-paragraph">Show status of this non-running scene</span><span class="named-paragraph-number">6.2</span></a></span><span class="plain-syntax">;</span> <span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-scn.html#SP6_2" class="named-paragraph-link"><span class="named-paragraph">Show status of this non-running scene</span><span class="named-paragraph-number">6.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> }</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP3" class="function-link"><span class="function-syntax">EmitCode::up</span></a><span class="plain-syntax">();</span> <span class="plain-syntax"> </span><span class="identifier-syntax">Functions::end</span><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Functions::end</span><span class="plain-syntax">(</span><span class="identifier-syntax">save</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">md_iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP12" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">INSTANCE_SSF_METADATA_HL</span><span class="plain-syntax">, </span><a href="5-ins.html#SP4" class="function-link"><span class="function-syntax">RTInstances::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">as_instance</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP17" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span> <span class="plain-syntax"> </span><a href="2-emt.html#SP11" class="function-link"><span class="function-syntax">Emit::iname_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">md_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
</pre> </pre>
<p class="commentary firstcommentary"><a id="SP6_1" class="paragraph-anchor"></a><b>&#167;6.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show status of this running scene</span><span class="named-paragraph-number">6.1</span></span><span class="comment-syntax"> =</span> <p class="commentary firstcommentary"><a id="SP6_1" class="paragraph-anchor"></a><b>&#167;6.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Show status of this running scene</span><span class="named-paragraph-number">6.1</span></span><span class="comment-syntax"> =</span>
@ -780,6 +723,44 @@ actually running:
<span class="plain-syntax"> }</span> <span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span> <span class="plain-syntax">}</span>
</pre> </pre>
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>&#167;8. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTScenes::compile_synoptic_resources</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-scn.html#SP8_1" class="named-paragraph-link"><span class="named-paragraph">Provide placeholder for the SHOWSCENESTATUS function</span><span class="named-paragraph-number">8.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-scn.html#SP8_2" class="named-paragraph-link"><span class="named-paragraph">Provide placeholder for the DETECTSCENECHANGE function</span><span class="named-paragraph-number">8.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP8_1" class="paragraph-anchor"></a><b>&#167;8.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Provide placeholder for the SHOWSCENESTATUS function</span><span class="named-paragraph-number">8.1</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SHOWSCENESTATUS_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">SYNOPTIC_IANN</span><span class="plain-syntax">, </span><span class="identifier-syntax">SHOWSCENESTATUS_SYNID</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Functions::begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP6" class="function-link"><span class="function-syntax">EmitCode::comment</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"This function is consolidated"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Functions::end</span><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP17" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="6-scn.html#SP8">&#167;8</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP8_2" class="paragraph-anchor"></a><b>&#167;8.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Provide placeholder for the DETECTSCENECHANGE function</span><span class="named-paragraph-number">8.2</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP11" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DETECTSCENECHANGE_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">SYNOPTIC_IANN</span><span class="plain-syntax">, </span><span class="identifier-syntax">DETECTSCENECHANGE_SYNID</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Functions::begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"chs"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"count of changes made"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ch_s</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LocalVariables::new_internal_commented_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"ch"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"flag: change made"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">myself_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbolsTables::create_with_unique_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">ch_s</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">owning_table</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"myself"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::equate</span><span class="plain-syntax">(</span><span class="identifier-syntax">myself_s</span><span class="plain-syntax">, </span><span class="identifier-syntax">InterNames::to_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP6" class="function-link"><span class="function-syntax">EmitCode::comment</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"This function is consolidated"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Functions::end</span><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-hrr.html#SP17" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="6-scn.html#SP8">&#167;8</a>.</li></ul>
<nav role="progress"><div class="progresscontainer"> <nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="6-tr.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-fc.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-rls.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-nmn.html">nmn</a></li><li class="progresssection"><a href="6-bd.html">bd</a></li><li class="progresssection"><a href="6-spt.html">spt</a></li><li class="progresssection"><a href="6-tp.html">tp</a></li><li class="progresssection"><a href="6-bck.html">bck</a></li><li class="progresssection"><a href="6-rgn.html">rgn</a></li><li class="progresssection"><a href="6-tm.html">tm</a></li><li class="progresssection"><a href="6-ts.html">ts</a></li><li class="progresssection"><a href="6-tr.html">tr</a></li><li class="progresscurrent">scn</li><li class="progresschapter"><a href="7-act.html">7</a></li><li class="progresschapter"><a href="8-prs.html">8</a></li><li class="progresschapter"><a href="9-fgr.html">9</a></li><li class="progresschapter"><a href="10-sc.html">10</a></li><li class="progressnext"><a href="7-act.html">&#10095;</a></li></ul></div> <ul class="progressbar"><li class="progressprev"><a href="6-tr.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-fc.html">3</a></li><li class="progresschapter"><a href="4-enc.html">4</a></li><li class="progresschapter"><a href="5-rls.html">5</a></li><li class="progresscurrentchapter">6</li><li class="progresssection"><a href="6-nmn.html">nmn</a></li><li class="progresssection"><a href="6-bd.html">bd</a></li><li class="progresssection"><a href="6-spt.html">spt</a></li><li class="progresssection"><a href="6-tp.html">tp</a></li><li class="progresssection"><a href="6-bck.html">bck</a></li><li class="progresssection"><a href="6-rgn.html">rgn</a></li><li class="progresssection"><a href="6-tm.html">tm</a></li><li class="progresssection"><a href="6-ts.html">ts</a></li><li class="progresssection"><a href="6-tr.html">tr</a></li><li class="progresscurrent">scn</li><li class="progresschapter"><a href="7-act.html">7</a></li><li class="progresschapter"><a href="8-prs.html">8</a></li><li class="progresschapter"><a href="9-fgr.html">9</a></li><li class="progresschapter"><a href="10-sc.html">10</a></li><li class="progressnext"><a href="7-act.html">&#10095;</a></li></ul></div>
</nav><!--End of weave--> </nav><!--End of weave-->

View file

@ -1,12 +1,12 @@
Total memory consumption was 296195K = 289 MB Total memory consumption was 298905K = 292 MB
63.7% was used for 1463905 objects, in 316039 frames in 236 x 800K = 188800K = 184 MB: 63.9% was used for 1469154 objects, in 316296 frames in 239 x 800K = 191200K = 186 MB:
9.5% inter_tree_node_array 40 x 8192 = 327680 objects, 28837120 bytes 9.4% inter_tree_node_array 40 x 8192 = 327680 objects, 28837120 bytes
5.9% text_stream_array 3229 x 100 = 322900 objects, 18185728 bytes 5.9% text_stream_array 3258 x 100 = 325800 objects, 18349056 bytes
5.3% linked_list 29077 objects, 16283120 bytes 5.3% linked_list 29092 objects, 16291520 bytes
3.4% parse_node 129367 objects, 10349360 bytes 3.3% parse_node 129367 objects, 10349360 bytes
2.7% inter_symbol_array 84 x 1024 = 86016 objects, 8260224 bytes 2.7% inter_symbol_array 85 x 1024 = 87040 objects, 8358560 bytes
2.4% verb_conjugation 160 objects, 7425280 bytes 2.4% verb_conjugation 160 objects, 7425280 bytes
1.8% parse_node_annotation_array 345 x 500 = 172500 objects, 5531040 bytes 1.8% parse_node_annotation_array 345 x 500 = 172500 objects, 5531040 bytes
1.0% pcalc_prop_array 24 x 1000 = 24000 objects, 3264768 bytes 1.0% pcalc_prop_array 24 x 1000 = 24000 objects, 3264768 bytes
@ -14,22 +14,22 @@ Total memory consumption was 296195K = 289 MB
0.8% kind_array 66 x 1000 = 66000 objects, 2642112 bytes 0.8% kind_array 66 x 1000 = 66000 objects, 2642112 bytes
0.6% inter_schema_token 13459 objects, 1938096 bytes 0.6% inter_schema_token 13459 objects, 1938096 bytes
0.5% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes 0.5% vocabulary_entry_array 161 x 100 = 16100 objects, 1808352 bytes
0.4% inter_name_array 29 x 1000 = 29000 objects, 1392928 bytes 0.4% inter_name_array 30 x 1000 = 30000 objects, 1440960 bytes
0.4% match_trie_array 10 x 1000 = 10000 objects, 1360320 bytes 0.4% match_trie_array 10 x 1000 = 10000 objects, 1360320 bytes
0.4% i6_schema_array 21 x 100 = 2100 objects, 1260672 bytes 0.4% i6_schema_array 21 x 100 = 2100 objects, 1260672 bytes
0.3% id_body 940 objects, 1075360 bytes 0.3% id_body 940 objects, 1075360 bytes
0.3% inter_package 14893 objects, 1072296 bytes 0.3% inter_package 14899 objects, 1072728 bytes
0.3% adjective_meaning 202 objects, 1000304 bytes 0.3% adjective_meaning 202 objects, 1000304 bytes
0.3% excerpt_meaning 3098 objects, 966576 bytes 0.3% excerpt_meaning 3098 objects, 966576 bytes
0.3% inter_name_generator_array 24 x 1000 = 24000 objects, 960768 bytes 0.3% inter_name_generator_array 24 x 1000 = 24000 objects, 960768 bytes
0.3% inter_symbols_table 14893 objects, 953152 bytes 0.3% inter_symbols_table 14899 objects, 953536 bytes
0.3% dictionary 19366 objects, 929568 bytes 0.3% dictionary 19542 objects, 938016 bytes
0.2% production 3885 objects, 901320 bytes 0.2% production 3885 objects, 901320 bytes
0.2% dict_entry_array 272 x 100 = 27200 objects, 879104 bytes 0.2% dict_entry_array 273 x 100 = 27300 objects, 882336 bytes
0.2% ptoken 8390 objects, 872560 bytes 0.2% ptoken 8390 objects, 872560 bytes
0.2% grammatical_usage 3610 objects, 866400 bytes 0.2% grammatical_usage 3610 objects, 866400 bytes
0.2% individual_form 2560 objects, 860160 bytes 0.2% individual_form 2560 objects, 860160 bytes
0.2% package_request 9536 objects, 839168 bytes 0.2% package_request 9540 objects, 839520 bytes
0.2% inter_schema_node 8663 objects, 831648 bytes 0.2% inter_schema_node 8663 objects, 831648 bytes
0.2% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes 0.2% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
0.1% local_variable_array 46 x 100 = 4600 objects, 443072 bytes 0.1% local_variable_array 46 x 100 = 4600 objects, 443072 bytes
@ -47,14 +47,14 @@ Total memory consumption was 296195K = 289 MB
---- nonterminal 759 objects, 139656 bytes ---- nonterminal 759 objects, 139656 bytes
---- compilation_subtask 1664 objects, 133120 bytes ---- compilation_subtask 1664 objects, 133120 bytes
---- nascent_array 1969 objects, 126016 bytes ---- nascent_array 1969 objects, 126016 bytes
---- hierarchy_location 805 objects, 115920 bytes ---- hierarchy_location 812 objects, 116928 bytes
---- documentation_ref 1274 objects, 112112 bytes ---- documentation_ref 1274 objects, 112112 bytes
---- inference 1703 objects, 108992 bytes ---- inference 1703 objects, 108992 bytes
---- imperative_defn 1376 objects, 99072 bytes ---- imperative_defn 1376 objects, 99072 bytes
---- anl_entry_array 2 x 1000 = 2000 objects, 96064 bytes ---- anl_entry_array 2 x 1000 = 2000 objects, 96064 bytes
---- noun_usage 2401 objects, 96040 bytes ---- noun_usage 2401 objects, 96040 bytes
---- preposition 273 objects, 87360 bytes ---- preposition 273 objects, 87360 bytes
---- inter_tree 6 objects, 82128 bytes ---- inter_tree 6 objects, 82464 bytes
---- lexical_cluster 2516 objects, 80512 bytes ---- lexical_cluster 2516 objects, 80512 bytes
---- pcalc_term_array 2 x 1000 = 2000 objects, 80064 bytes ---- pcalc_term_array 2 x 1000 = 2000 objects, 80064 bytes
---- kind_variable_declaration 1652 objects, 79296 bytes ---- kind_variable_declaration 1652 objects, 79296 bytes
@ -110,11 +110,11 @@ Total memory consumption was 296195K = 289 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 292 objects, 11680 bytes ---- pathname 292 objects, 11680 bytes
---- stopwatch_timer 138 objects, 11040 bytes ---- stopwatch_timer 140 objects, 11200 bytes
---- filename 208 objects, 8320 bytes ---- filename 208 objects, 8320 bytes
---- equation_node 68 objects, 7616 bytes ---- equation_node 68 objects, 7616 bytes
---- uniqueness_count 306 objects, 7344 bytes
---- understanding_item_array 3 x 100 = 300 objects, 7296 bytes ---- understanding_item_array 3 x 100 = 300 objects, 7296 bytes
---- uniqueness_count 302 objects, 7248 bytes
---- shared_variable_array 1 x 100 objects, 7232 bytes ---- shared_variable_array 1 x 100 objects, 7232 bytes
---- determiner 22 objects, 7216 bytes ---- determiner 22 objects, 7216 bytes
---- verb 108 objects, 6048 bytes ---- verb 108 objects, 6048 bytes
@ -141,7 +141,7 @@ Total memory consumption was 296195K = 289 MB
---- inform_extension 19 objects, 3040 bytes ---- inform_extension 19 objects, 3040 bytes
---- either_or_property_data 62 objects, 2976 bytes ---- either_or_property_data 62 objects, 2976 bytes
---- property_of_value_storage 93 objects, 2976 bytes ---- property_of_value_storage 93 objects, 2976 bytes
---- submodule_request 71 objects, 2840 bytes ---- submodule_request 73 objects, 2920 bytes
---- part_of_inference_data 79 objects, 2528 bytes ---- part_of_inference_data 79 objects, 2528 bytes
---- parentage_inference_data 79 objects, 2528 bytes ---- parentage_inference_data 79 objects, 2528 bytes
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes ---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
@ -176,24 +176,24 @@ Total memory consumption was 296195K = 289 MB
---- target_vm 6 objects, 816 bytes ---- target_vm 6 objects, 816 bytes
---- generated_segment 25 objects, 800 bytes ---- generated_segment 25 objects, 800 bytes
---- inter_data_type 14 objects, 784 bytes ---- inter_data_type 14 objects, 784 bytes
---- submodule_identity 23 objects, 736 bytes ---- submodule_identity 24 objects, 768 bytes
---- inform_language 6 objects, 672 bytes ---- inform_language 6 objects, 672 bytes
---- relation_guard 5 objects, 640 bytes
---- inter_warehouse_room 10 objects, 640 bytes ---- inter_warehouse_room 10 objects, 640 bytes
---- relation_guard 5 objects, 640 bytes
---- inter_tree_location_list 16 objects, 640 bytes
---- I6T_intervention 8 objects, 640 bytes ---- I6T_intervention 8 objects, 640 bytes
---- named_rulebook_outcome 15 objects, 600 bytes ---- named_rulebook_outcome 15 objects, 600 bytes
---- inbuild_search_result 15 objects, 600 bytes ---- inbuild_search_result 15 objects, 600 bytes
---- inter_tree_location_list 14 objects, 560 bytes
---- rulebook_outcome 17 objects, 544 bytes ---- rulebook_outcome 17 objects, 544 bytes
---- small_word_set 11 objects, 528 bytes ---- small_word_set 11 objects, 528 bytes
---- inform_kit 5 objects, 520 bytes
---- implication 13 objects, 520 bytes ---- implication 13 objects, 520 bytes
---- inform_kit 5 objects, 520 bytes
---- inference_family 11 objects, 440 bytes ---- inference_family 11 objects, 440 bytes
---- i6_memory_setting 13 objects, 416 bytes
---- equation 4 objects, 416 bytes ---- equation 4 objects, 416 bytes
---- i6_memory_setting 13 objects, 416 bytes
---- dval_written 10 objects, 400 bytes ---- dval_written 10 objects, 400 bytes
---- bp_family 12 objects, 384 bytes
---- article_usage 8 objects, 384 bytes ---- article_usage 8 objects, 384 bytes
---- bp_family 12 objects, 384 bytes
---- source_file 5 objects, 360 bytes ---- source_file 5 objects, 360 bytes
---- module_package 9 objects, 360 bytes ---- module_package 9 objects, 360 bytes
---- inbuild_genre 7 objects, 336 bytes ---- inbuild_genre 7 objects, 336 bytes
@ -237,24 +237,24 @@ Total memory consumption was 296195K = 289 MB
---- kind_template_definition 1 object, 40 bytes ---- kind_template_definition 1 object, 40 bytes
---- parse_name_notice 1 object, 40 bytes ---- parse_name_notice 1 object, 40 bytes
36.2% was used for memory not allocated for objects: 36.0% was used for memory not allocated for objects:
16.7% text stream storage 50819960 bytes in 333795 claims 16.6% text stream storage 51038332 bytes in 336609 claims
3.5% dictionary storage 10831872 bytes in 19366 claims 3.5% dictionary storage 10921984 bytes in 19542 claims
---- sorting 952 bytes in 3 claims ---- sorting 968 bytes in 3 claims
2.3% source text 7200000 bytes in 3 claims 2.3% source text 7200000 bytes in 3 claims
3.5% source text details 10800000 bytes in 2 claims 3.5% source text details 10800000 bytes in 2 claims
---- 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
0.8% inter symbols storage 2567488 bytes in 15716 claims 0.8% inter symbols storage 2568752 bytes in 15723 claims
5.5% inter bytecode storage 16802776 bytes in 14 claims 5.4% inter bytecode storage 16802776 bytes in 14 claims
2.8% inter links storage 8750208 bytes in 246 claims 2.8% inter links storage 8750208 bytes in 246 claims
---- inter tree location list storage 113920 bytes in 16 claims ---- inter tree location list storage 122112 bytes in 18 claims
0.5% instance-of-kind counting 1695204 bytes in 1 claim 0.5% instance-of-kind counting 1695204 bytes in 1 claim
---- compilation workspace for objects 21856 bytes in 25 claims ---- compilation workspace for objects 21856 bytes in 25 claims
---- lists for type-checking invocations 16000 bytes in 1 claim ---- lists for type-checking invocations 16000 bytes in 1 claim
---- emitter array storage 155664 bytes in 2042 claims ---- emitter array storage 155664 bytes in 2042 claims
---- code generation workspace for objects 9192 bytes in 9 claims ---- code generation workspace for objects 9192 bytes in 9 claims
20.1% was overhead - 61158504 bytes = 59725K = 58 MB 20.6% was overhead - 63283368 bytes = 61800K = 60 MB

View file

@ -1,37 +1,38 @@
100.0% in inform7 run 100.0% in inform7 run
53.3% in compilation to Inter 53.3% in compilation to Inter
31.9% in //Sequence::undertake_queued_tasks// 32.2% in //Sequence::undertake_queued_tasks//
5.3% in //InferenceSubjects::emit_all// 5.5% in //InferenceSubjects::emit_all//
3.4% in //MajorNodes::pre_pass// 3.3% in //MajorNodes::pre_pass//
3.0% in //MajorNodes::pass_1// 3.0% in //MajorNodes::pass_1//
1.7% in //ImperativeDefinitions::compile_first_block// 1.5% in //ImperativeDefinitions::assess_all//
1.4% in //ImperativeDefinitions::assess_all// 1.5% in //ImperativeDefinitions::compile_first_block//
0.9% in //RTVerbs::ConjugateVerb// 0.9% in //RTVerbs::ConjugateVerb//
0.6% in //RTRules::compile_rulebooks// 0.6% in //RTRules::compile_rulebooks//
0.4% in //MajorNodes::pass_2// 0.3% in //MajorNodes::pass_2//
0.4% in //World::stage_V// 0.3% in //World::stage_V//
0.1% in //RTActions::compile_functions// 0.1% in //RTActions::compile_functions//
0.1% in //RTCommandGrammars::compile_all// 0.1% in //RTCommandGrammars::compile_all//
0.1% in //RTKinds::compile_data_type_support_routines// 0.1% in //RTKinds::compile_data_type_support_routines//
0.1% in //RTRelations::compile_defined_relations// 0.1% in //RTRelations::compile_defined_relations//
0.1% in //RTRules::compile_metadata// 0.1% in //RTRules::compile_metadata//
0.1% in //RTTables::compile//
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.7% not specifically accounted for 2.6% not specifically accounted for
44.4% in running Inter pipeline 44.7% in running Inter pipeline
14.3% in inter step 10/14: consolidate-text 14.2% in inter step 10/14: consolidate-text
10.4% in step preparation 10.7% in step preparation
8.7% in inter step 2/14: link 8.5% in inter step 2/14: link
6.3% in inter step 14/14: generate inform6 -> auto.inf 6.7% in inter step 14/14: generate inform6 -> auto.inf
0.6% in inter step 9/14: make-identifiers-unique 0.6% in inter step 9/14: make-identifiers-unique
0.3% in inter step 11/14: reconcile-verbs
0.3% in inter step 13/14: eliminate-redundant-operations 0.3% in inter step 13/14: eliminate-redundant-operations
0.1% in inter step 11/14: reconcile-verbs 0.3% in inter step 6/14: assimilate
0.1% in inter step 12/14: eliminate-redundant-labels 0.1% in inter step 12/14: eliminate-redundant-labels
0.1% in inter step 4/14: parse-linked-matter 0.1% in inter step 4/14: parse-linked-matter
0.1% in inter step 5/14: resolve-conditional-compilation 0.1% in inter step 5/14: resolve-conditional-compilation
0.1% in inter step 6/14: assimilate
0.1% in inter step 7/14: resolve-external-symbols 0.1% in inter step 7/14: resolve-external-symbols
0.1% in inter step 8/14: inspect-plugs 0.1% in inter step 8/14: inspect-plugs
2.5% not specifically accounted for 2.1% not specifically accounted for
1.8% in supervisor 1.7% in supervisor
0.4% not specifically accounted for 0.2% not specifically accounted for

View file

@ -207,6 +207,7 @@ so on. Those absolute basics are made here.
BENCH(RTRules::rulebook_var_creators) BENCH(RTRules::rulebook_var_creators)
BENCH(RTRules::compile_rulebooks) BENCH(RTRules::compile_rulebooks)
BENCH(RTRules::compile_metadata) BENCH(RTRules::compile_metadata)
BENCH(RTInstances::compile_metadata)
BENCH(RTProperties::compile_metadata) BENCH(RTProperties::compile_metadata)
BENCH(RTActivities::activity_var_creators) BENCH(RTActivities::activity_var_creators)
BENCH(RTVerbs::ConjugateVerb) BENCH(RTVerbs::ConjugateVerb)

View file

@ -24,8 +24,11 @@ void Scenes::start(void) {
int Scenes::production_line(int stage, int debugging, int Scenes::production_line(int stage, int debugging,
stopwatch_timer *sequence_timer) { stopwatch_timer *sequence_timer) {
if (stage == INTER1_CSEQ) { if (stage == INTER1_CSEQ) {
BENCH(RTScenes::DetectSceneChange_routine); BENCH(RTScenes::compile_change_functions);
BENCH(RTScenes::ShowSceneStatus_routine); BENCH(RTScenes::compile_show_status_functions);
}
if (stage == INTER3_CSEQ) {
BENCH(RTScenes::compile_synoptic_resources);
} }
return FALSE; return FALSE;
} }

View file

@ -191,6 +191,7 @@ void Hierarchy::establish(void) {
@<Establish relations@>; @<Establish relations@>;
@<Establish rulebooks@>; @<Establish rulebooks@>;
@<Establish rules@>; @<Establish rules@>;
@<Establish scenes@>;
@<Establish tables@>; @<Establish tables@>;
@<Establish variables@>; @<Establish variables@>;
@<Establish enclosed matter@>; @<Establish enclosed matter@>;
@ -245,11 +246,11 @@ void Hierarchy::establish(void) {
H_C_T(KIT_CONFIGURATION_BITMAP_HL, I"KIT_CONFIGURATION_BITMAP") H_C_T(KIT_CONFIGURATION_BITMAP_HL, I"KIT_CONFIGURATION_BITMAP")
H_C_T(KIT_CONFIGURATION_LOOKMODE_HL, I"KIT_CONFIGURATION_LOOKMODE") H_C_T(KIT_CONFIGURATION_LOOKMODE_HL, I"KIT_CONFIGURATION_LOOKMODE")
H_C_T(LOCALPARKING_HL, I"LocalParking") H_C_T(LOCALPARKING_HL, I"LocalParking")
H_C_T(RNG_SEED_AT_START_OF_PLAY_HL, I"RNG_SEED_AT_START_OF_PLAY")
H_END H_END
H_BEGIN(HierarchyLocations::synoptic_submodule(I, basics)) H_BEGIN(HierarchyLocations::synoptic_submodule(I, basics))
H_C_T(MAX_FRAME_SIZE_NEEDED_HL, I"MAX_FRAME_SIZE_NEEDED") H_C_T(MAX_FRAME_SIZE_NEEDED_HL, I"MAX_FRAME_SIZE_NEEDED")
H_C_T(RNG_SEED_AT_START_OF_PLAY_HL, I"RNG_SEED_AT_START_OF_PLAY")
H_END H_END
submodule_identity *basic_extras = Packaging::register_submodule(I"BasicInformExtrasKit"); submodule_identity *basic_extras = Packaging::register_submodule(I"BasicInformExtrasKit");
@ -704,7 +705,14 @@ void Hierarchy::establish(void) {
@e INSTANCES_HAP @e INSTANCES_HAP
@e INSTANCE_NAME_METADATA_HL @e INSTANCE_NAME_METADATA_HL
@e INSTANCE_VALUE_METADATA_HL
@e INSTANCE_KIND_METADATA_HL
@e INSTANCE_IS_SCENE_METADATA_HL
@e INSTANCE_SSF_METADATA_HL
@e INSTANCE_SCF_METADATA_HL
@e INSTANCE_HL @e INSTANCE_HL
@e SCENE_STATUS_FN_HL
@e SCENE_CHANGE_FN_HL
@e BACKDROP_FOUND_IN_FN_HL @e BACKDROP_FOUND_IN_FN_HL
@e REGION_FOUND_IN_FN_HL @e REGION_FOUND_IN_FN_HL
@e SHORT_NAME_FN_HL @e SHORT_NAME_FN_HL
@ -720,7 +728,14 @@ void Hierarchy::establish(void) {
H_BEGIN(HierarchyLocations::local_submodule(instances)) H_BEGIN(HierarchyLocations::local_submodule(instances))
H_BEGIN_AP(INSTANCES_HAP, I"instance", I"_instance") H_BEGIN_AP(INSTANCES_HAP, I"instance", I"_instance")
H_C_U(INSTANCE_NAME_METADATA_HL, I"^name") H_C_U(INSTANCE_NAME_METADATA_HL, I"^name")
H_C_U(INSTANCE_VALUE_METADATA_HL, I"^value")
H_C_U(INSTANCE_KIND_METADATA_HL, I"^kind")
H_C_U(INSTANCE_IS_SCENE_METADATA_HL, I"^is_scene")
H_C_U(INSTANCE_SSF_METADATA_HL, I"^scene_status_fn")
H_C_U(INSTANCE_SCF_METADATA_HL, I"^scene_change_fn")
H_C_U(INSTANCE_HL, I"I") H_C_U(INSTANCE_HL, I"I")
H_F_U(SCENE_STATUS_FN_HL, I"scene_status_fn")
H_F_U(SCENE_CHANGE_FN_HL, I"scene_change_fn")
H_F_U(BACKDROP_FOUND_IN_FN_HL, I"backdrop_found_in_fn") H_F_U(BACKDROP_FOUND_IN_FN_HL, I"backdrop_found_in_fn")
H_F_G(SHORT_NAME_FN_HL, I"short_name_fn", I"SN_R") H_F_G(SHORT_NAME_FN_HL, I"short_name_fn", I"SN_R")
H_F_G(SHORT_NAME_PROPERTY_FN_HL, I"short_name_property_fn", I"SN_R_A") H_F_G(SHORT_NAME_PROPERTY_FN_HL, I"short_name_property_fn", I"SN_R_A")
@ -737,8 +752,6 @@ void Hierarchy::establish(void) {
@e INITIAL_MAX_SCORE_HL @e INITIAL_MAX_SCORE_HL
@e NO_DIRECTIONS_HL @e NO_DIRECTIONS_HL
@e SHOWSCENESTATUS_HL
@e DETECTSCENECHANGE_HL
@e MAP_STORAGE_HL @e MAP_STORAGE_HL
@e INITIALSITUATION_HL @e INITIALSITUATION_HL
@e PLAYER_OBJECT_INIS_HL @e PLAYER_OBJECT_INIS_HL
@ -752,18 +765,19 @@ void Hierarchy::establish(void) {
@<Establish int-fiction@> = @<Establish int-fiction@> =
submodule_identity *interactive_fiction = Packaging::register_submodule(I"interactive_fiction"); submodule_identity *interactive_fiction = Packaging::register_submodule(I"interactive_fiction");
H_BEGIN(HierarchyLocations::synoptic_submodule(I, interactive_fiction)) H_BEGIN(HierarchyLocations::generic_submodule(I, interactive_fiction))
H_C_T(INITIAL_MAX_SCORE_HL, I"INITIAL_MAX_SCORE")
H_C_T(NO_DIRECTIONS_HL, I"No_Directions")
H_F_T(SHOWSCENESTATUS_HL, I"show_scene_status_fn", I"ShowSceneStatus")
H_F_T(DETECTSCENECHANGE_HL, I"detect_scene_change_fn", I"DetectSceneChange")
H_C_T(MAP_STORAGE_HL, I"Map_Storage")
H_C_T(INITIALSITUATION_HL, I"InitialSituation")
H_C_T(PLAYER_OBJECT_INIS_HL, I"PLAYER_OBJECT_INIS") H_C_T(PLAYER_OBJECT_INIS_HL, I"PLAYER_OBJECT_INIS")
H_C_T(START_OBJECT_INIS_HL, I"START_OBJECT_INIS") H_C_T(START_OBJECT_INIS_HL, I"START_OBJECT_INIS")
H_C_T(START_ROOM_INIS_HL, I"START_ROOM_INIS") H_C_T(START_ROOM_INIS_HL, I"START_ROOM_INIS")
H_C_T(START_TIME_INIS_HL, I"START_TIME_INIS") H_C_T(START_TIME_INIS_HL, I"START_TIME_INIS")
H_C_T(DONE_INIS_HL, I"DONE_INIS") H_C_T(DONE_INIS_HL, I"DONE_INIS")
H_END
H_BEGIN(HierarchyLocations::synoptic_submodule(I, interactive_fiction))
H_C_T(INITIAL_MAX_SCORE_HL, I"INITIAL_MAX_SCORE")
H_C_T(NO_DIRECTIONS_HL, I"No_Directions")
H_C_T(MAP_STORAGE_HL, I"Map_Storage")
H_C_T(INITIALSITUATION_HL, I"InitialSituation")
H_BEGIN_AP(DIRECTIONS_HAP, I"direction", I"_direction") H_BEGIN_AP(DIRECTIONS_HAP, I"direction", I"_direction")
H_C_G(DIRECTION_HL, I"DirectionObject") H_C_G(DIRECTION_HL, I"DirectionObject")
H_END H_END
@ -1157,6 +1171,18 @@ void Hierarchy::establish(void) {
H_F_T(RULEPRINTINGRULE_HL, I"print_fn", I"RulePrintingRule") H_F_T(RULEPRINTINGRULE_HL, I"print_fn", I"RulePrintingRule")
H_END H_END
@h Scenes.
@e SHOWSCENESTATUS_HL
@e DETECTSCENECHANGE_HL
@<Establish scenes@> =
submodule_identity *scenes = Packaging::register_submodule(I"scenes");
H_BEGIN(HierarchyLocations::synoptic_submodule(I, scenes))
H_F_T(SHOWSCENESTATUS_HL, I"show_scene_status_fn", I"ShowSceneStatus")
H_F_T(DETECTSCENECHANGE_HL, I"detect_scene_change_fn", I"DetectSceneChange")
H_END
@h Tables. @h Tables.
@e TABLES_HAP @e TABLES_HAP

View file

@ -16,11 +16,28 @@ void RTInstances::initialise_icd(instance *I) {
NounIdentifiers::noun_compose_identifier(I->icd.instance_package, NounIdentifiers::noun_compose_identifier(I->icd.instance_package,
I->as_noun, I->allocation_id); I->as_noun, I->allocation_id);
I->icd.instance_iname = NounIdentifiers::iname(I->as_noun); I->icd.instance_iname = NounIdentifiers::iname(I->as_noun);
Hierarchy::apply_metadata_from_wording(I->icd.instance_package, INSTANCE_NAME_METADATA_HL,
Nouns::nominative(I->as_noun, FALSE));
I->icd.instance_emitted = FALSE; I->icd.instance_emitted = FALSE;
} }
void RTInstances::compile_metadata(void) {
instance *I;
LOOP_OVER(I, instance) {
Hierarchy::apply_metadata_from_wording(I->icd.instance_package,
INSTANCE_NAME_METADATA_HL,
Nouns::nominative(I->as_noun, FALSE));
Hierarchy::apply_metadata_from_iname(I->icd.instance_package,
INSTANCE_VALUE_METADATA_HL,
I->icd.instance_iname);
inter_name *kn_iname = Hierarchy::make_iname_in(INSTANCE_KIND_METADATA_HL,
I->icd.instance_package);
kind *K = Instances::to_kind(I);
RTKinds::constant_from_strong_id(kn_iname, K);
if ((K_scene) && (Kinds::eq(K, K_scene)))
Hierarchy::apply_metadata_from_number(I->icd.instance_package,
INSTANCE_IS_SCENE_METADATA_HL, 1);
}
}
inter_name *RTInstances::iname(instance *I) { inter_name *RTInstances::iname(instance *I) {
if (I == NULL) return NULL; if (I == NULL) return NULL;
return I->icd.instance_iname; return I->icd.instance_iname;

View file

@ -34,76 +34,25 @@ The following generates the necessary code to (a) detect when a scene end
occurs, and (b) act upon it. This is all handled by the following Inter occurs, and (b) act upon it. This is all handled by the following Inter
function. function.
There is one argument, |chs|: the number of iterations so far. Iterations
occur because each set of scene changes could change the circumstances in such
a way that other scene changes are now required (through external conditions,
not through anchors); we don't want this to lock up, so we will cap recursion.
Within the routine, a second local variable, |ch|, is a flag indicating
whether any change in status has or has not occurred.
There is no significance to the return value. There is no significance to the return value.
@d MAX_SCENE_CHANGE_ITERATION 20
= =
void RTScenes::DetectSceneChange_routine(void) { void RTScenes::compile_change_functions(void) {
inter_name *iname = Hierarchy::find(DETECTSCENECHANGE_HL);
packaging_state save = Functions::begin(iname);
inter_symbol *chs_s =
LocalVariables::new_internal_commented_as_symbol(I"chs", I"count of changes made");
inter_symbol *ch_s =
LocalVariables::new_internal_commented_as_symbol(I"ch", I"flag: change made");
inter_symbol *CScene_l = EmitCode::reserve_label(I".CScene");
scene *sc; scene *sc;
LOOP_OVER(sc, scene) @<Compile code detecting the ends of a specific scene@>; LOOP_OVER(sc, scene) {
inter_name *iname =
EmitCode::place_label(CScene_l); Hierarchy::make_iname_in(SCENE_CHANGE_FN_HL, RTInstances::package(sc->as_instance));
@<Add the scene-change tail@>; packaging_state save = Functions::begin(iname);
inter_symbol *ch_s =
Functions::end(save); LocalVariables::new_internal_commented_as_symbol(I"ch", I"flag: change made");
Hierarchy::make_available(iname); @<Compile code detecting the ends of a specific scene@>;
EmitCode::rfalse();
Functions::end(save);
inter_name *md_iname = Hierarchy::make_iname_in(INSTANCE_SCF_METADATA_HL, RTInstances::package(sc->as_instance));
Emit::iname_constant(md_iname, K_value, iname);
}
} }
@<Add the scene-change tail@> =
EmitCode::inv(IF_BIP);
EmitCode::down();
EmitCode::inv(GT_BIP);
EmitCode::down();
EmitCode::val_symbol(K_value, chs_s);
EmitCode::val_number((inter_ti) MAX_SCENE_CHANGE_ITERATION);
EmitCode::up();
EmitCode::code();
EmitCode::down();
EmitCode::inv(PRINT_BIP);
EmitCode::down();
EmitCode::val_text(I">--> The scene change machinery is stuck.\n");
EmitCode::up();
EmitCode::rtrue();
EmitCode::up();
EmitCode::up();
EmitCode::inv(IF_BIP);
EmitCode::down();
EmitCode::inv(GT_BIP);
EmitCode::down();
EmitCode::val_symbol(K_value, ch_s);
EmitCode::val_number(0);
EmitCode::up();
EmitCode::code();
EmitCode::down();
EmitCode::call(iname);
EmitCode::down();
EmitCode::inv(PREINCREMENT_BIP);
EmitCode::down();
EmitCode::ref_symbol(K_value, chs_s);
EmitCode::up();
EmitCode::up();
EmitCode::up();
EmitCode::up();
EmitCode::rfalse();
@ Recall that ends numbered 1, 2, 3, ... are all ways for the scene to end, @ Recall that ends numbered 1, 2, 3, ... are all ways for the scene to end,
so they are only checked if its status is currently running; end 0 is the so they are only checked if its status is currently running; end 0 is the
beginning, checked only if it isn't. We give priority to the higher end beginning, checked only if it isn't. We give priority to the higher end
@ -124,7 +73,7 @@ numbers so that more abstruse ways to end take precedence over less.
EmitCode::code(); EmitCode::code();
EmitCode::down(); EmitCode::down();
for (int end=sc->no_ends-1; end>=1; end--) for (int end=sc->no_ends-1; end>=1; end--)
RTScenes::test_scene_end(sc, end, ch_s, CScene_l); RTScenes::test_scene_end(sc, end, ch_s);
EmitCode::up(); EmitCode::up();
EmitCode::up(); EmitCode::up();
@ -141,7 +90,7 @@ numbers so that more abstruse ways to end take precedence over less.
EmitCode::up(); EmitCode::up();
EmitCode::code(); EmitCode::code();
EmitCode::down(); EmitCode::down();
RTScenes::test_scene_end(sc, 0, ch_s, CScene_l); RTScenes::test_scene_end(sc, 0, ch_s);
EmitCode::up(); EmitCode::up();
EmitCode::up(); EmitCode::up();
@ -152,7 +101,7 @@ two, because the third way will be taken care of by the consequences code
below. below.
= =
void RTScenes::test_scene_end(scene *sc, int end, inter_symbol *ch_s, inter_symbol *CScene_l) { void RTScenes::test_scene_end(scene *sc, int end, inter_symbol *ch_s) {
if ((end == 0) && (sc->start_of_play)) { if ((end == 0) && (sc->start_of_play)) {
EmitCode::inv(IF_BIP); EmitCode::inv(IF_BIP);
EmitCode::down(); EmitCode::down();
@ -217,10 +166,7 @@ instruction because we're not compiling a loop.)
EmitCode::val_number(1); EmitCode::val_number(1);
EmitCode::up(); EmitCode::up();
RTScenes::compile_scene_end(sc, end); RTScenes::compile_scene_end(sc, end);
EmitCode::inv(JUMP_BIP); EmitCode::rtrue();
EmitCode::down();
EmitCode::lab(CScene_l);
EmitCode::up();
EmitCode::up(); EmitCode::up();
EmitCode::up(); EmitCode::up();
@ -461,15 +407,16 @@ scene status at the moment the command is typed, and the following code is
what handles this. what handles this.
= =
void RTScenes::ShowSceneStatus_routine(void) { void RTScenes::compile_show_status_functions(void) {
inter_name *iname = Hierarchy::find(SHOWSCENESTATUS_HL); scene *sc;
packaging_state save = Functions::begin(iname); LOOP_OVER(sc, scene) {
EmitCode::inv(IFDEBUG_BIP); inter_name *iname =
EmitCode::down(); Hierarchy::make_iname_in(SCENE_STATUS_FN_HL, RTInstances::package(sc->as_instance));
EmitCode::code(); packaging_state save = Functions::begin(iname);
EmitCode::inv(IFDEBUG_BIP);
EmitCode::down(); EmitCode::down();
scene *sc; EmitCode::code();
LOOP_OVER(sc, scene) { EmitCode::down();
wording NW = Instances::get_name(sc->as_instance, FALSE); wording NW = Instances::get_name(sc->as_instance, FALSE);
EmitCode::inv(IFELSE_BIP); EmitCode::inv(IFELSE_BIP);
@ -492,11 +439,12 @@ void RTScenes::ShowSceneStatus_routine(void) {
@<Show status of this non-running scene@>; @<Show status of this non-running scene@>;
EmitCode::up(); EmitCode::up();
EmitCode::up(); EmitCode::up();
} EmitCode::up();
EmitCode::up(); EmitCode::up();
EmitCode::up(); Functions::end(save);
Functions::end(save); inter_name *md_iname = Hierarchy::make_iname_in(INSTANCE_SSF_METADATA_HL, RTInstances::package(sc->as_instance));
Hierarchy::make_available(iname); Emit::iname_constant(md_iname, K_value, iname);
}
} }
@<Show status of this running scene@> = @<Show status of this running scene@> =
@ -638,3 +586,33 @@ void RTScenes::emit_during_clause(parse_node *spec) {
return; return;
} }
} }
@
=
void RTScenes::compile_synoptic_resources(void) {
@<Provide placeholder for the SHOWSCENESTATUS function@>;
@<Provide placeholder for the DETECTSCENECHANGE function@>;
}
@<Provide placeholder for the SHOWSCENESTATUS function@> =
inter_name *iname = Hierarchy::find(SHOWSCENESTATUS_HL);
Produce::annotate_i(iname, SYNOPTIC_IANN, SHOWSCENESTATUS_SYNID);
packaging_state save = Functions::begin(iname);
EmitCode::comment(I"This function is consolidated");
Functions::end(save);
Hierarchy::make_available(iname);
@<Provide placeholder for the DETECTSCENECHANGE function@> =
inter_name *iname = Hierarchy::find(DETECTSCENECHANGE_HL);
Produce::annotate_i(iname, SYNOPTIC_IANN, DETECTSCENECHANGE_SYNID);
packaging_state save = Functions::begin(iname);
LocalVariables::new_internal_commented_as_symbol(I"chs", I"count of changes made");
inter_symbol *ch_s =
LocalVariables::new_internal_commented_as_symbol(I"ch", I"flag: change made");
inter_symbol *myself_s = InterSymbolsTables::create_with_unique_name(ch_s->owning_table, I"myself");
InterSymbolsTables::equate(myself_s, InterNames::to_symbol(iname));
EmitCode::comment(I"This function is consolidated");
Functions::end(save);
Hierarchy::make_available(iname);

View file

@ -0,0 +1,20 @@
[SynopticInstances::] Instances.
To renumber the instances and construct suitable functions and arrays.
@ Before this runs, instance packages are scattered all over the Inter tree.
As this is called, //Synoptic Utilities// has already formed a list |instance_nodes|
of packages of type |_instance|.
=
void SynopticInstances::renumber(inter_tree *I, inter_tree_location_list *instance_nodes) {
if (TreeLists::len(instance_nodes) > 0) {
TreeLists::sort(instance_nodes, Synoptic::module_order);
// for (int i=0; i<TreeLists::len(instance_nodes); i++) {
// inter_package *pack = Inter::Package::defined_by_frame(instance_nodes->list[i].node);
// inter_tree_node *D = Synoptic::get_definition(pack, I"scene_id");
// D->W.data[DATA_CONST_IFLD+1] = (inter_ti) i;
// }
}
}

View file

@ -0,0 +1,123 @@
[SynopticScenes::] Scenes.
To renumber the scenes and construct suitable functions and arrays.
@ Before this runs, property packages are scattered all over the Inter tree.
We must allocate each one a unique ID.
As this is called, //Synoptic Utilities// has already formed a list |property_nodes|
of packages of type |_activity|.
=
void SynopticScenes::renumber(inter_tree *I, inter_tree_location_list *scene_nodes) {
if (TreeLists::len(scene_nodes) > 0) {
TreeLists::sort(scene_nodes, Synoptic::module_order);
for (int i=0; i<TreeLists::len(scene_nodes); i++) {
inter_package *pack = Inter::Package::defined_by_frame(scene_nodes->list[i].node);
text_stream *name = Metadata::read_optional_textual(pack, I"^name");
LOG("scene %d: %S\n", i, name);
}
}
}
@ There are also resources to create in the |synoptic| module:
@e SHOWSCENESTATUS_SYNID
@e DETECTSCENECHANGE_SYNID
=
int SynopticScenes::redefine(inter_tree *I, inter_tree_node *P, inter_symbol *con_s, int synid) {
inter_package *pack = Inter::Packages::container(P);
inter_bookmark IBM = Inter::Bookmarks::at_end_of_this_package(pack);
switch (synid) {
case SHOWSCENESTATUS_SYNID: {
packaging_state save = Synoptic::begin_redefining_function(&IBM, I, P);
@<Add a body of code to the SHOWSCENESTATUS function@>;
Synoptic::end_redefining_function(I, save);
break;
}
case DETECTSCENECHANGE_SYNID: {
packaging_state save = Synoptic::begin_redefining_function(&IBM, I, P);
@<Add a body of code to the DETECTSCENECHANGE function@>;
Synoptic::end_redefining_function(I, save);
break;
}
default: return FALSE;
}
return TRUE;
}
@<Add a body of code to the SHOWSCENESTATUS function@> =
for (int i=0; i<TreeLists::len(scene_nodes); i++) {
inter_package *pack = Inter::Package::defined_by_frame(scene_nodes->list[i].node);
inter_symbol *ssf_s = Metadata::read_symbol(pack, I"^scene_status_fn");
Produce::inv_call(I, ssf_s);
}
@ There is one argument, |chs|: the number of iterations so far. Iterations
occur because each set of scene changes could change the circumstances in such
a way that other scene changes are now required (through external conditions,
not through anchors); we don't want this to lock up, so we will cap recursion.
Within the routine, a second local variable, |ch|, is a flag indicating
whether any change in status has or has not occurred.
@d MAX_SCENE_CHANGE_ITERATION 20
@<Add a body of code to the DETECTSCENECHANGE function@> =
inter_symbol *chs_s = Synoptic::get_local(I, I"chs");
inter_symbol *myself_s = Synoptic::get_local(I, I"myself");
inter_symbol *Again_l = Produce::reserve_label(I, I".Again");
inter_symbol *CScene_l = Produce::reserve_label(I, I".CScene");
Produce::place_label(I, Again_l);
for (int i=0; i<TreeLists::len(scene_nodes); i++) {
inter_package *pack = Inter::Package::defined_by_frame(scene_nodes->list[i].node);
inter_symbol *scf_s = Metadata::read_symbol(pack, I"^scene_change_fn");
Produce::inv_primitive(I, IF_BIP);
Produce::down(I);
Produce::inv_call(I, scf_s);
Produce::code(I);
Produce::down(I);
Produce::inv_primitive(I, JUMP_BIP);
Produce::down(I);
Produce::lab(I, CScene_l);
Produce::up(I);
Produce::up(I);
Produce::up(I);
}
Produce::rfalse(I);
Produce::place_label(I, CScene_l);
Produce::inv_primitive(I, IF_BIP);
Produce::down(I);
Produce::inv_primitive(I, GT_BIP);
Produce::down(I);
Produce::val_symbol(I, K_value, chs_s);
Produce::val(I, K_value, LITERAL_IVAL, (inter_ti) MAX_SCENE_CHANGE_ITERATION);
Produce::up(I);
Produce::code(I);
Produce::down(I);
Produce::inv_primitive(I, PRINT_BIP);
Produce::down(I);
Produce::val_text(I, I">--> The scene change machinery is stuck.\n");
Produce::up(I);
Produce::rtrue(I);
Produce::up(I);
Produce::up(I);
Produce::inv_primitive(I, PREINCREMENT_BIP);
Produce::down(I);
Produce::ref_symbol(I, K_value, chs_s);
Produce::up(I);
// Produce::inv_call(I, myself_s);
// Produce::down(I);
// Produce::inv_primitive(I, PREINCREMENT_BIP);
// Produce::down(I);
// Produce::ref_symbol(I, K_value, chs_s);
// Produce::up(I);
// Produce::up(I);
// Produce::rtrue(I);
Produce::inv_primitive(I, JUMP_BIP);
Produce::down(I);
Produce::lab(I, Again_l);
Produce::up(I);

View file

@ -26,6 +26,8 @@ inter_tree_location_list *table_column_nodes = NULL;
inter_tree_location_list *table_column_usage_nodes = NULL; inter_tree_location_list *table_column_usage_nodes = NULL;
inter_tree_location_list *past_tense_action_nodes = NULL; inter_tree_location_list *past_tense_action_nodes = NULL;
inter_tree_location_list *past_tense_condition_nodes = NULL; inter_tree_location_list *past_tense_condition_nodes = NULL;
inter_tree_location_list *instance_nodes = NULL;
inter_tree_location_list *scene_nodes = NULL;
int Synoptic::go(pipeline_step *step) { int Synoptic::go(pipeline_step *step) {
text_nodes = TreeLists::new(); text_nodes = TreeLists::new();
@ -42,6 +44,8 @@ int Synoptic::go(pipeline_step *step) {
table_column_usage_nodes = TreeLists::new(); table_column_usage_nodes = TreeLists::new();
past_tense_action_nodes = TreeLists::new(); past_tense_action_nodes = TreeLists::new();
past_tense_condition_nodes = TreeLists::new(); past_tense_condition_nodes = TreeLists::new();
instance_nodes = TreeLists::new();
scene_nodes = TreeLists::new();
InterTree::traverse(step->repository, Synoptic::visitor, NULL, NULL, 0); InterTree::traverse(step->repository, Synoptic::visitor, NULL, NULL, 0);
SynopticText::alphabetise(step->repository, text_nodes); SynopticText::alphabetise(step->repository, text_nodes);
@ -55,6 +59,8 @@ int Synoptic::go(pipeline_step *step) {
SynopticRelations::renumber(step->repository, relation_nodes); SynopticRelations::renumber(step->repository, relation_nodes);
SynopticTables::renumber(step->repository, table_nodes); SynopticTables::renumber(step->repository, table_nodes);
SynopticChronology::renumber(step->repository, past_tense_action_nodes); SynopticChronology::renumber(step->repository, past_tense_action_nodes);
SynopticInstances::renumber(step->repository, instance_nodes);
SynopticScenes::renumber(step->repository, scene_nodes);
return TRUE; return TRUE;
} }
@ -96,6 +102,12 @@ void Synoptic::visitor(inter_tree *I, inter_tree_node *P, void *state) {
TreeLists::add(past_tense_action_nodes, P); TreeLists::add(past_tense_action_nodes, P);
if (ptype == PackageTypes::get(I, I"_past_condition")) if (ptype == PackageTypes::get(I, I"_past_condition"))
TreeLists::add(past_tense_condition_nodes, P); TreeLists::add(past_tense_condition_nodes, P);
if (ptype == PackageTypes::get(I, I"_instance")) {
TreeLists::add(instance_nodes, P);
inter_package *pack = Inter::Package::defined_by_frame(P);
if (Metadata::exists(pack, I"^is_scene"))
TreeLists::add(scene_nodes, P);
}
} }
} }
@ -120,6 +132,7 @@ void Synoptic::syn_visitor(inter_tree *I, inter_tree_node *P, void *state) {
if (SynopticRelations::redefine(I, P, con_s, synid)) return; if (SynopticRelations::redefine(I, P, con_s, synid)) return;
if (SynopticTables::redefine(I, P, con_s, synid)) return; if (SynopticTables::redefine(I, P, con_s, synid)) return;
if (SynopticChronology::redefine(I, P, con_s, synid)) return; if (SynopticChronology::redefine(I, P, con_s, synid)) return;
if (SynopticScenes::redefine(I, P, con_s, synid)) return;
LOG("Couldn't consolidate $3\n", con_s); LOG("Couldn't consolidate $3\n", con_s);
internal_error("symbol cannot be consolidated"); internal_error("symbol cannot be consolidated");
} }

View file

@ -33,10 +33,12 @@ Chapter 3: Synoptic Resources
Rules Rules
Activities Activities
Actions Actions
Instances
Properties Properties
Relations Relations
Tables Tables
Chronology Chronology
Scenes
Chapter 4: Inter to Final Code Chapter 4: Inter to Final Code
Code Generation Code Generation