1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-29 05:24:57 +03:00

Made kinds synoptic

This commit is contained in:
Graham Nelson 2021-05-03 14:39:21 +01:00
parent 2fe6b34a5d
commit b5ca567881
36 changed files with 515 additions and 367 deletions

View file

@ -285,7 +285,7 @@ negation does not, and so must use those of the original.
<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="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RTAdjectives::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">use_adj</span><span class="plain-syntax">, </span><span class="identifier-syntax">task</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RTKinds::weak_id</span><span class="plain-syntax">(</span><a href="8-amd.html#SP7" class="function-link"><span class="function-syntax">AdjectiveMeaningDomains::get_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">)));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">RTKinds::weak_id_iname</span><span class="plain-syntax">(</span><a href="8-amd.html#SP7" class="function-link"><span class="function-syntax">AdjectiveMeaningDomains::get_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">)));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::modify</span><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">am</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">task_data</span><span class="plain-syntax">[</span><span class="identifier-syntax">T</span><span class="plain-syntax">].</span><span class="element-syntax">call_to_support_function</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="string-syntax">"*=-(%s%n(*1))"</span><span class="plain-syntax">, </span><span class="identifier-syntax">negation_operator</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
</pre>

View file

@ -387,7 +387,7 @@ specific instance, then it must definitely lie within the domain.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">AdjectiveMeaningDomains::weak_match</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">AdjectiveMeaningDomains::weak_match</span></span>:<br/>Adjective Ambiguity - <a href="8-aa.html#SP9">&#167;9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K1</span><span class="plain-syntax">, </span><span class="reserved-syntax">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</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">K2</span><span class="plain-syntax"> = </span><a href="8-amd.html#SP7" class="function-link"><span class="function-syntax">AdjectiveMeaningDomains::get_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">am</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">RTKinds::weak_id</span><span class="plain-syntax">(</span><span class="identifier-syntax">K1</span><span class="plain-syntax">) == </span><span class="identifier-syntax">RTKinds::weak_id</span><span class="plain-syntax">(</span><span class="identifier-syntax">K2</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">RTKinds::weak_id_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">K1</span><span class="plain-syntax">) == </span><span class="identifier-syntax">RTKinds::weak_id_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">K2</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">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -239,6 +239,29 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -1;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Inter::Symbols::set_int</span><span class="plain-syntax">(</span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="2-sym.html#SP4" class="function-link"><span class="function-syntax">Inter::Symbols::definition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">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">P</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">W</span><span class="plain-syntax">.</span><span class="element-syntax">data</span><span class="plain-syntax">[</span><span class="constant-syntax">ID_IFLD</span><span class="plain-syntax">] == </span><span class="constant-syntax">CONSTANT_IST</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">W</span><span class="plain-syntax">.</span><span class="element-syntax">data</span><span class="plain-syntax">[</span><span class="constant-syntax">FORMAT_CONST_IFLD</span><span class="plain-syntax">] == </span><span class="constant-syntax">CONSTANT_DIRECT</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">W</span><span class="plain-syntax">.</span><span class="element-syntax">data</span><span class="plain-syntax">[</span><span class="constant-syntax">DATA_CONST_IFLD</span><span class="plain-syntax">] == </span><span class="constant-syntax">LITERAL_IVAL</span><span class="plain-syntax">)) {</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="element-syntax">data</span><span class="plain-syntax">[</span><span class="constant-syntax">DATA_CONST_IFLD</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax">] = (</span><span class="constant-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">N</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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">P</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">W</span><span class="plain-syntax">.</span><span class="element-syntax">data</span><span class="plain-syntax">[</span><span class="constant-syntax">ID_IFLD</span><span class="plain-syntax">] == </span><span class="constant-syntax">CONSTANT_IST</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">W</span><span class="plain-syntax">.</span><span class="element-syntax">data</span><span class="plain-syntax">[</span><span class="constant-syntax">FORMAT_CONST_IFLD</span><span class="plain-syntax">] == </span><span class="constant-syntax">CONSTANT_DIRECT</span><span class="plain-syntax">) &amp;&amp;</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">W</span><span class="plain-syntax">.</span><span class="element-syntax">data</span><span class="plain-syntax">[</span><span class="constant-syntax">DATA_CONST_IFLD</span><span class="plain-syntax">] == </span><span class="constant-syntax">ALIAS_IVAL</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbols_table</span><span class="plain-syntax"> *</span><span class="identifier-syntax">scope</span><span class="plain-syntax"> = </span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">owning_table</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">alias_to</span><span class="plain-syntax"> = </span><a href="2-st.html#SP6" class="function-link"><span class="function-syntax">InterSymbolsTables::symbol_from_id</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">scope</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">W</span><span class="plain-syntax">.</span><span class="element-syntax">data</span><span class="plain-syntax">[</span><span class="constant-syntax">DATA_CONST_IFLD</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax">]);</span>
<span class="plain-syntax"> </span><a href="2-sym.html#SP4" class="function-link"><span class="function-syntax">Inter::Symbols::set_int</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">alias_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</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">P</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Synbol $3 is undefined\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">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">"Synbol $3 cannot be set to %d\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unable to set symbol"</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">Inter::Symbols::strike_definition</span><span class="plain-syntax">(</span><span class="reserved-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">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">S</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><a href="2-sym.html#SP4" class="function-link"><span class="function-syntax">Inter::Symbols::definition</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>

View file

@ -108,7 +108,6 @@ function togglePopup(material_id) {
<span class="definition-keyword">enum</span> <span class="constant-syntax">STRINGARRAY_IANN</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">TABLEARRAY_IANN</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">VERBARRAY_IANN</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">WEAK_ID_IANN</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">EXPLICIT_ATTRIBUTE_IANN</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">EXPLICIT_VARIABLE_IANN</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">TEXT_LITERAL_IANN</span>
@ -174,7 +173,6 @@ symbol.
<span class="plain-syntax"> </span><a href="2-ann.html#SP2" class="function-link"><span class="function-syntax">Inter::Annotations::form</span></a><span class="plain-syntax">(</span><span class="constant-syntax">STRINGARRAY_IANN</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"__string_array"</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-ann.html#SP2" class="function-link"><span class="function-syntax">Inter::Annotations::form</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TABLEARRAY_IANN</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"__table_array"</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-ann.html#SP2" class="function-link"><span class="function-syntax">Inter::Annotations::form</span></a><span class="plain-syntax">(</span><span class="constant-syntax">VERBARRAY_IANN</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"__verb"</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-ann.html#SP2" class="function-link"><span class="function-syntax">Inter::Annotations::form</span></a><span class="plain-syntax">(</span><span class="constant-syntax">WEAK_ID_IANN</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"__weak_ID"</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-ann.html#SP2" class="function-link"><span class="function-syntax">Inter::Annotations::form</span></a><span class="plain-syntax">(</span><span class="constant-syntax">EXPLICIT_ATTRIBUTE_IANN</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"__explicit_attribute"</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-ann.html#SP2" class="function-link"><span class="function-syntax">Inter::Annotations::form</span></a><span class="plain-syntax">(</span><span class="constant-syntax">EXPLICIT_VARIABLE_IANN</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"__explicit_variable"</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-ann.html#SP2" class="function-link"><span class="function-syntax">Inter::Annotations::form</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TEXT_LITERAL_IANN</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"__text_literal"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>

View file

@ -84,10 +84,17 @@ of packages of type <span class="extract"><span class="extract-syntax">_kind</sp
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">SynopticKinds::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">SynopticKinds::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="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">kind_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">kind_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(kind_nodes); i++) {</span>
<span class="comment-syntax"> inter_package *pack = Inter::Package::defined_by_frame(kind_nodes-&gt;list[i].node);</span>
<span class="comment-syntax"> inter_tree_node *D = Synoptic::get_definition(pack, I"property_id");</span>
<span class="comment-syntax"> D-&gt;W.data[DATA_CONST_IFLD+1] = (inter_ti) i;</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">kind_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">kind_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">weak_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_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">"^weak_id"</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">weak_s</span><span class="plain-syntax">) </span><span class="identifier-syntax">Inter::Symbols::set_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">weak_s</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">+2);</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">TreeLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">derived_kind_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">derived_kind_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(derived_kind_nodes); i++) {</span>
<span class="comment-syntax"> inter_package *pack = Inter::Package::defined_by_frame(derived_kind_nodes-&gt;list[i].node);</span>
<span class="comment-syntax"> LOG("Saw DK at $6\n", pack);</span>
<span class="comment-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
@ -112,54 +119,60 @@ of packages of type <span class="extract"><span class="extract-syntax">_kind</sp
<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">BASE_KIND_HWM_SYNID:</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Symbols::strike_definition</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="named-paragraph-container code-font"><a href="3-knd.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Define BASE_KIND_HWM</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">DEFAULTVALUEOFKOV_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-knd.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Add a body of code to the DEFAULTVALUEOFKOV function</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-knd.html#SP2_3" class="named-paragraph-link"><span class="named-paragraph">Add a body of code to the DEFAULTVALUEOFKOV function</span><span class="named-paragraph-number">2.3</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">DEFAULTVALUEFINDER_SYNID:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">DEFAULTVALUEFINDER_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-knd.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Add a body of code to the DEFAULTVALUEFINDER 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="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PRINTKINDVALUEPAIR_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-knd.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Add a body of code to the PRINTKINDVALUEPAIR function</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-knd.html#SP2_4" class="named-paragraph-link"><span class="named-paragraph">Add a body of code to the PRINTKINDVALUEPAIR function</span><span class="named-paragraph-number">2.4</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">KOVCOMPARISONFUNCTION_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-knd.html#SP2_3" class="named-paragraph-link"><span class="named-paragraph">Add a body of code to the KOVCOMPARISONFUNCTION function</span><span class="named-paragraph-number">2.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-knd.html#SP2_5" class="named-paragraph-link"><span class="named-paragraph">Add a body of code to the KOVCOMPARISONFUNCTION function</span><span class="named-paragraph-number">2.5</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">KOVDOMAINSIZE_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-knd.html#SP2_4" class="named-paragraph-link"><span class="named-paragraph">Add a body of code to the KOVDOMAINSIZE function</span><span class="named-paragraph-number">2.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-knd.html#SP2_6" class="named-paragraph-link"><span class="named-paragraph">Add a body of code to the KOVDOMAINSIZE function</span><span class="named-paragraph-number">2.6</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">KOVISBLOCKVALUE_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-knd.html#SP2_5" class="named-paragraph-link"><span class="named-paragraph">Add a body of code to the KOVISBLOCKVALUE function</span><span class="named-paragraph-number">2.5</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-knd.html#SP2_7" class="named-paragraph-link"><span class="named-paragraph">Add a body of code to the KOVISBLOCKVALUE function</span><span class="named-paragraph-number">2.7</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">I7_KIND_NAME_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-knd.html#SP2_6" class="named-paragraph-link"><span class="named-paragraph">Add a body of code to the I7_KIND_NAME function</span><span class="named-paragraph-number">2.6</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-knd.html#SP2_8" class="named-paragraph-link"><span class="named-paragraph">Add a body of code to the I7_KIND_NAME function</span><span class="named-paragraph-number">2.8</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">KOVSUPPORTFUNCTION_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-knd.html#SP2_7" class="named-paragraph-link"><span class="named-paragraph">Add a body of code to the KOVSUPPORTFUNCTION function</span><span class="named-paragraph-number">2.7</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-knd.html#SP2_9" class="named-paragraph-link"><span class="named-paragraph">Add a body of code to the KOVSUPPORTFUNCTION function</span><span class="named-paragraph-number">2.9</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">SHOWMEKINDDETAILS_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-knd.html#SP2_8" class="named-paragraph-link"><span class="named-paragraph">Add a body of code to the SHOWMEKINDDETAILS function</span><span class="named-paragraph-number">2.8</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-knd.html#SP2_10" class="named-paragraph-link"><span class="named-paragraph">Add a body of code to the SHOWMEKINDDETAILS function</span><span class="named-paragraph-number">2.10</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>
@ -168,7 +181,44 @@ of packages of type <span class="extract"><span class="extract-syntax">_kind</sp
<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 DEFAULTVALUEOFKOV function</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><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Define BASE_KIND_HWM</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><a href="3-su.html#SP4" class="function-link"><span class="function-syntax">Synoptic::def_numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">con_s</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) (</span><span class="identifier-syntax">TreeLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind_nodes</span><span class="plain-syntax">) + </span><span class="constant-syntax">2</span><span class="plain-syntax">), &amp;</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-knd.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_2" class="paragraph-anchor"></a><b>&#167;2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add a body of code to the DEFAULTVALUEFINDER 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">k_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">"k"</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">derived_kind_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">derived_kind_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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Metadata::read_numeric</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">"^default_value_needed"</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">rks_s</span><span class="plain-syntax"> = </span><a href="3-su.html#SP3" class="function-link"><span class="function-syntax">Synoptic::get_symbol</span></a><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">"strong_id"</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">dv_s</span><span class="plain-syntax"> = </span><a href="3-su.html#SP3" class="function-link"><span class="function-syntax">Synoptic::get_symbol</span></a><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">"default_value"</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">EQ_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">k_s</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">rks_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="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">RETURN_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">dv_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="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="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>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-knd.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_3" class="paragraph-anchor"></a><b>&#167;2.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add a body of code to the DEFAULTVALUEOFKOV function</span><span class="named-paragraph-number">2.3</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -214,7 +264,7 @@ of packages of type <span class="extract"><span class="extract-syntax">_kind</sp
<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>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-knd.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_2" class="paragraph-anchor"></a><b>&#167;2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add a body of code to the PRINTKINDVALUEPAIR function</span><span class="named-paragraph-number">2.2</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP2_4" class="paragraph-anchor"></a><b>&#167;2.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add a body of code to the PRINTKINDVALUEPAIR function</span><span class="named-paragraph-number">2.4</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -268,7 +318,7 @@ of packages of type <span class="extract"><span class="extract-syntax">_kind</sp
<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-knd.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_3" class="paragraph-anchor"></a><b>&#167;2.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add a body of code to the KOVCOMPARISONFUNCTION function</span><span class="named-paragraph-number">2.3</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP2_5" class="paragraph-anchor"></a><b>&#167;2.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add a body of code to the KOVCOMPARISONFUNCTION function</span><span class="named-paragraph-number">2.5</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -310,7 +360,7 @@ of packages of type <span class="extract"><span class="extract-syntax">_kind</sp
<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>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-knd.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_4" class="paragraph-anchor"></a><b>&#167;2.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add a body of code to the KOVDOMAINSIZE function</span><span class="named-paragraph-number">2.4</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP2_6" class="paragraph-anchor"></a><b>&#167;2.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add a body of code to the KOVDOMAINSIZE function</span><span class="named-paragraph-number">2.6</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -352,11 +402,11 @@ of packages of type <span class="extract"><span class="extract-syntax">_kind</sp
<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>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-knd.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_5" class="paragraph-anchor"></a><b>&#167;2.5. </b><span class="extract"><span class="extract-syntax">KOVIsBlockValue(k)</span></span> is true if and only if <span class="extract"><span class="extract-syntax">k</span></span> is the (strong or weak) ID of
<p class="commentary firstcommentary"><a id="SP2_7" class="paragraph-anchor"></a><b>&#167;2.7. </b><span class="extract"><span class="extract-syntax">KOVIsBlockValue(k)</span></span> is true if and only if <span class="extract"><span class="extract-syntax">k</span></span> is the (strong or weak) ID of
a kind storing pointers to blocks of data.
</p>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add a body of code to the KOVISBLOCKVALUE function</span><span class="named-paragraph-number">2.5</span></span><span class="comment-syntax"> =</span>
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add a body of code to the KOVISBLOCKVALUE function</span><span class="named-paragraph-number">2.7</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -396,7 +446,7 @@ a kind storing pointers to blocks of data.
<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>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-knd.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_6" class="paragraph-anchor"></a><b>&#167;2.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add a body of code to the I7_KIND_NAME function</span><span class="named-paragraph-number">2.6</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP2_8" class="paragraph-anchor"></a><b>&#167;2.8. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add a body of code to the I7_KIND_NAME function</span><span class="named-paragraph-number">2.8</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -425,7 +475,7 @@ a kind storing pointers to blocks of data.
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-knd.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_7" class="paragraph-anchor"></a><b>&#167;2.7. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add a body of code to the KOVSUPPORTFUNCTION function</span><span class="named-paragraph-number">2.7</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP2_9" class="paragraph-anchor"></a><b>&#167;2.9. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add a body of code to the KOVSUPPORTFUNCTION function</span><span class="named-paragraph-number">2.9</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
@ -484,7 +534,7 @@ a kind storing pointers to blocks of data.
<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>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-knd.html#SP2">&#167;2</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP2_8" class="paragraph-anchor"></a><b>&#167;2.8. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add a body of code to the SHOWMEKINDDETAILS function</span><span class="named-paragraph-number">2.8</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP2_10" class="paragraph-anchor"></a><b>&#167;2.10. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add a body of code to the SHOWMEKINDDETAILS function</span><span class="named-paragraph-number">2.10</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -83,11 +83,11 @@ of instances having the kind <span class="extract"><span class="extract-syntax">
<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="comment-syntax"> for (int i=0; i&lt;TreeLists::len(scene_nodes); i++) {</span>
<span class="comment-syntax"> inter_package *pack = Inter::Package::defined_by_frame(scene_nodes-&gt;list[i].node);</span>
<span class="comment-syntax"> text_stream *name = Metadata::read_optional_textual(pack, I"^name");</span>
<span class="comment-syntax"> LOG("scene %d: %S\n", i, name);</span>
<span class="comment-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
</pre>

View file

@ -104,6 +104,7 @@ function togglePopup(material_id) {
<span class="identifier-syntax">inter_tree_location_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sound_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">use_option_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">verb_form_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">derived_kind_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">kind_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>
@ -128,6 +129,7 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="identifier-syntax">sound_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">use_option_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">verb_form_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">derived_kind_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">kind_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><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>
@ -195,6 +197,8 @@ 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">verb_form_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">"_kind"</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">kind_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">"_derived_kind"</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">derived_kind_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>
@ -279,14 +283,20 @@ 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="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/>Kinds - <a href="3-knd.html#SP2_1">&#167;2.1</a>, <a href="3-knd.html#SP2_2">&#167;2.2</a>, <a href="3-knd.html#SP2_3">&#167;2.3</a>, <a href="3-knd.html#SP2_4">&#167;2.4</a>, <a href="3-knd.html#SP2_5">&#167;2.5</a>, <a href="3-knd.html#SP2_6">&#167;2.6</a>, <a href="3-knd.html#SP2_7">&#167;2.7</a>, <a href="3-knd.html#SP2_8">&#167;2.8</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><br/>Use Options - <a href="3-uo.html#SP2_2">&#167;2.2</a>, <a href="3-uo.html#SP2_3">&#167;2.3</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/>Kinds - <a href="3-knd.html#SP2_2">&#167;2.2</a>, <a href="3-knd.html#SP2_3">&#167;2.3</a>, <a href="3-knd.html#SP2_4">&#167;2.4</a>, <a href="3-knd.html#SP2_5">&#167;2.5</a>, <a href="3-knd.html#SP2_6">&#167;2.6</a>, <a href="3-knd.html#SP2_7">&#167;2.7</a>, <a href="3-knd.html#SP2_8">&#167;2.8</a>, <a href="3-knd.html#SP2_9">&#167;2.9</a>, <a href="3-knd.html#SP2_10">&#167;2.10</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><br/>Use Options - <a href="3-uo.html#SP2_2">&#167;2.2</a>, <a href="3-uo.html#SP2_3">&#167;2.3</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_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">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="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/>Kinds - <a href="3-knd.html#SP2">&#167;2</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><br/>Use Options - <a href="3-uo.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">inter_symbol</span><span class="plain-syntax"> *</span><span class="function-syntax">Synoptic::get_symbol</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::get_symbol</span></span>:<br/>Kinds - <a href="3-knd.html#SP2_2">&#167;2.2</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">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">"package symbol 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="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::begin_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::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/>Kinds - <a href="3-knd.html#SP2">&#167;2</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><br/>Use Options - <a href="3-uo.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="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>
@ -305,7 +315,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">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/>Kinds - <a href="3-knd.html#SP2">&#167;2</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><br/>Use Options - <a href="3-uo.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('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">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/>Kinds - <a href="3-knd.html#SP2">&#167;2</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><br/>Use Options - <a href="3-uo.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">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>
@ -314,14 +324,14 @@ function togglePopup(material_id) {
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. </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">Synoptic::def_numeric_constant</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Synoptic::def_numeric_constant</span></span>:<br/>Responses - <a href="3-rsp.html#SP2_1">&#167;2.1</a><br/>Rules - <a href="3-rls.html#SP2_1">&#167;2.1</a><br/>Actions - <a href="3-act2.html#SP3_1">&#167;3.1</a>, <a href="3-act2.html#SP3_5">&#167;3.5</a><br/>Properties - <a href="3-prp.html#SP2_1">&#167;2.1</a><br/>Relations - <a href="3-rlt.html#SP2_1">&#167;2.1</a><br/>Chronology - <a href="3-chr.html#SP2_4">&#167;2.4</a>, <a href="3-chr.html#SP2_5">&#167;2.5</a><br/>Multimedia - <a href="3-mlt.html#SP2_3">&#167;2.3</a><br/>Use Options - <a href="3-uo.html#SP2_1">&#167;2.1</a></span></button><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">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::def_numeric_constant</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Synoptic::def_numeric_constant</span></span>:<br/>Responses - <a href="3-rsp.html#SP2_1">&#167;2.1</a><br/>Rules - <a href="3-rls.html#SP2_1">&#167;2.1</a><br/>Actions - <a href="3-act2.html#SP3_1">&#167;3.1</a>, <a href="3-act2.html#SP3_5">&#167;3.5</a><br/>Kinds - <a href="3-knd.html#SP2_1">&#167;2.1</a><br/>Properties - <a href="3-prp.html#SP2_1">&#167;2.1</a><br/>Relations - <a href="3-rlt.html#SP2_1">&#167;2.1</a><br/>Chronology - <a href="3-chr.html#SP2_4">&#167;2.4</a>, <a href="3-chr.html#SP2_5">&#167;2.5</a><br/>Multimedia - <a href="3-mlt.html#SP2_3">&#167;2.3</a><br/>Use Options - <a href="3-uo.html#SP2_1">&#167;2.1</a></span></button><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">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</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="plain-syntax"> </span><span class="identifier-syntax">Produce::guard</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::Constant::new_numerical</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::id_from_IRS_and_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</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">InterSymbolsTables::id_from_IRS_and_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">list_of_unchecked_kind_symbol</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::id_from_IRS_and_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">unchecked_kind_symbol</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">Inter::Bookmarks::baseline</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">) + </span><span class="constant-syntax">1</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::def_textual_constant</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Synoptic::def_textual_constant</span></span>:<br/>Literal Text - <a href="3-lt.html#SP1_1">&#167;1.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_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con_s</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::def_textual_constant</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Synoptic::def_textual_constant</span></span>:<br/>Literal Text - <a href="3-lt.html#SP1_1">&#167;1.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_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con_s</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</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="plain-syntax"> </span><span class="identifier-syntax">Inter::Symbols::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">con_s</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEXT_LITERAL_IANN</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">ID</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Warehouse::create_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">InterTree::warehouse</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::Bookmarks::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">));</span>
@ -335,27 +345,27 @@ function togglePopup(material_id) {
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>&#167;5. </b></p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Synoptic::begin_array</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Synoptic::begin_array</span></span>:<br/>Responses - <a href="3-rsp.html#SP2">&#167;2</a><br/>Rules - <a href="3-rls.html#SP2">&#167;2</a><br/>Activities - <a href="3-act.html#SP2">&#167;2</a><br/>Actions - <a href="3-act2.html#SP3">&#167;3</a><br/>Tables - <a href="3-tbl.html#SP2">&#167;2</a><br/>Chronology - <a href="3-chr.html#SP2">&#167;2</a><br/>Multimedia - <a href="3-mlt.html#SP2">&#167;2</a><br/>Verbs - <a href="3-vrb.html#SP2">&#167;2</a></span></button><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">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_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Synoptic::begin_array</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Synoptic::begin_array</span></span>:<br/>Responses - <a href="3-rsp.html#SP2">&#167;2</a><br/>Rules - <a href="3-rls.html#SP2">&#167;2</a><br/>Activities - <a href="3-act.html#SP2">&#167;2</a><br/>Actions - <a href="3-act2.html#SP3">&#167;3</a><br/>Tables - <a href="3-tbl.html#SP2">&#167;2</a><br/>Chronology - <a href="3-chr.html#SP2">&#167;2</a><br/>Multimedia - <a href="3-mlt.html#SP2">&#167;2</a><br/>Verbs - <a href="3-vrb.html#SP2">&#167;2</a></span></button><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">inter_bookmark</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IBM</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">Inode::fill_3</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">CONSTANT_IST</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::id_from_IRS_and_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</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">InterSymbolsTables::id_from_IRS_and_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">list_of_unchecked_kind_symbol</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CONSTANT_INDIRECT_LIST</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">Inter::Bookmarks::baseline</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">) + </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Synoptic::begin_byte_array</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Synoptic::begin_byte_array</span></span>:<br/>Activities - <a href="3-act.html#SP2">&#167;2</a><br/>Tables - <a href="3-tbl.html#SP2">&#167;2</a></span></button><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">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_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Synoptic::begin_byte_array</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">Synoptic::begin_byte_array</span></span>:<br/>Activities - <a href="3-act.html#SP2">&#167;2</a><br/>Tables - <a href="3-tbl.html#SP2">&#167;2</a></span></button><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">inter_bookmark</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Symbols::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">con_s</span><span class="plain-syntax">, </span><span class="identifier-syntax">BYTEARRAY_IANN</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inode::fill_3</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">CONSTANT_IST</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::id_from_IRS_and_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</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">InterSymbolsTables::id_from_IRS_and_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">list_of_unchecked_kind_symbol</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CONSTANT_INDIRECT_LIST</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">Inter::Bookmarks::baseline</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">) + </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Synoptic::begin_table_array</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">Synoptic::begin_table_array</span></span>:<br/>Actions - <a href="3-act2.html#SP3">&#167;3</a></span></button><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">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_node</span><span class="plain-syntax"> *</span><span class="function-syntax">Synoptic::begin_table_array</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Synoptic::begin_table_array</span></span>:<br/>Actions - <a href="3-act2.html#SP3">&#167;3</a></span></button><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">inter_bookmark</span><span class="plain-syntax"> *</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Symbols::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">con_s</span><span class="plain-syntax">, </span><span class="identifier-syntax">TABLEARRAY_IANN</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Inode::fill_3</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">CONSTANT_IST</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSymbolsTables::id_from_IRS_and_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</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">InterSymbolsTables::id_from_IRS_and_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">list_of_unchecked_kind_symbol</span><span class="plain-syntax">),</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CONSTANT_INDIRECT_LIST</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">Inter::Bookmarks::baseline</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">) + </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::end_array</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Synoptic::end_array</span></span>:<br/>Responses - <a href="3-rsp.html#SP2">&#167;2</a><br/>Rules - <a href="3-rls.html#SP2">&#167;2</a><br/>Activities - <a href="3-act.html#SP2">&#167;2</a><br/>Actions - <a href="3-act2.html#SP3">&#167;3</a><br/>Tables - <a href="3-tbl.html#SP2">&#167;2</a><br/>Chronology - <a href="3-chr.html#SP2">&#167;2</a><br/>Multimedia - <a href="3-mlt.html#SP2">&#167;2</a><br/>Verbs - <a href="3-vrb.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Q</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::end_array</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Synoptic::end_array</span></span>:<br/>Responses - <a href="3-rsp.html#SP2">&#167;2</a><br/>Rules - <a href="3-rls.html#SP2">&#167;2</a><br/>Activities - <a href="3-act.html#SP2">&#167;2</a><br/>Actions - <a href="3-act2.html#SP3">&#167;3</a><br/>Tables - <a href="3-tbl.html#SP2">&#167;2</a><br/>Chronology - <a href="3-chr.html#SP2">&#167;2</a><br/>Multimedia - <a href="3-mlt.html#SP2">&#167;2</a><br/>Verbs - <a href="3-vrb.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Q</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="plain-syntax"> </span><span class="identifier-syntax">inter_error_message</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Defn::verify_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::Bookmarks::package</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">), </span><span class="identifier-syntax">Q</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
@ -365,12 +375,12 @@ function togglePopup(material_id) {
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Bookmarks::insert</span><span class="plain-syntax">(</span><span class="identifier-syntax">IBM</span><span class="plain-syntax">, </span><span class="identifier-syntax">Q</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::numeric_entry</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Synoptic::numeric_entry</span></span>:<br/>Responses - <a href="3-rsp.html#SP2_2">&#167;2.2</a>, <a href="3-rsp.html#SP2_3">&#167;2.3</a><br/>Rules - <a href="3-rls.html#SP2_3">&#167;2.3</a>, <a href="3-rls.html#SP2_4">&#167;2.4</a>, <a href="3-rls.html#SP2_5">&#167;2.5</a><br/>Activities - <a href="3-act.html#SP2_2">&#167;2.2</a>, <a href="3-act.html#SP2_5">&#167;2.5</a><br/>Actions - <a href="3-act2.html#SP3_2">&#167;3.2</a>, <a href="3-act2.html#SP3_3">&#167;3.3</a>, <a href="3-act2.html#SP3_4">&#167;3.4</a><br/>Tables - <a href="3-tbl.html#SP2_1">&#167;2.1</a>, <a href="3-tbl.html#SP2_4">&#167;2.4</a><br/>Chronology - <a href="3-chr.html#SP2_1">&#167;2.1</a>, <a href="3-chr.html#SP2_2">&#167;2.2</a>, <a href="3-chr.html#SP2_3">&#167;2.3</a><br/>Multimedia - <a href="3-mlt.html#SP2_1">&#167;2.1</a>, <a href="3-mlt.html#SP2_2">&#167;2.2</a>, <a href="3-mlt.html#SP2_4">&#167;2.4</a><br/>Verbs - <a href="3-vrb.html#SP2_1">&#167;2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Q</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">val2</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::numeric_entry</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Synoptic::numeric_entry</span></span>:<br/>Responses - <a href="3-rsp.html#SP2_2">&#167;2.2</a>, <a href="3-rsp.html#SP2_3">&#167;2.3</a><br/>Rules - <a href="3-rls.html#SP2_3">&#167;2.3</a>, <a href="3-rls.html#SP2_4">&#167;2.4</a>, <a href="3-rls.html#SP2_5">&#167;2.5</a><br/>Activities - <a href="3-act.html#SP2_2">&#167;2.2</a>, <a href="3-act.html#SP2_5">&#167;2.5</a><br/>Actions - <a href="3-act2.html#SP3_2">&#167;3.2</a>, <a href="3-act2.html#SP3_3">&#167;3.3</a>, <a href="3-act2.html#SP3_4">&#167;3.4</a><br/>Tables - <a href="3-tbl.html#SP2_1">&#167;2.1</a>, <a href="3-tbl.html#SP2_4">&#167;2.4</a><br/>Chronology - <a href="3-chr.html#SP2_1">&#167;2.1</a>, <a href="3-chr.html#SP2_2">&#167;2.2</a>, <a href="3-chr.html#SP2_3">&#167;2.3</a><br/>Multimedia - <a href="3-mlt.html#SP2_1">&#167;2.1</a>, <a href="3-mlt.html#SP2_2">&#167;2.2</a>, <a href="3-mlt.html#SP2_4">&#167;2.4</a><br/>Verbs - <a href="3-vrb.html#SP2_1">&#167;2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Q</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">val2</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">Inode::extend</span><span class="plain-syntax">(</span><span class="identifier-syntax">Q</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"cannot extend"</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">-2] = </span><span class="identifier-syntax">LITERAL_IVAL</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::symbol_entry</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Synoptic::symbol_entry</span></span>:<br/>Responses - <a href="3-rsp.html#SP2_2">&#167;2.2</a><br/>Rules - <a href="3-rls.html#SP2_4">&#167;2.4</a>, <a href="3-rls.html#SP2_5">&#167;2.5</a><br/>Activities - <a href="3-act.html#SP2_1">&#167;2.1</a>, <a href="3-act.html#SP2_3">&#167;2.3</a>, <a href="3-act.html#SP2_4">&#167;2.4</a>, <a href="3-act.html#SP2_5">&#167;2.5</a><br/>Actions - <a href="3-act2.html#SP3_2">&#167;3.2</a>, <a href="3-act2.html#SP3_4">&#167;3.4</a><br/>Tables - <a href="3-tbl.html#SP2_1">&#167;2.1</a><br/>Chronology - <a href="3-chr.html#SP2_1">&#167;2.1</a>, <a href="3-chr.html#SP2_3">&#167;2.3</a><br/>Multimedia - <a href="3-mlt.html#SP2_4">&#167;2.4</a><br/>Verbs - <a href="3-vrb.html#SP2_1">&#167;2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Q</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::symbol_entry</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Synoptic::symbol_entry</span></span>:<br/>Responses - <a href="3-rsp.html#SP2_2">&#167;2.2</a><br/>Rules - <a href="3-rls.html#SP2_4">&#167;2.4</a>, <a href="3-rls.html#SP2_5">&#167;2.5</a><br/>Activities - <a href="3-act.html#SP2_1">&#167;2.1</a>, <a href="3-act.html#SP2_3">&#167;2.3</a>, <a href="3-act.html#SP2_4">&#167;2.4</a>, <a href="3-act.html#SP2_5">&#167;2.5</a><br/>Actions - <a href="3-act2.html#SP3_2">&#167;3.2</a>, <a href="3-act2.html#SP3_4">&#167;3.4</a><br/>Tables - <a href="3-tbl.html#SP2_1">&#167;2.1</a><br/>Chronology - <a href="3-chr.html#SP2_1">&#167;2.1</a>, <a href="3-chr.html#SP2_3">&#167;2.3</a><br/>Multimedia - <a href="3-mlt.html#SP2_4">&#167;2.4</a><br/>Verbs - <a href="3-vrb.html#SP2_1">&#167;2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Q</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">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">Inode::extend</span><span class="plain-syntax">(</span><span class="identifier-syntax">Q</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"cannot extend"</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">Q</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">local_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">Inter::Packages::scope</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">), </span><span class="identifier-syntax">S</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">symbol_name</span><span class="plain-syntax">);</span>
@ -380,7 +390,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">-2] = </span><span class="identifier-syntax">ALIAS_IVAL</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::textual_entry</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Synoptic::textual_entry</span></span>:<br/>Responses - <a href="3-rsp.html#SP2_3">&#167;2.3</a><br/>Rules - <a href="3-rls.html#SP2_2">&#167;2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Q</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Synoptic::textual_entry</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::textual_entry</span></span>:<br/>Responses - <a href="3-rsp.html#SP2_3">&#167;2.3</a><br/>Rules - <a href="3-rls.html#SP2_2">&#167;2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">Q</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</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">Inode::extend</span><span class="plain-syntax">(</span><span class="identifier-syntax">Q</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"cannot extend"</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">Q</span><span class="plain-syntax">);</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::Packages::tree</span><span class="plain-syntax">(</span><span class="identifier-syntax">pack</span><span class="plain-syntax">);</span>
@ -391,7 +401,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">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/>Kinds - <a href="3-knd.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><br/>Use Options - <a href="3-uo.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('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">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><br/>Use Options - <a href="3-uo.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="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>
@ -405,7 +415,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">D</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_optional_definition</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">Synoptic::get_optional_definition</span></span>:<br/>Activities - <a href="3-act.html#SP1">&#167;1</a><br/>Actions - <a href="3-act2.html#SP2">&#167;2</a><br/>Tables - <a href="3-tbl.html#SP2_4">&#167;2.4</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_optional_definition</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Synoptic::get_optional_definition</span></span>:<br/>Activities - <a href="3-act.html#SP1">&#167;1</a><br/>Actions - <a href="3-act2.html#SP2">&#167;2</a><br/>Tables - <a href="3-tbl.html#SP2_4">&#167;2.4</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="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="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="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">def_s</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">definition</span><span class="plain-syntax">;</span>
@ -413,7 +423,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">D</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="function-syntax">Synoptic::module_containing</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Synoptic::module_containing</span></span>:<br/><a href="3-su.html#SP2">&#167;2</a><br/>Verbs - <a href="3-vrb.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_package</span><span class="plain-syntax"> *</span><span class="function-syntax">Synoptic::module_containing</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">Synoptic::module_containing</span></span>:<br/><a href="3-su.html#SP2">&#167;2</a><br/>Verbs - <a href="3-vrb.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="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_tree</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Packages::tree</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">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pack</span><span class="plain-syntax">) {</span>

View file

@ -655,38 +655,39 @@ take lightly in the Z-machine. But speed and flexibility are worth more.
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-iap.html#SP5_8_1" class="named-paragraph-link"><span class="named-paragraph">Define the I6 VPH class</span><span class="named-paragraph-number">5.8.1</span></a></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">max_weak_id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbolsTables::symbol_from_name_in_main_or_basics</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">"MAX_WEAK_ID"</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">max_weak_id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InterSymbolsTables::url_name_to_symbol</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">I</span><span class="string-syntax">"/main/synoptic/kinds/BASE_KIND_HWM"</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">max_weak_id</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_tree_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Symbols::definition</span><span class="plain-syntax">(</span><span class="identifier-syntax">max_weak_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">M</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">int</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">DATA_CONST_IFLD</span><span class="plain-syntax"> + </span><span class="constant-syntax">1</span><span class="plain-syntax">];</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-iap.html#SP5_8_2" class="named-paragraph-link"><span class="named-paragraph">Decide who gets a VPH</span><span class="named-paragraph-number">5.8.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-iap.html#SP5_8_3" class="named-paragraph-link"><span class="named-paragraph">Write the VPH lookup array</span><span class="named-paragraph-number">5.8.3</span></a></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">w</span><span class="plain-syntax">=1; </span><span class="identifier-syntax">w</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">M</span><span class="plain-syntax">; </span><span class="identifier-syntax">w</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">no_kind_frames</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">kind_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">kinds_in_source_order</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><a href="4-iap.html#SP7" class="function-link"><span class="function-syntax">CodeGen::IP::weak_id</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">kind_name</span><span class="plain-syntax">) == </span><span class="identifier-syntax">w</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Inter::Symbols::get_flag</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">VPH_MARK_BIT</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">sticks</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"VPH_Class VPH_%d\n with value_range %d\n"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">w</span><span class="plain-syntax">, </span><span class="identifier-syntax">Inter::Kind::instance_count</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind_name</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">p</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">p</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">no_properties</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_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">props_in_source_order</span><span class="plain-syntax">[</span><span class="identifier-syntax">p</span><span class="plain-syntax">];</span>
<span class="plain-syntax"> </span><a href="4-cg.html#SP10" class="function-link"><span class="function-syntax">CodeGen::unmark</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop_name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_node_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">FL</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Warehouse::get_frame_list</span><span class="plain-syntax">(</span><span class="identifier-syntax">InterTree::warehouse</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">Inter::Kind::permissions_list</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind_name</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-iap.html#SP5_8_4" class="named-paragraph-link"><span class="named-paragraph">Work through this frame list of permissions</span><span class="named-paragraph-number">5.8.4</span></a></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">in</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">in</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">no_instance_frames</span><span class="plain-syntax">; </span><span class="identifier-syntax">in</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">inst_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">instances_in_declaration_order</span><span class="plain-syntax">[</span><span class="identifier-syntax">in</span><span class="plain-syntax">];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Inter::Kind::is_a</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::Instance::kind_of</span><span class="plain-syntax">(</span><span class="identifier-syntax">inst_name</span><span class="plain-syntax">), </span><span class="identifier-syntax">kind_name</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_node_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">FL</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Warehouse::get_frame_list</span><span class="plain-syntax">(</span><span class="identifier-syntax">InterTree::warehouse</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">Inter::Instance::permissions_list</span><span class="plain-syntax">(</span><span class="identifier-syntax">inst_name</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-iap.html#SP5_8_4" class="named-paragraph-link"><span class="named-paragraph">Work through this frame list of permissions</span><span class="named-paragraph-number">5.8.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">M</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Symbols::evaluate_to_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">max_weak_id</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">M</span><span class="plain-syntax"> != </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-iap.html#SP5_8_2" class="named-paragraph-link"><span class="named-paragraph">Decide who gets a VPH</span><span class="named-paragraph-number">5.8.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-iap.html#SP5_8_3" class="named-paragraph-link"><span class="named-paragraph">Write the VPH lookup array</span><span class="named-paragraph-number">5.8.3</span></a></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">w</span><span class="plain-syntax">=1; </span><span class="identifier-syntax">w</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">M</span><span class="plain-syntax">; </span><span class="identifier-syntax">w</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">no_kind_frames</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">kind_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">kinds_in_source_order</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><a href="4-iap.html#SP7" class="function-link"><span class="function-syntax">CodeGen::IP::weak_id</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">kind_name</span><span class="plain-syntax">) == </span><span class="identifier-syntax">w</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Inter::Symbols::get_flag</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">VPH_MARK_BIT</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">sticks</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"VPH_Class VPH_%d\n with value_range %d\n"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">w</span><span class="plain-syntax">, </span><span class="identifier-syntax">Inter::Kind::instance_count</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind_name</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">p</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">p</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">no_properties</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_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prop_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">props_in_source_order</span><span class="plain-syntax">[</span><span class="identifier-syntax">p</span><span class="plain-syntax">];</span>
<span class="plain-syntax"> </span><a href="4-cg.html#SP10" class="function-link"><span class="function-syntax">CodeGen::unmark</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prop_name</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_node_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">FL</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Warehouse::get_frame_list</span><span class="plain-syntax">(</span><span class="identifier-syntax">InterTree::warehouse</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">Inter::Kind::permissions_list</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind_name</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-iap.html#SP5_8_4" class="named-paragraph-link"><span class="named-paragraph">Work through this frame list of permissions</span><span class="named-paragraph-number">5.8.4</span></a></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">in</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">in</span><span class="plain-syntax">&lt;</span><span class="identifier-syntax">no_instance_frames</span><span class="plain-syntax">; </span><span class="identifier-syntax">in</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">inst_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">instances_in_declaration_order</span><span class="plain-syntax">[</span><span class="identifier-syntax">in</span><span class="plain-syntax">];</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Inter::Kind::is_a</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inter::Instance::kind_of</span><span class="plain-syntax">(</span><span class="identifier-syntax">inst_name</span><span class="plain-syntax">), </span><span class="identifier-syntax">kind_name</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_node_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">FL</span><span class="plain-syntax"> =</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Inter::Warehouse::get_frame_list</span><span class="plain-syntax">(</span><span class="identifier-syntax">InterTree::warehouse</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">Inter::Instance::permissions_list</span><span class="plain-syntax">(</span><span class="identifier-syntax">inst_name</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-iap.html#SP5_8_4" class="named-paragraph-link"><span class="named-paragraph">Work through this frame list of permissions</span><span class="named-paragraph-number">5.8.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">";\n%S\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">sticks</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">sticks</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">";\n%S\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">sticks</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">sticks</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
@ -1135,8 +1136,11 @@ linearly with the size of the source text, even though \(N\) does.
<span class="plain-syntax">}</span>
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">CodeGen::IP::weak_id</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">CodeGen::IP::weak_id</span></span>:<br/><a href="4-iap.html#SP5_8">&#167;5.8</a>, <a href="4-iap.html#SP5_8_3">&#167;5.8.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kind_name</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Symbols::read_annotation</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">WEAK_ID_IANN</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">N</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">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">kind_name</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">definition</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">weak_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Metadata::read_optional_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">"^weak_id"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">alt_N</span><span class="plain-syntax"> = -1;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">weak_s</span><span class="plain-syntax">) </span><span class="identifier-syntax">alt_N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inter::Symbols::evaluate_to_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">weak_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">alt_N</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">alt_N</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>

View file

@ -136,7 +136,6 @@ set by commands in Neptune files, others set by calls from Inform.
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">dimensional_form_fixed</span><span class="plain-syntax">; </span><span class="comment-syntax"> whether they are derived</span>
<span class="plain-syntax"> </span><span class="comment-syntax"> H: representing this kind at run-time</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">weak_kind_ID</span><span class="plain-syntax">; </span><span class="comment-syntax"> as used at run-time by Inter code</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name_in_template_code</span><span class="plain-syntax">; </span><span class="comment-syntax"> an Inter identifier</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">class_number</span><span class="plain-syntax">; </span><span class="comment-syntax"> for classes of object</span>
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">CORE_MODULE</span>
@ -247,7 +246,6 @@ of object) here:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">next_free_data_type_ID</span><span class="plain-syntax"> = </span><span class="constant-syntax">2</span><span class="plain-syntax">; </span><span class="comment-syntax"> i.e., leaving room for </span><span class="extract"><span class="extract-syntax">UNKNOWN_TY</span></span><span class="comment-syntax"> to be 1 at run-time</span>
<span class="reserved-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">latest_base_kind_of_value</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
</pre>
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>&#167;9. Creation. </b>Constructors come from two sources. Built-in ones like <span class="extract"><span class="extract-syntax">number</span></span> or
@ -363,7 +361,6 @@ we apply any defaults set in Neptune files.
<span class="plain-syntax"> </span><a href="3-dmn.html#SP12" class="function-link"><span class="function-syntax">Kinds::Dimensions::dim_initialise</span></a><span class="plain-syntax">(&amp;(</span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">dim_rules</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="comment-syntax"> H: representing this kind at run-time</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weak_kind_ID</span><span class="plain-syntax"> = </span><span class="identifier-syntax">next_free_data_type_ID</span><span class="plain-syntax">++;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name_in_template_code</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">class_number</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
@ -499,24 +496,13 @@ of the kind which the constructor makes:
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::Constructors::emit_constants</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</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">con</span><span class="plain-syntax">, </span><span class="reserved-syntax">kind_constructor</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">tn</span><span class="plain-syntax"> = </span><a href="4-kc2.html#SP11" class="function-link"><span class="function-syntax">Kinds::Constructors::name_in_template_code</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">tn</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">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">con_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::make_iname_with_specific_translation</span><span class="plain-syntax">(</span><span class="identifier-syntax">WEAK_ID_HL</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">tn</span><span class="plain-syntax">, </span><a href="4-kc2.html#SP11" class="function-link"><span class="function-syntax">Kinds::Constructors::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">con_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::numeric_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">con_iname</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weak_kind_ID</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">wn</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">wn</span><span class="plain-syntax">, </span><span class="string-syntax">"WEAK_ID_%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</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">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">con_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::make_iname_with_specific_translation</span><span class="plain-syntax">(</span><span class="identifier-syntax">WEAK_ID_HL</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wn</span><span class="plain-syntax">, </span><a href="4-kc2.html#SP11" class="function-link"><span class="function-syntax">Kinds::Constructors::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">wn</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::numeric_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">con_iname</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weak_kind_ID</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::numeric_constant</span><span class="plain-syntax">(</span><a href="4-kc2.html#SP11" class="function-link"><span class="function-syntax">Kinds::Constructors::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">con</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">Hierarchy::make_available</span><span class="plain-syntax">(</span><a href="4-kc2.html#SP11" class="function-link"><span class="function-syntax">Kinds::Constructors::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">con</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="identifier-syntax">hwm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">BASE_KIND_HWM_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::numeric_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">hwm</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">next_free_data_type_ID</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::numeric_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">hwm</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">Produce::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">hwm</span><span class="plain-syntax">, </span><span class="identifier-syntax">SYNOPTIC_IANN</span><span class="plain-syntax">, </span><span class="identifier-syntax">BASE_KIND_HWM_SYNID</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">hwm</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">Kinds::Constructors::UNKNOWN_iname</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
@ -545,11 +531,24 @@ of the kind which the constructor makes:
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kc_package</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">Kinds::Constructors::iname</span><span class="plain-syntax">(</span><span class="reserved-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</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">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">con_iname</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">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name_in_template_code</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">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">con_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::make_iname_with_specific_translation</span><span class="plain-syntax">(</span><span class="identifier-syntax">WEAK_ID_HL</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">name_in_template_code</span><span class="plain-syntax">, </span><a href="4-kc2.html#SP11" class="function-link"><span class="function-syntax">Kinds::Constructors::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">con_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">wn</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">wn</span><span class="plain-syntax">, </span><span class="string-syntax">"WEAK_ID_%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</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">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">con_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::make_iname_with_specific_translation</span><span class="plain-syntax">(</span><span class="identifier-syntax">WEAK_ID_HL</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">wn</span><span class="plain-syntax">, </span><a href="4-kc2.html#SP11" class="function-link"><span class="function-syntax">Kinds::Constructors::package</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">wn</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">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">con_iname</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">Kinds::Constructors::set_iname</span><span class="plain-syntax">(</span><span class="reserved-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</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><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">con_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">iname</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="comment-syntax">void Kinds::Constructors::set_iname(kind_constructor *con, inter_name *iname) {</span>
<span class="comment-syntax"> con-&gt;con_iname = iname;</span>
<span class="comment-syntax">}</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Kinds::Constructors::list_iname</span><span class="plain-syntax">(</span><span class="reserved-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</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">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">list_iname</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
@ -666,11 +665,6 @@ ought to ask questions about kinds instead (see "Using Kinds"). However:
<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">int</span><span class="plain-syntax"> </span><span class="function-syntax">Kinds::Constructors::get_weak_ID</span><span class="plain-syntax">(</span><span class="reserved-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</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">con</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="constant-syntax">0</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">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weak_kind_ID</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">Kinds::Constructors::offers_I6_GPR</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Kinds::Constructors::offers_I6_GPR</span></span>:<br/>Using Kinds - <a href="2-uk.html#SP30">&#167;30</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</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">con</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">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-kc2.html#SP17" class="function-link"><span class="function-syntax">Kinds::Constructors::is_definite</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">)) &amp;&amp;</span>

View file

@ -251,12 +251,10 @@ not matter, since such things never come into kind definitions.
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-st.html#SP5_1_1_1" class="named-paragraph-link"><span class="named-paragraph">Transcribe the kind's name</span><span class="named-paragraph-number">5.1.1.1</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_wildcard_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"lower-case-kind"</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-st.html#SP5_1_1_2" class="named-paragraph-link"><span class="named-paragraph">Transcribe the kind's name in lower case</span><span class="named-paragraph-number">5.1.1.2</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_wildcard_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"kind-weak-ID"</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-st.html#SP5_1_1_3" class="named-paragraph-link"><span class="named-paragraph">Transcribe the kind's weak ID</span><span class="named-paragraph-number">5.1.1.3</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_wildcard_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"printing-routine"</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-st.html#SP5_1_1_4" class="named-paragraph-link"><span class="named-paragraph">Transcribe the kind's I6 printing routine</span><span class="named-paragraph-number">5.1.1.4</span></a></span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-st.html#SP5_1_1_3" class="named-paragraph-link"><span class="named-paragraph">Transcribe the kind's I6 printing routine</span><span class="named-paragraph-number">5.1.1.3</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_wildcard_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"comparison-routine"</span><span class="plain-syntax">))</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-st.html#SP5_1_1_5" class="named-paragraph-link"><span class="named-paragraph">Transcribe the kind's I6 comparison routine</span><span class="named-paragraph-number">5.1.1.5</span></a></span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="4-st.html#SP5_1_1_4" class="named-paragraph-link"><span class="named-paragraph">Transcribe the kind's I6 comparison routine</span><span class="named-paragraph-number">5.1.1.4</span></a></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
<span class="plain-syntax"> </span><a href="4-nf.html#SP2" class="function-link"><span class="function-syntax">NeptuneFiles::error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">template_wildcard_buffer</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"no such source text template wildcard"</span><span class="plain-syntax">, </span><span class="identifier-syntax">tfp</span><span class="plain-syntax">);</span>
@ -276,21 +274,14 @@ not matter, since such things never come into kind definitions.
<span class="plain-syntax"> </span><a href="4-st.html#SP6" class="function-link"><span class="function-syntax">StarTemplates::transcribe_constructor_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">template_line_buffer</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-st.html#SP5_1_1">&#167;5.1.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP5_1_1_3" class="paragraph-anchor"></a><b>&#167;5.1.1.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe the kind's weak ID</span><span class="named-paragraph-number">5.1.1.3</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_line_buffer</span><span class="plain-syntax">, </span><span class="string-syntax">"%d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weak_kind_ID</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-st.html#SP5_1_1">&#167;5.1.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP5_1_1_4" class="paragraph-anchor"></a><b>&#167;5.1.1.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe the kind's I6 printing routine</span><span class="named-paragraph-number">5.1.1.4</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP5_1_1_3" class="paragraph-anchor"></a><b>&#167;5.1.1.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe the kind's I6 printing routine</span><span class="named-paragraph-number">5.1.1.3</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">template_line_buffer</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">con</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">print_identifier</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="4-st.html#SP5_1_1">&#167;5.1.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP5_1_1_5" class="paragraph-anchor"></a><b>&#167;5.1.1.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe the kind's I6 comparison routine</span><span class="named-paragraph-number">5.1.1.5</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP5_1_1_4" class="paragraph-anchor"></a><b>&#167;5.1.1.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Transcribe the kind's I6 comparison routine</span><span class="named-paragraph-number">5.1.1.4</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">

View file

@ -158,7 +158,7 @@ which would be a typesafe list in I7, so they can be absolutely any data,
</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">EmitArrays::numeric_entry</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">EmitArrays::numeric_entry</span></span>:<br/>List Literals - <a href="4-ll.html#SP1">&#167;1</a>, <a href="4-ll.html#SP2">&#167;2</a>, <a href="4-ll.html#SP7_1">&#167;7.1</a><br/>Box Quotations - <a href="4-bq.html#SP2">&#167;2</a><br/>Relation Literals - <a href="4-rl.html#SP1">&#167;1</a><br/>Stored Action Literals - <a href="4-sal.html#SP1">&#167;1</a><br/>Rules - <a href="5-rls.html#SP7_1_1">&#167;7.1.1</a>, <a href="5-rls.html#SP7_1_2">&#167;7.1.2</a><br/>Runtime Support for Kinds - <a href="5-rsfk.html#SP11">&#167;11</a>, <a href="5-rsfk.html#SP18_1_1_1">&#167;18.1.1.1</a>, <a href="5-rsfk.html#SP18_1_1_2">&#167;18.1.1.2</a>, <a href="5-rsfk.html#SP22">&#167;22</a><br/>Relations at Run Time - <a href="5-rart.html#SP4_1">&#167;4.1</a>, <a href="5-rart.html#SP4_1_3">&#167;4.1.3</a>, <a href="5-rart.html#SP5">&#167;5</a>, <a href="5-rart.html#SP7">&#167;7</a>, <a href="5-rart.html#SP8_2">&#167;8.2</a>, <a href="5-rart.html#SP8_3">&#167;8.3</a><br/>Runtime Support for Tables - <a href="5-rsft.html#SP4_1_1_1_1_4">&#167;4.1.1.1.1.4</a>, <a href="5-rsft.html#SP4_2_3">&#167;4.2.3</a><br/>The Player - <a href="6-tp.html#SP1">&#167;1</a><br/>The Map - <a href="6-tm.html#SP2_2">&#167;2.2</a><br/>Actions - <a href="7-act.html#SP1">&#167;1</a><br/>External Files - <a href="9-ef.html#SP1">&#167;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">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">EmitArrays::numeric_entry</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">EmitArrays::numeric_entry</span></span>:<br/>List Literals - <a href="4-ll.html#SP1">&#167;1</a>, <a href="4-ll.html#SP2">&#167;2</a>, <a href="4-ll.html#SP7_1">&#167;7.1</a><br/>Box Quotations - <a href="4-bq.html#SP2">&#167;2</a><br/>Relation Literals - <a href="4-rl.html#SP1">&#167;1</a><br/>Stored Action Literals - <a href="4-sal.html#SP1">&#167;1</a><br/>Rules - <a href="5-rls.html#SP7_1_1">&#167;7.1.1</a>, <a href="5-rls.html#SP7_1_2">&#167;7.1.2</a><br/>Runtime Support for Kinds - <a href="5-rsfk.html#SP18_1_1_1">&#167;18.1.1.1</a>, <a href="5-rsfk.html#SP18_1_1_2">&#167;18.1.1.2</a>, <a href="5-rsfk.html#SP22">&#167;22</a><br/>Relations at Run Time - <a href="5-rart.html#SP4_1">&#167;4.1</a>, <a href="5-rart.html#SP4_1_3">&#167;4.1.3</a>, <a href="5-rart.html#SP5">&#167;5</a>, <a href="5-rart.html#SP7">&#167;7</a>, <a href="5-rart.html#SP8_2">&#167;8.2</a>, <a href="5-rart.html#SP8_3">&#167;8.3</a><br/>Runtime Support for Tables - <a href="5-rsft.html#SP4_1_1_1_1_4">&#167;4.1.1.1.1.4</a>, <a href="5-rsft.html#SP4_2_3">&#167;4.2.3</a><br/>The Player - <a href="6-tp.html#SP1">&#167;1</a><br/>The Map - <a href="6-tm.html#SP2_2">&#167;2.2</a><br/>Actions - <a href="7-act.html#SP1">&#167;1</a><br/>External Files - <a href="9-ef.html#SP1">&#167;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">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-ea.html#SP10" class="function-link"><span class="function-syntax">EmitArrays::entry_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="identifier-syntax">N</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>

File diff suppressed because one or more lines are too long

View file

@ -331,7 +331,7 @@ it represents an actual number at run-time, the second if not:
</p>
<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::numeric_constant</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">Emit::numeric_constant</span></span>:<br/>Hierarchy - <a href="2-hrr.html#SP23">&#167;23</a><br/>Compilation Units - <a href="2-cu.html#SP2_1_2">&#167;2.1.2</a><br/>Fundamental Constants - <a href="3-fc.html#SP2">&#167;2</a><br/>Use Options - <a href="3-uo.html#SP1">&#167;1</a>, <a href="3-uo.html#SP1_1">&#167;1.1</a>, <a href="3-uo.html#SP1_3">&#167;1.3</a><br/>Responses - <a href="4-rsp.html#SP6">&#167;6</a>, <a href="4-rsp.html#SP8_2">&#167;8.2</a><br/>Rules - <a href="5-rls.html#SP10">&#167;10</a>, <a href="5-rls.html#SP14_1">&#167;14.1</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>, <a href="5-rsfk.html#SP26">&#167;26</a>, <a href="5-rsfk.html#SP30">&#167;30</a><br/>Properties - <a href="5-prp.html#SP6">&#167;6</a>, <a href="5-prp.html#SP13_1">&#167;13.1</a><br/>Verbs at Run Time - <a href="5-vart.html#SP4">&#167;4</a><br/>Relations at Run Time - <a href="5-rart.html#SP4_1">&#167;4.1</a>, <a href="5-rart.html#SP8_3">&#167;8.3</a>, <a href="5-rart.html#SP22_1">&#167;22.1</a><br/>Runtime Support for Tables - <a href="5-rsft.html#SP1">&#167;1</a>, <a href="5-rsft.html#SP4_1_1_1_1_3">&#167;4.1.1.1.1.3</a>, <a href="5-rsft.html#SP4_1_2">&#167;4.1.2</a><br/>Chronology - <a href="5-chr.html#SP2">&#167;2</a>, <a href="5-chr.html#SP3">&#167;3</a>, <a href="5-chr.html#SP5_4">&#167;5.4</a>, <a href="5-chr.html#SP5_5">&#167;5.5</a><br/>The Player - <a href="6-tp.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>, <a href="7-act.html#SP6_1">&#167;6.1</a>, <a href="7-act.html#SP6_3">&#167;6.3</a><br/>Command Grammars - <a href="8-cg.html#SP1">&#167;1</a>, <a href="8-cg.html#SP2">&#167;2</a><br/>Figures - <a href="9-fgr.html#SP1">&#167;1</a><br/>Sound Effects - <a href="9-se.html#SP1">&#167;1</a><br/>External Files - <a href="9-ef.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">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Emit::numeric_constant</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">Emit::numeric_constant</span></span>:<br/>Hierarchy - <a href="2-hrr.html#SP23">&#167;23</a><br/>Compilation Units - <a href="2-cu.html#SP2_1_2">&#167;2.1.2</a><br/>Fundamental Constants - <a href="3-fc.html#SP2">&#167;2</a><br/>Use Options - <a href="3-uo.html#SP1">&#167;1</a>, <a href="3-uo.html#SP1_1">&#167;1.1</a>, <a href="3-uo.html#SP1_3">&#167;1.3</a><br/>Responses - <a href="4-rsp.html#SP6">&#167;6</a>, <a href="4-rsp.html#SP8_2">&#167;8.2</a><br/>Rules - <a href="5-rls.html#SP10">&#167;10</a>, <a href="5-rls.html#SP14_1">&#167;14.1</a><br/>Activities - <a href="5-act.html#SP2">&#167;2</a><br/>Runtime Support for Kinds - <a href="5-rsfk.html#SP18_3">&#167;18.3</a>, <a href="5-rsfk.html#SP26">&#167;26</a><br/>Properties - <a href="5-prp.html#SP6">&#167;6</a>, <a href="5-prp.html#SP13_1">&#167;13.1</a><br/>Verbs at Run Time - <a href="5-vart.html#SP4">&#167;4</a><br/>Relations at Run Time - <a href="5-rart.html#SP4_1">&#167;4.1</a>, <a href="5-rart.html#SP8_3">&#167;8.3</a>, <a href="5-rart.html#SP22_1">&#167;22.1</a><br/>Runtime Support for Tables - <a href="5-rsft.html#SP1">&#167;1</a>, <a href="5-rsft.html#SP4_1_1_1_1_3">&#167;4.1.1.1.1.3</a>, <a href="5-rsft.html#SP4_1_2">&#167;4.1.2</a><br/>Chronology - <a href="5-chr.html#SP2">&#167;2</a>, <a href="5-chr.html#SP3">&#167;3</a>, <a href="5-chr.html#SP5_4">&#167;5.4</a>, <a href="5-chr.html#SP5_5">&#167;5.5</a><br/>The Player - <a href="6-tp.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>, <a href="7-act.html#SP6_1">&#167;6.1</a>, <a href="7-act.html#SP6_3">&#167;6.3</a><br/>Command Grammars - <a href="8-cg.html#SP1">&#167;1</a>, <a href="8-cg.html#SP2">&#167;2</a><br/>Figures - <a href="9-fgr.html#SP1">&#167;1</a><br/>Sound Effects - <a href="9-se.html#SP1">&#167;1</a><br/>External Files - <a href="9-ef.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">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-emt.html#SP9" class="function-link"><span class="function-syntax">Emit::numeric_constant_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">con_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">int_interk</span><span class="plain-syntax">, </span><span class="identifier-syntax">INVALID_IANN</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
@ -381,7 +381,7 @@ it represents an actual number at run-time, the second if not:
</p>
<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/>Verbs at Run Time - <a href="5-vart.html#SP4">&#167;4</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><br/>External Files - <a href="9-ef.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>, <a href="5-rsfk.html#SP18_3">&#167;18.3</a><br/>Instance Counting - <a href="5-ic.html#SP9">&#167;9</a><br/>Verbs at Run Time - <a href="5-vart.html#SP4">&#167;4</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><br/>External Files - <a href="9-ef.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">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>

File diff suppressed because one or more lines are too long

View file

@ -113,16 +113,18 @@ MathJax = {
<span class="plain-syntax">}</span>
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">adjective_iname_holder</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">weak_ID_of_domain</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">weak_ID_of_domain</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname_held</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">adjective_iname_holder</span><span class="plain-syntax">;</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTAdjectives::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">RTAdjectives::iname</span></span>:<br/><a href="5-adj.html#SP3_2">&#167;3.2</a>, <a href="5-adj.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">adj</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">weak_id</span><span class="plain-syntax">) {</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTAdjectives::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">RTAdjectives::iname</span></span>:<br/><a href="5-adj.html#SP3_2">&#167;3.2</a>, <a href="5-adj.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">adj</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">weak_id</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">adjective_iname_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">aih</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">aih</span><span class="plain-syntax">, </span><span class="reserved-syntax">adjective_iname_holder</span><span class="plain-syntax">, </span><span class="identifier-syntax">adj</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">adjective_compilation</span><span class="plain-syntax">.</span><span class="element-syntax">held_inames</span><span class="plain-syntax">[</span><span class="identifier-syntax">task</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">aih</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weak_ID_of_domain</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weak_id</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">aih</span><span class="plain-syntax">, </span><span class="reserved-syntax">adjective_iname_holder</span><span class="plain-syntax">, </span><span class="identifier-syntax">adj</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">adjective_compilation</span><span class="plain-syntax">.</span><span class="element-syntax">held_inames</span><span class="plain-syntax">[</span><span class="identifier-syntax">task</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">aih</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weak_ID_of_domain</span><span class="plain-syntax"> == </span><span class="identifier-syntax">weak_id</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">aih</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">iname_held</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">aih</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">adjective_iname_holder</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">aih</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">weak_ID_of_domain</span><span class="plain-syntax"> = </span><span class="identifier-syntax">weak_id</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="identifier-syntax">PR</span><span class="plain-syntax"> =</span>
@ -190,7 +192,7 @@ domains of each meaning have long since been established. But performing a
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">VARIABLE_CREATIONS</span><span class="plain-syntax">, </span><span class="string-syntax">"Compiling support code for %W applying to %u, task %d\n"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="5-adj.html#SP2" class="function-link"><span class="function-syntax">RTAdjectives::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">adj</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><a href="5-rsfk.html#SP10" class="function-link"><span class="function-syntax">RTKinds::weak_id</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="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="5-adj.html#SP2" class="function-link"><span class="function-syntax">RTAdjectives::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">adj</span><span class="plain-syntax">, </span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><a href="5-rsfk.html#SP10" class="function-link"><span class="function-syntax">RTKinds::weak_id_iname</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="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="named-paragraph-container code-font"><a href="5-adj.html#SP3_2_1" class="named-paragraph-link"><span class="named-paragraph">Add an it-variable to represent the value or object in the domain</span><span class="named-paragraph-number">3.2.1</span></a></span><span class="plain-syntax">;</span>
@ -451,14 +453,14 @@ objects, if there is one; otherwise the first-declared meaning.
<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">RTAdjectives::iname_of_adjective_test_function</span><span class="plain-syntax">(</span><span class="identifier-syntax">adjective</span><span class="plain-syntax"> *</span><span class="identifier-syntax">adj</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sch</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">weak_id</span><span class="plain-syntax"> = </span><a href="5-rsfk.html#SP10" class="function-link"><span class="function-syntax">RTKinds::weak_id</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">weak_id</span><span class="plain-syntax"> = </span><a href="5-rsfk.html#SP10" class="function-link"><span class="function-syntax">RTKinds::weak_id_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">sch</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveAmbiguity::schema_for_task</span><span class="plain-syntax">(</span><span class="identifier-syntax">adj</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ATOM_TASK</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sch</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">adjective_meaning</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveAmbiguity::first_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">adj</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">am</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="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">am_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">AdjectiveMeaningDomains::get_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</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">am_kind</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="identifier-syntax">weak_id</span><span class="plain-syntax"> = </span><a href="5-rsfk.html#SP10" class="function-link"><span class="function-syntax">RTKinds::weak_id</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">am_kind</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">weak_id</span><span class="plain-syntax"> = </span><a href="5-rsfk.html#SP10" class="function-link"><span class="function-syntax">RTKinds::weak_id_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">am_kind</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><a href="5-adj.html#SP2" class="function-link"><span class="function-syntax">RTAdjectives::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">adj</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEST_ATOM_TASK</span><span class="plain-syntax">, </span><span class="identifier-syntax">weak_id</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>

View file

@ -98,6 +98,7 @@ and the following keeps track of which ones we need to make:
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kind_described</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">default_requested_here</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">make_default</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rks_package</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rks_iname</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rks_dv_iname</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
@ -515,12 +516,16 @@ like variables. That's what makes them intermediate.)
<p class="commentary">Weak IDs have already appeared:
</p>
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">UNKNOWN_WEAK_ID</span><span class="plain-syntax"> </span><span class="constant-syntax">1</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">RTKinds::weak_id</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">RTKinds::weak_id</span></span>:<br/><a href="5-rsfk.html#SP11">&#167;11</a>, <a href="5-rsfk.html#SP14">&#167;14</a>, <a href="5-rsfk.html#SP26">&#167;26</a>, <a href="5-rsfk.html#SP26_1">&#167;26.1</a><br/>Adjectives - <a href="5-adj.html#SP3_2">&#167;3.2</a>, <a href="5-adj.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">UNKNOWN_WEAK_ID</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">Kinds::Constructors::get_weak_ID</span><span class="plain-syntax">(</span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTKinds::weak_id_iname</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">RTKinds::weak_id_iname</span></span>:<br/><a href="5-rsfk.html#SP11">&#167;11</a>, <a href="5-rsfk.html#SP14">&#167;14</a>, <a href="5-rsfk.html#SP26_1">&#167;26.1</a><br/>Adjectives - <a href="5-adj.html#SP3_2">&#167;3.2</a>, <a href="5-adj.html#SP6">&#167;6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) { </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Kinds::Constructors::UNKNOWN_iname</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">Kinds::Behaviour::is_subkind_of_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)) </span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<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">Kinds::Constructors::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</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">iname</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="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"%u has no weak ID iname\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"kind has no weak ID 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">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>&#167;11. </b>And the following compiles an easier-on-the-eye form of the weak ID, but
@ -530,25 +535,16 @@ which might occupy up to 31 characters, the maximum length of an I6 identifier:
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTKinds::write_weak_id</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) { </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"UNKNOWN_TY"</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">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::Constructors::name_in_template_code</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">sn</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">sn</span><span class="plain-syntax">); </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%d"</span><span class="plain-syntax">, </span><a href="5-rsfk.html#SP10" class="function-link"><span class="function-syntax">RTKinds::weak_id</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="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%n"</span><span class="plain-syntax">, </span><a href="5-rsfk.html#SP10" class="function-link"><span class="function-syntax">RTKinds::weak_id_iname</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTKinds::emit_weak_id</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">RTKinds::emit_weak_id</span></span>:<br/><a href="5-rsfk.html#SP14">&#167;14</a>, <a href="5-rsfk.html#SP18_1">&#167;18.1</a>, <a href="5-rsfk.html#SP22">&#167;22</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) { </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Kinds::Constructors::UNKNOWN_iname</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">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<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">Kinds::Constructors::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</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">iname</span><span class="plain-syntax">) </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::iname_entry</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="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::numeric_entry</span></a><span class="plain-syntax">((</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) (</span><a href="5-rsfk.html#SP10" class="function-link"><span class="function-syntax">RTKinds::weak_id</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)));</span>
<span class="plain-syntax"> </span><a href="2-ea.html#SP4" class="function-link"><span class="function-syntax">EmitArrays::iname_entry</span></a><span class="plain-syntax">(</span><a href="5-rsfk.html#SP10" class="function-link"><span class="function-syntax">RTKinds::weak_id_iname</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTKinds::emit_weak_id_as_val</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">RTKinds::emit_weak_id_as_val</span></span>:<br/><a href="5-rsfk.html#SP14">&#167;14</a><br/>Rules - <a href="5-rls.html#SP12">&#167;12</a><br/>Scenes - <a href="6-scn.html#SP5_1">&#167;5.1</a><br/>Showme Command - <a href="10-sc.html#SP5_1">&#167;5.1</a>, <a href="10-sc.html#SP5_1_1">&#167;5.1.1</a>, <a href="10-sc.html#SP5_1_1_1">&#167;5.1.1.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"cannot emit null kind as val"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<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">Kinds::Constructors::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</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">iname</span><span class="plain-syntax">) </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</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><a href="5-rsfk.html#SP10" class="function-link"><span class="function-syntax">RTKinds::weak_id</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)));</span>
<span class="plain-syntax"> </span><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><a href="5-rsfk.html#SP10" class="function-link"><span class="function-syntax">RTKinds::weak_id_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>&#167;12. </b>The strong ID is a faithful representation of the <span class="extract"><span class="extract-syntax">kind</span></span> structure,
@ -609,7 +605,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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTKinds::emit_strong_id_as_val</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">RTKinds::emit_strong_id_as_val</span></span>:<br/><a href="5-rsfk.html#SP18_3">&#167;18.3</a>, <a href="5-rsfk.html#SP21">&#167;21</a><br/>Relations at Run Time - <a href="5-rart.html#SP4">&#167;4</a>, <a href="5-rart.html#SP4_2_9_1">&#167;4.2.9.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTKinds::emit_strong_id_as_val</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">RTKinds::emit_strong_id_as_val</span></span>:<br/><a href="5-rsfk.html#SP18_4">&#167;18.4</a>, <a href="5-rsfk.html#SP21">&#167;21</a><br/>Relations at Run Time - <a href="5-rart.html#SP4">&#167;4</a>, <a href="5-rart.html#SP4_2_9_1">&#167;4.2.9.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">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><a href="2-ec.html#SP7" class="function-link"><span class="function-syntax">EmitCode::val_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">rks</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rks_iname</span><span class="plain-syntax">);</span>
@ -624,20 +620,7 @@ turns up. This means remembering everything we've seen, using a new structure:
<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><span class="reserved-syntax">return</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">K</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</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">Kinds::Constructors::UNKNOWN_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="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">kind_constructor</span><span class="plain-syntax"> *</span><span class="identifier-syntax">con</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::get_construct</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">weak_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::Constructors::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</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">weak_iname</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">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::Behaviour::package</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">weak_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">WEAK_ID_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">R</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP9" class="function-link"><span class="function-syntax">Emit::numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">weak_iname</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) (</span><a href="5-rsfk.html#SP10" class="function-link"><span class="function-syntax">RTKinds::weak_id</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="identifier-syntax">Kinds::Constructors::set_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">con</span><span class="plain-syntax">, </span><span class="identifier-syntax">weak_iname</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">STDERR</span><span class="plain-syntax">, </span><span class="string-syntax">"This is %u, %d\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><a href="5-rsfk.html#SP10" class="function-link"><span class="function-syntax">RTKinds::weak_id</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="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">weak_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><a href="5-rsfk.html#SP10" class="function-link"><span class="function-syntax">RTKinds::weak_id_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">));</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>&#167;15. </b>Thus the following routine must return <span class="extract"><span class="extract-syntax">NULL</span></span> if \(K\) is a kind whose weak
@ -712,13 +695,13 @@ compile under Inform 6.
<span class="plain-syntax"> </span><span class="identifier-syntax">rks</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kind_described</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">rks</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">make_default</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">rks</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">default_requested_here</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">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Kinds::Behaviour::package</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">rks</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rks_package</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP19" class="function-link"><span class="function-syntax">Hierarchy::local_package</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DERIVED_KIND_HAP</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Kinds::Textual::write</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::feed_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">);</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><a href="2-hrr.html#SP13" class="function-link"><span class="function-syntax">Hierarchy::make_iname_with_memo</span></a><span class="plain-syntax">(</span><span class="constant-syntax">KIND_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">PR</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</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><a href="2-hrr.html#SP13" class="function-link"><span class="function-syntax">Hierarchy::make_iname_with_memo</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DK_KIND_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">rks</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rks_package</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rks</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rks_dv_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">DEFAULT_VALUE_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">PR</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rks</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rks_dv_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">DK_DEFAULT_VALUE_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">rks</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rks_package</span><span class="plain-syntax">);</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-rsfk.html#SP15_1">&#167;15.1</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>&#167;16. </b>It's convenient to combine this system with one which constructs default
@ -786,7 +769,8 @@ recursively scanned through for us, so that if we have seen a construction
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-rsfk.html#SP18_1" class="named-paragraph-link"><span class="named-paragraph">Compile the runtime ID structure for this kind</span><span class="named-paragraph-number">18.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rks</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">make_default</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-rsfk.html#SP18_2" class="named-paragraph-link"><span class="named-paragraph">Compile a constructed default value for this kind</span><span class="named-paragraph-number">18.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-rsfk.html#SP18_3" class="named-paragraph-link"><span class="named-paragraph">Compile the default value finder</span><span class="named-paragraph-number">18.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-rsfk.html#SP18_3" class="named-paragraph-link"><span class="named-paragraph">Annotate rks package</span><span class="named-paragraph-number">18.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-rsfk.html#SP18_4" class="named-paragraph-link"><span class="named-paragraph">Compile the default value finder</span><span class="named-paragraph-number">18.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP18_1" class="paragraph-anchor"></a><b>&#167;18.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the runtime ID structure for this kind</span><span class="named-paragraph-number">18.1</span></span><span class="comment-syntax"> =</span>
@ -881,14 +865,33 @@ recursively scanned through for us, so that if we have seen a construction
<span class="plain-syntax"> }</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-rsfk.html#SP18">&#167;18</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP18_3" class="paragraph-anchor"></a><b>&#167;18.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the default value finder</span><span class="named-paragraph-number">18.3</span></span><span class="comment-syntax"> =</span>
<p class="commentary firstcommentary"><a id="SP18_3" class="paragraph-anchor"></a><b>&#167;18.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Annotate rks package</span><span class="named-paragraph-number">18.3</span></span><span class="comment-syntax"> =</span>
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="plain-syntax"> </span><span class="reserved-syntax">runtime_kind_structure</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rks</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">rks</span><span class="plain-syntax">, </span><span class="reserved-syntax">runtime_kind_structure</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">DK_NEEDED_METADATA_HL</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rks</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rks_package</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">-&gt;</span><span class="element-syntax">make_default</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP9" class="function-link"><span class="function-syntax">Emit::numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">md_iname</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP9" class="function-link"><span class="function-syntax">Emit::numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">md_iname</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP11" class="function-link"><span class="function-syntax">Emit::iname_constant</span></a><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">DK_STRONG_ID_HL</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rks</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rks_package</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>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-rsfk.html#SP18">&#167;18</a>.</li></ul>
<p class="commentary firstcommentary"><a id="SP18_4" class="paragraph-anchor"></a><b>&#167;18.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the default value finder</span><span class="named-paragraph-number">18.4</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">DEFAULTVALUEFINDER_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">DEFAULTVALUEFINDER_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">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">k_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_other_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-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>
<span class="plain-syntax"> /* </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">k_s</span><span class="plain-syntax"> = */ </span><span class="identifier-syntax">LocalVariables::new_other_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"k"</span><span class="plain-syntax">);</span>
<span class="comment-syntax"> runtime_kind_structure *rks;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">rks</span><span class="plain-syntax">, </span><span class="reserved-syntax">runtime_kind_structure</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">rks</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">kind_described</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">-&gt;</span><span class="element-syntax">make_default</span><span class="plain-syntax">) {</span>
@ -913,6 +916,8 @@ recursively scanned through for us, so that if we have seen a construction
<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_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>
<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>
@ -1249,7 +1254,6 @@ each such kind, and needed at run-time.
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-rsfk.html#SP23" class="function-link"><span class="function-syntax">RTKinds::base_represented_in_inter</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><a href="5-rsfk.html#SP26" class="function-link"><span class="function-syntax">RTKinds::emit</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="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="5-rsfk.html#SP24" class="function-link"><span class="function-syntax">RTKinds::iname</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="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">WEAK_ID_IANN</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><a href="5-rsfk.html#SP10" class="function-link"><span class="function-syntax">RTKinds::weak_id</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="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">SOURCE_ORDER_IANN</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">++);</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax">}</span>
@ -1358,7 +1362,7 @@ compilation errors.
<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">printing_rule_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">value_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::new_other_as_symbol</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"value"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="string-syntax">"weak kind ID: %d\n"</span><span class="plain-syntax">, </span><a href="5-rsfk.html#SP10" class="function-link"><span class="function-syntax">RTKinds::weak_id</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="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="string-syntax">"weak kind ID: %n\n"</span><span class="plain-syntax">, </span><a href="5-rsfk.html#SP10" class="function-link"><span class="function-syntax">RTKinds::weak_id_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K</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">C</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</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">PRINT_BIP</span><span class="plain-syntax">);</span>
@ -2025,8 +2029,6 @@ particular order.
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">RTKinds::emit_all</span><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">ignored</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">MAX_WEAK_ID_HL</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-emt.html#SP9" class="function-link"><span class="function-syntax">Emit::numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">next_free_data_type_ID</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="5-rsfk.html#SP30" class="function-link"><span class="function-syntax">RTKinds::emit_recursive</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="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>

View file

@ -1,14 +1,14 @@
Total memory consumption was 299942K = 293 MB
Total memory consumption was 300823K = 294 MB
63.7% was used for 1493888 objects, in 317896 frames in 239 x 800K = 191200K = 186 MB:
63.8% was used for 1494547 objects, in 317961 frames in 240 x 800K = 192000K = 187 MB:
9.6% inter_tree_node_array 41 x 8192 = 335872 objects, 29558048 bytes
6.1% text_stream_array 3347 x 100 = 334700 objects, 18850304 bytes
9.5% inter_tree_node_array 41 x 8192 = 335872 objects, 29558048 bytes
6.1% text_stream_array 3352 x 100 = 335200 objects, 18878464 bytes
5.3% linked_list 29583 objects, 16566480 bytes
3.3% parse_node 129367 objects, 10349360 bytes
2.7% inter_symbol_array 87 x 1024 = 89088 objects, 8555232 bytes
2.4% verb_conjugation 160 objects, 7425280 bytes
1.8% parse_node_annotation_array 345 x 500 = 172500 objects, 5531040 bytes
1.7% 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% map_data 670 objects, 3178480 bytes
0.8% kind_array 66 x 1000 = 66000 objects, 2642112 bytes
@ -17,19 +17,19 @@ Total memory consumption was 299942K = 293 MB
0.4% inter_name_array 31 x 1000 = 31000 objects, 1488992 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.3% inter_package 15098 objects, 1087056 bytes
0.3% inter_package 15111 objects, 1087992 bytes
0.3% id_body 940 objects, 1075360 bytes
0.3% inter_name_generator_array 26 x 1000 = 26000 objects, 1040832 bytes
0.3% adjective_meaning 202 objects, 1000304 bytes
0.3% inter_symbols_table 15111 objects, 967104 bytes
0.3% excerpt_meaning 3098 objects, 966576 bytes
0.3% inter_symbols_table 15098 objects, 966272 bytes
0.3% dictionary 19959 objects, 958032 bytes
0.2% dict_entry_array 282 x 100 = 28200 objects, 911424 bytes
0.3% dictionary 19983 objects, 959184 bytes
0.2% dict_entry_array 283 x 100 = 28300 objects, 914656 bytes
0.2% production 3885 objects, 901320 bytes
0.2% ptoken 8390 objects, 872560 bytes
0.2% grammatical_usage 3610 objects, 866400 bytes
0.2% individual_form 2560 objects, 860160 bytes
0.2% package_request 9658 objects, 849904 bytes
0.2% package_request 9671 objects, 851048 bytes
0.2% inter_schema_node 8663 objects, 831648 bytes
0.2% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
0.1% local_variable_array 48 x 100 = 4800 objects, 462336 bytes
@ -47,14 +47,14 @@ Total memory consumption was 299942K = 293 MB
---- nonterminal 759 objects, 139656 bytes
---- compilation_subtask 1664 objects, 133120 bytes
---- nascent_array 1969 objects, 126016 bytes
---- hierarchy_location 842 objects, 121248 bytes
---- hierarchy_location 843 objects, 121392 bytes
---- documentation_ref 1274 objects, 112112 bytes
---- inference 1703 objects, 108992 bytes
---- imperative_defn 1376 objects, 99072 bytes
---- anl_entry_array 2 x 1000 = 2000 objects, 96064 bytes
---- noun_usage 2401 objects, 96040 bytes
---- preposition 273 objects, 87360 bytes
---- inter_tree 6 objects, 83952 bytes
---- inter_tree 6 objects, 84048 bytes
---- lexical_cluster 2516 objects, 80512 bytes
---- pcalc_term_array 2 x 1000 = 2000 objects, 80064 bytes
---- kind_variable_declaration 1652 objects, 79296 bytes
@ -112,7 +112,7 @@ Total memory consumption was 299942K = 293 MB
---- pathname 292 objects, 11680 bytes
---- stopwatch_timer 142 objects, 11360 bytes
---- filename 208 objects, 8320 bytes
---- uniqueness_count 326 objects, 7824 bytes
---- uniqueness_count 320 objects, 7680 bytes
---- equation_node 68 objects, 7616 bytes
---- understanding_item_array 3 x 100 = 300 objects, 7296 bytes
---- shared_variable_array 1 x 100 objects, 7232 bytes
@ -124,7 +124,7 @@ Total memory consumption was 299942K = 293 MB
---- value_property_data 84 objects, 4704 bytes
---- heading_tree 20 objects, 4640 bytes
---- parsing_pp_data 96 objects, 4608 bytes
---- hierarchy_attachment_point 51 objects, 4488 bytes
---- hierarchy_attachment_point 52 objects, 4576 bytes
---- build_vertex 40 objects, 4480 bytes
---- activity 35 objects, 4200 bytes
---- placement_affecting_array 1 x 100 objects, 4032 bytes
@ -157,8 +157,8 @@ Total memory consumption was 299942K = 293 MB
---- table_contribution_array 1 x 100 objects, 1632 bytes
---- plugin 25 objects, 1600 bytes
---- kind_interaction 39 objects, 1560 bytes
---- inter_annotation_form 36 objects, 1440 bytes
---- noun_filter_token 22 objects, 1408 bytes
---- inter_annotation_form 35 objects, 1400 bytes
---- special_meaning_holder 33 objects, 1320 bytes
---- constant_phrase 20 objects, 1280 bytes
---- table_column 16 objects, 1280 bytes
@ -166,14 +166,14 @@ Total memory consumption was 299942K = 293 MB
---- invocation_options_array 1 x 100 objects, 1224 bytes
---- direction_inference_data 30 objects, 1200 bytes
---- quantifier 16 objects, 1024 bytes
---- runtime_kind_structure 13 objects, 936 bytes
---- inter_tree_location_list 23 objects, 920 bytes
---- pipeline_stage 19 objects, 912 bytes
---- inbuild_requirement 22 objects, 880 bytes
---- inter_tree_location_list 22 objects, 880 bytes
---- control_structure_phrase 12 objects, 864 bytes
---- code_generation 1 object, 864 bytes
---- submodule_identity 27 objects, 864 bytes
---- cached_understanding 21 objects, 840 bytes
---- runtime_kind_structure 13 objects, 832 bytes
---- phrase_option_array 1 x 100 objects, 824 bytes
---- target_vm 6 objects, 816 bytes
---- generated_segment 25 objects, 800 bytes
@ -237,24 +237,24 @@ Total memory consumption was 299942K = 293 MB
---- kind_template_definition 1 object, 40 bytes
---- parse_name_notice 1 object, 40 bytes
36.2% was used for memory not allocated for objects:
36.1% was used for memory not allocated for objects:
16.8% text stream storage 51812216 bytes in 345610 claims
3.6% dictionary storage 11142144 bytes in 19959 claims
16.8% text stream storage 51877628 bytes in 346079 claims
3.6% dictionary storage 11153920 bytes in 19983 claims
---- sorting 984 bytes in 3 claims
2.3% source text 7200000 bytes in 3 claims
3.5% source text details 10800000 bytes in 2 claims
---- linguistic stock array 81920 bytes in 2 claims
---- small word set array 105600 bytes in 22 claims
0.8% inter symbols storage 2621504 bytes in 15977 claims
0.8% inter symbols storage 2622672 bytes in 15989 claims
5.4% inter bytecode storage 16802776 bytes in 14 claims
2.8% inter links storage 8750208 bytes in 246 claims
---- inter tree location list storage 138496 bytes in 22 claims
---- inter tree location list storage 142592 bytes in 23 claims
0.5% instance-of-kind counting 1695204 bytes in 1 claim
---- compilation workspace for objects 21856 bytes in 25 claims
---- lists for type-checking invocations 16000 bytes in 1 claim
---- emitter array storage 154368 bytes in 2036 claims
---- code generation workspace for objects 9192 bytes in 9 claims
19.9% was overhead - 61344048 bytes = 59906K = 58 MB
20.1% was overhead - 62127504 bytes = 60671K = 59 MB

View file

@ -1,30 +1,27 @@
100.0% in inform7 run
52.8% in compilation to Inter
31.5% in //Sequence::undertake_queued_tasks//
5.4% in //InferenceSubjects::emit_all//
3.3% in //MajorNodes::pre_pass//
3.0% in //MajorNodes::pass_1//
1.5% in //ImperativeDefinitions::compile_first_block//
1.4% in //ImperativeDefinitions::assess_all//
52.6% in compilation to Inter
31.8% in //Sequence::undertake_queued_tasks//
5.3% in //InferenceSubjects::emit_all//
3.2% in //MajorNodes::pre_pass//
2.9% in //MajorNodes::pass_1//
1.6% in //ImperativeDefinitions::compile_first_block//
1.3% in //ImperativeDefinitions::assess_all//
0.7% in //RTVerbs::ConjugateVerb//
0.4% in //MajorNodes::pass_2//
0.4% in //RTRules::compile_rulebooks//
0.4% in //World::stage_V//
0.3% in //MajorNodes::pass_2//
0.3% in //RTRelations::compile_defined_relations//
0.1% in //RTActions::compile_functions//
0.1% in //RTActions::compile_metadata//
0.1% in //RTCommandGrammars::compile_all//
0.1% in //RTKinds::compile_metadata//
0.1% in //RTKinds::compile_mkdef_functions//
0.1% in //RTRules::compile_metadata//
0.1% in //Task::make_built_in_kind_constructors//
0.1% in //World::stages_II_and_III//
2.8% not specifically accounted for
45.0% in running Inter pipeline
15.1% in inter step 10/14: consolidate-text
10.5% in step preparation
3.0% not specifically accounted for
45.3% in running Inter pipeline
15.3% in inter step 10/14: consolidate-text
10.4% in step preparation
8.4% in inter step 2/14: link
6.3% in inter step 14/14: generate inform6 -> auto.inf
6.6% in inter step 14/14: generate inform6 -> auto.inf
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
@ -34,6 +31,6 @@
0.1% in inter step 5/14: resolve-conditional-compilation
0.1% in inter step 7/14: resolve-external-symbols
0.1% in inter step 8/14: inspect-plugs
2.2% not specifically accounted for
1.7% in supervisor
2.1% not specifically accounted for
1.6% in supervisor
0.4% not specifically accounted for

View file

@ -1,18 +1,18 @@
Temple of Cupid
Emily will be given chocolates and flowers on 14 February.
(BV###-->L### 2**4 resident = {chocolates and flowers} of kind 14)
(BV###-->L### 2**4 resident = {chocolates and flowers} of kind 34)
Kate will be given chocolates and flowers on 14 February.
(BV###-->L### 2**4 resident = {chocolates and flowers} of kind 14)
(BV###-->L### 2**4 resident = {chocolates and flowers} of kind 34)
Helen will be given chocolates and flowers on 14 February.
(BV###-->L### 2**4 resident = {chocolates and flowers} of kind 14)
(BV###-->L### 2**4 resident = {chocolates and flowers} of kind 34)
Emily will be given chocolates, flowers and a sports car on 14 February.
(BV###-->L### 2**6 1 ref = {chocolates, flowers and a sports car} of kind 14)
(BV###-->L### 2**6 1 ref = {chocolates, flowers and a sports car} of kind 34)
Kate will be given chocolates and flowers on 14 February.
(BV###-->L### 2**4 resident = {chocolates and flowers} of kind 14)
(BV###-->L### 2**4 resident = {chocolates and flowers} of kind 34)
Helen will be given chocolates and flowers on 14 February.
(BV###-->L### 2**4 resident = {chocolates and flowers} of kind 14)
(BV###-->L### 2**4 resident = {chocolates and flowers} of kind 34)
"Q" = list of texts: {"chocolates", "flowers", "a sports car"}
(BV###-->L### 2**6 2 refs = {chocolates, flowers and a sports car} of kind 14)
(BV###-->L### 2**6 2 refs = {chocolates, flowers and a sports car} of kind 34)
"X" = text: Emily's apple
(BV### = p"Emily's apple")
@ -30,7 +30,7 @@
(BV###-->L### 2**6 1 ref = "Emily's peach")
Welcome
An Interactive Fiction
Release 1 / Serial number 160428 / Inform 7 build 9Z99 (I6/v6.34) SD
Release 1 / Serial number 160428 / Inform 7 v10.1.0 / D
Temple of Cupid
You can see Emily, Kate and Helen here.

View file

@ -255,7 +255,7 @@ specific instance, then it must definitely lie within the domain.
=
int AdjectiveMeaningDomains::weak_match(kind *K1, adjective_meaning *am) {
kind *K2 = AdjectiveMeaningDomains::get_kind(am);
if (RTKinds::weak_id(K1) == RTKinds::weak_id(K2)) return TRUE;
if (RTKinds::weak_id_iname(K1) == RTKinds::weak_id_iname(K2)) return TRUE;
return FALSE;
}

View file

@ -199,7 +199,7 @@ negation does not, and so must use those of the original.
}
}
inter_name *iname = RTAdjectives::iname(use_adj, task,
RTKinds::weak_id(AdjectiveMeaningDomains::get_kind(am)));
RTKinds::weak_id_iname(AdjectiveMeaningDomains::get_kind(am)));
Calculus::Schemas::modify(&(am->task_data[T].call_to_support_function),
"*=-(%s%n(*1))", negation_operator, iname);

View file

@ -215,7 +215,6 @@ void Hierarchy::establish(void) {
@e I7_VERSION_NUMBER_HL
@e I7_FULL_VERSION_NUMBER_HL
@e RANKING_TABLE_HL
@e MAX_WEAK_ID_HL
@e NO_VERB_VERB_DEFINED_HL
@e NO_TEST_SCENARIOS_HL
@e MEMORY_HEAP_SIZE_HL
@ -242,7 +241,6 @@ void Hierarchy::establish(void) {
H_C_T(I7_VERSION_NUMBER_HL, I"I7_VERSION_NUMBER")
H_C_T(I7_FULL_VERSION_NUMBER_HL, I"I7_FULL_VERSION_NUMBER")
H_C_T(RANKING_TABLE_HL, I"RANKING_TABLE")
H_C_T(MAX_WEAK_ID_HL, I"MAX_WEAK_ID")
H_C_T(NO_VERB_VERB_DEFINED_HL, I"NO_VERB_VERB_DEFINED")
H_C_T(MEMORY_HEAP_SIZE_HL, I"MEMORY_HEAP_SIZE")
H_C_T(KIT_CONFIGURATION_BITMAP_HL, I"KIT_CONFIGURATION_BITMAP")
@ -839,11 +837,9 @@ void Hierarchy::establish(void) {
@e KIND_MKDEF_FN_METADATA_HL
@e KIND_DSIZE_METADATA_HL
@e KIND_CLASS_HL
@e KIND_HL
@e WEAK_ID_HL
@e ICOUNT_HL
@e ILIST_HL
@e DEFAULT_VALUE_HL
@e DECREMENT_FN_HL
@e INCREMENT_FN_HL
@e PRINT_FN_HL
@ -872,6 +868,12 @@ void Hierarchy::establish(void) {
@e KIND_INLINE_PROPERTY_HL
@e KIND_PROPERTIES_HAP
@e DERIVED_KIND_HAP
@e DK_NEEDED_METADATA_HL
@e DK_STRONG_ID_HL
@e DK_KIND_HL
@e DK_DEFAULT_VALUE_HL
@e DEFAULTVALUEOFKOV_HL
@e DEFAULTVALUEFINDER_HL
@e PRINTKINDVALUEPAIR_HL
@ -913,12 +915,10 @@ void Hierarchy::establish(void) {
H_C_U(KIND_MKDEF_FN_METADATA_HL, I"^mkdef_fn")
H_C_U(KIND_DSIZE_METADATA_HL, I"^domain_size")
H_C_G(KIND_CLASS_HL, I"K")
H_C_G(KIND_HL, I"KD")
H_C_I(WEAK_ID_HL)
H_C_I(ICOUNT_HL)
H_C_I(ILIST_HL)
H_F_U(MKDEF_FN_HL, I"mkdef_fn")
H_C_U(DEFAULT_VALUE_HL, I"default_value")
H_F_U(DECREMENT_FN_HL, I"decrement_fn")
H_F_U(INCREMENT_FN_HL, I"increment_fn")
H_F_U(PRINT_FN_HL, I"print_fn")
@ -946,6 +946,12 @@ void Hierarchy::establish(void) {
H_C_U(KIND_INLINE_PROPERTY_HL, I"inline")
H_END
H_END
H_BEGIN_AP(DERIVED_KIND_HAP, I"derived_kind", I"_derived_kind")
H_C_U(DK_NEEDED_METADATA_HL, I"^default_value_needed")
H_C_U(DK_STRONG_ID_HL, I"strong_id")
H_C_G(DK_KIND_HL, I"DK")
H_C_U(DK_DEFAULT_VALUE_HL, I"default_value")
H_END
H_BEGIN_AP(KIND_PROPERTIES_HAP, I"property", I"_property")
H_END
H_END

View file

@ -26,16 +26,18 @@ void RTAdjectives::initialise_compilation_data(adjective *adj) {
}
typedef struct adjective_iname_holder {
int weak_ID_of_domain;
struct inter_name *weak_ID_of_domain;
struct inter_name *iname_held;
CLASS_DEFINITION
} adjective_iname_holder;
inter_name *RTAdjectives::iname(adjective *adj, int task, int weak_id) {
inter_name *RTAdjectives::iname(adjective *adj, int task, inter_name *weak_id) {
adjective_iname_holder *aih;
LOOP_OVER_LINKED_LIST(aih, adjective_iname_holder, adj->adjective_compilation.held_inames[task])
if (aih->weak_ID_of_domain == weak_id)
LOOP_OVER_LINKED_LIST(aih, adjective_iname_holder, adj->adjective_compilation.held_inames[task]) {
if (aih->weak_ID_of_domain == weak_id) {
return aih->iname_held;
}
}
aih = CREATE(adjective_iname_holder);
aih->weak_ID_of_domain = weak_id;
package_request *PR =
@ -92,7 +94,7 @@ domains of each meaning have long since been established. But performing a
LOGIF(VARIABLE_CREATIONS, "Compiling support code for %W applying to %u, task %d\n",
W, K, T);
inter_name *iname = RTAdjectives::iname(adj, T, RTKinds::weak_id(K));
inter_name *iname = RTAdjectives::iname(adj, T, RTKinds::weak_id_iname(K));
packaging_state save = Functions::begin(iname);
@<Add an it-variable to represent the value or object in the domain@>;
@ -337,14 +339,14 @@ objects, if there is one; otherwise the first-declared meaning.
=
inter_name *RTAdjectives::iname_of_adjective_test_function(adjective *adj) {
i6_schema *sch;
int weak_id = RTKinds::weak_id(K_object);
inter_name *weak_id = RTKinds::weak_id_iname(K_object);
sch = AdjectiveAmbiguity::schema_for_task(adj, NULL, TEST_ATOM_TASK);
if (sch == NULL) {
adjective_meaning *am = AdjectiveAmbiguity::first_meaning(adj);
if (am == NULL) return NULL;
kind *am_kind = AdjectiveMeaningDomains::get_kind(am);
if (am_kind == NULL) return NULL;
weak_id = RTKinds::weak_id(am_kind);
weak_id = RTKinds::weak_id_iname(am_kind);
}
return RTAdjectives::iname(adj, TEST_ATOM_TASK, weak_id);
}

View file

@ -12,6 +12,7 @@ typedef struct runtime_kind_structure {
struct kind *kind_described;
struct parse_node *default_requested_here;
int make_default;
struct package_request *rks_package;
struct inter_name *rks_iname;
struct inter_name *rks_dv_iname;
CLASS_DEFINITION
@ -401,12 +402,16 @@ like variables. That's what makes them intermediate.)
Weak IDs have already appeared:
@d UNKNOWN_WEAK_ID 1
=
int RTKinds::weak_id(kind *K) {
if (K == NULL) return UNKNOWN_WEAK_ID;
return Kinds::Constructors::get_weak_ID(Kinds::get_construct(K));
inter_name *RTKinds::weak_id_iname(kind *K) {
if (K == NULL) { return Kinds::Constructors::UNKNOWN_iname(); }
if (Kinds::Behaviour::is_subkind_of_object(K)) K = K_object;
kind_constructor *con = Kinds::get_construct(K);
inter_name *iname = Kinds::Constructors::iname(con);
if (iname) return iname;
LOG("%u has no weak ID iname\n", K);
internal_error("kind has no weak ID iname");
return NULL;
}
@ And the following compiles an easier-on-the-eye form of the weak ID, but
@ -415,25 +420,16 @@ which might occupy up to 31 characters, the maximum length of an I6 identifier:
=
void RTKinds::write_weak_id(OUTPUT_STREAM, kind *K) {
if (K == NULL) { WRITE("UNKNOWN_TY"); return; }
kind_constructor *con = Kinds::get_construct(K);
text_stream *sn = Kinds::Constructors::name_in_template_code(con);
if (Str::len(sn) > 0) WRITE("%S", sn); else WRITE("%d", RTKinds::weak_id(K));
WRITE("%n", RTKinds::weak_id_iname(K));
}
void RTKinds::emit_weak_id(kind *K) {
if (K == NULL) { EmitArrays::iname_entry(Kinds::Constructors::UNKNOWN_iname()); return; }
kind_constructor *con = Kinds::get_construct(K);
inter_name *iname = Kinds::Constructors::iname(con);
if (iname) EmitArrays::iname_entry(iname);
else EmitArrays::numeric_entry((inter_ti) (RTKinds::weak_id(K)));
EmitArrays::iname_entry(RTKinds::weak_id_iname(K));
}
void RTKinds::emit_weak_id_as_val(kind *K) {
if (K == NULL) internal_error("cannot emit null kind as val");
kind_constructor *con = Kinds::get_construct(K);
inter_name *iname = Kinds::Constructors::iname(con);
if (iname) EmitCode::val_iname(K_value, iname);
else EmitCode::val_number((inter_ti) (RTKinds::weak_id(K)));
EmitCode::val_iname(K_value, RTKinds::weak_id_iname(K));
}
@ The strong ID is a faithful representation of the |kind| structure,
@ -501,20 +497,7 @@ void RTKinds::constant_from_strong_id(inter_name *iname, kind *K) {
Emit::iname_constant(iname, K_value, rks->rks_iname);
return;
}
if (K == NULL) {
Emit::iname_constant(iname, K_value, Kinds::Constructors::UNKNOWN_iname());
return;
}
kind_constructor *con = Kinds::get_construct(K);
inter_name *weak_iname = Kinds::Constructors::iname(con);
if (weak_iname == NULL) {
package_request *R = Kinds::Behaviour::package(K);
weak_iname = Hierarchy::make_iname_in(WEAK_ID_HL, R);
Emit::numeric_constant(weak_iname, (inter_ti) (RTKinds::weak_id(K)));
Kinds::Constructors::set_iname(con, weak_iname);
WRITE_TO(STDERR, "This is %u, %d\n", K, RTKinds::weak_id(K));
}
Emit::iname_constant(iname, K_value, weak_iname);
Emit::iname_constant(iname, K_value, RTKinds::weak_id_iname(K));
}
@ Thus the following routine must return |NULL| if $K$ is a kind whose weak
@ -578,13 +561,13 @@ compile under Inform 6.
rks->kind_described = K;
rks->make_default = FALSE;
rks->default_requested_here = NULL;
package_request *PR = Kinds::Behaviour::package(K);
rks->rks_package = Hierarchy::local_package(DERIVED_KIND_HAP);
TEMPORARY_TEXT(TEMP)
Kinds::Textual::write(TEMP, K);
wording W = Feeds::feed_text(TEMP);
rks->rks_iname = Hierarchy::make_iname_with_memo(KIND_HL, PR, W);
rks->rks_iname = Hierarchy::make_iname_with_memo(DK_KIND_HL, rks->rks_package, W);
DISCARD_TEXT(TEMP)
rks->rks_dv_iname = Hierarchy::make_iname_in(DEFAULT_VALUE_HL, PR);
rks->rks_dv_iname = Hierarchy::make_iname_in(DK_DEFAULT_VALUE_HL, rks->rks_package);
@ It's convenient to combine this system with one which constructs default
values for kinds, since both involve tracking constructions uniquely.
@ -647,6 +630,7 @@ void RTKinds::compile_structures(void) {
@<Compile the runtime ID structure for this kind@>;
if (rks->make_default) @<Compile a constructed default value for this kind@>;
}
@<Annotate rks package@>;
@<Compile the default value finder@>;
}
@ -722,11 +706,26 @@ void RTKinds::compile_structures(void) {
Problems::issue_problem_end();
}
@<Annotate rks package@> =
runtime_kind_structure *rks;
LOOP_OVER(rks, runtime_kind_structure) {
inter_name *md_iname = Hierarchy::make_iname_in(DK_NEEDED_METADATA_HL,
rks->rks_package);
if (rks->make_default) {
Emit::numeric_constant(md_iname, (inter_ti) 1);
} else {
Emit::numeric_constant(md_iname, (inter_ti) 0);
}
Emit::iname_constant(Hierarchy::make_iname_in(DK_STRONG_ID_HL,
rks->rks_package), K_value, rks->rks_iname);
}
@<Compile the default value finder@> =
inter_name *iname = Hierarchy::find(DEFAULTVALUEFINDER_HL);
Produce::annotate_i(iname, SYNOPTIC_IANN, DEFAULTVALUEFINDER_SYNID);
packaging_state save = Functions::begin(iname);
inter_symbol *k_s = LocalVariables::new_other_as_symbol(I"k");
runtime_kind_structure *rks;
/* inter_symbol *k_s = */ LocalVariables::new_other_as_symbol(I"k");
/* runtime_kind_structure *rks;
LOOP_OVER(rks, runtime_kind_structure) {
kind *K = rks->kind_described;
if (rks->make_default) {
@ -751,6 +750,8 @@ void RTKinds::compile_structures(void) {
EmitCode::down();
EmitCode::val_number(0);
EmitCode::up();
*/
EmitCode::comment(I"This function is consolidated");
Functions::end(save);
Hierarchy::make_available(iname);
@ -1043,7 +1044,6 @@ void RTKinds::kind_declarations(void) {
if (RTKinds::base_represented_in_inter(K)) {
RTKinds::emit(K);
inter_name *iname = RTKinds::iname(K);
Produce::annotate_i(iname, WEAK_ID_IANN, (inter_ti) RTKinds::weak_id(K));
Produce::annotate_i(iname, SOURCE_ORDER_IANN, c++);
}
}
@ -1148,7 +1148,7 @@ compilation errors.
packaging_state save = Functions::begin(printing_rule_name);
inter_symbol *value_s = LocalVariables::new_other_as_symbol(I"value");
TEMPORARY_TEXT(C)
WRITE_TO(C, "weak kind ID: %d\n", RTKinds::weak_id(K));
WRITE_TO(C, "weak kind ID: %n\n", RTKinds::weak_id_iname(K));
EmitCode::comment(C);
DISCARD_TEXT(C)
EmitCode::inv(PRINT_BIP);
@ -1737,8 +1737,6 @@ particular order.
=
int RTKinds::emit_all(inference_subject_family *f, int ignored) {
inter_name *iname = Hierarchy::find(MAX_WEAK_ID_HL);
Emit::numeric_constant(iname, (inter_ti) next_free_data_type_ID);
RTKinds::emit_recursive(KindSubjects::from_kind(K_object));
return FALSE;
}

View file

@ -160,6 +160,29 @@ int Inter::Symbols::evaluate_to_int(inter_symbol *S) {
return -1;
}
void Inter::Symbols::set_int(inter_symbol *S, int N) {
inter_tree_node *P = Inter::Symbols::definition(S);
if ((P) &&
(P->W.data[ID_IFLD] == CONSTANT_IST) &&
(P->W.data[FORMAT_CONST_IFLD] == CONSTANT_DIRECT) &&
(P->W.data[DATA_CONST_IFLD] == LITERAL_IVAL)) {
P->W.data[DATA_CONST_IFLD + 1] = (inter_ti) N;
return;
}
if ((P) &&
(P->W.data[ID_IFLD] == CONSTANT_IST) &&
(P->W.data[FORMAT_CONST_IFLD] == CONSTANT_DIRECT) &&
(P->W.data[DATA_CONST_IFLD] == ALIAS_IVAL)) {
inter_symbols_table *scope = S->owning_table;
inter_symbol *alias_to = InterSymbolsTables::symbol_from_id(scope, P->W.data[DATA_CONST_IFLD + 1]);
Inter::Symbols::set_int(alias_to, N);
return;
}
if (P == NULL) LOG("Synbol $3 is undefined\n", S);
LOG("Synbol $3 cannot be set to %d\n", S, N);
internal_error("unable to set symbol");
}
void Inter::Symbols::strike_definition(inter_symbol *S) {
if (S) {
inter_tree_node *D = Inter::Symbols::definition(S);

View file

@ -36,7 +36,6 @@ Defining the one true set of Inter annotation codes.
@e STRINGARRAY_IANN
@e TABLEARRAY_IANN
@e VERBARRAY_IANN
@e WEAK_ID_IANN
@e EXPLICIT_ATTRIBUTE_IANN
@e EXPLICIT_VARIABLE_IANN
@e TEXT_LITERAL_IANN
@ -102,7 +101,6 @@ void Inter::Canon::declare(void) {
Inter::Annotations::form(STRINGARRAY_IANN, I"__string_array", FALSE);
Inter::Annotations::form(TABLEARRAY_IANN, I"__table_array", FALSE);
Inter::Annotations::form(VERBARRAY_IANN, I"__verb", FALSE);
Inter::Annotations::form(WEAK_ID_IANN, I"__weak_ID", FALSE);
Inter::Annotations::form(EXPLICIT_ATTRIBUTE_IANN, I"__explicit_attribute", FALSE);
Inter::Annotations::form(EXPLICIT_VARIABLE_IANN, I"__explicit_variable", FALSE);
Inter::Annotations::form(TEXT_LITERAL_IANN, I"__text_literal", FALSE);

View file

@ -12,10 +12,17 @@ of packages of type |_kind|.
void SynopticKinds::renumber(inter_tree *I) {
if (TreeLists::len(kind_nodes) > 0) {
TreeLists::sort(kind_nodes, Synoptic::module_order);
// for (int i=0; i<TreeLists::len(kind_nodes); i++) {
// inter_package *pack = Inter::Package::defined_by_frame(kind_nodes->list[i].node);
// inter_tree_node *D = Synoptic::get_definition(pack, I"property_id");
// D->W.data[DATA_CONST_IFLD+1] = (inter_ti) i;
for (int i=0; i<TreeLists::len(kind_nodes); i++) {
inter_package *pack = Inter::Package::defined_by_frame(kind_nodes->list[i].node);
inter_symbol *weak_s = Metadata::read_optional_symbol(pack, I"^weak_id");
if (weak_s) Inter::Symbols::set_int(weak_s, i+2);
}
}
if (TreeLists::len(derived_kind_nodes) > 0) {
TreeLists::sort(derived_kind_nodes, Synoptic::module_order);
// for (int i=0; i<TreeLists::len(derived_kind_nodes); i++) {
// inter_package *pack = Inter::Package::defined_by_frame(derived_kind_nodes->list[i].node);
// LOG("Saw DK at $6\n", pack);
// }
}
}
@ -39,6 +46,8 @@ int SynopticKinds::redefine(inter_tree *I, inter_tree_node *P, inter_symbol *con
inter_bookmark IBM = Inter::Bookmarks::at_end_of_this_package(pack);
switch (synid) {
case BASE_KIND_HWM_SYNID:
Inter::Symbols::strike_definition(con_s);
@<Define BASE_KIND_HWM@>;
break;
case DEFAULTVALUEOFKOV_SYNID: {
packaging_state save = Synoptic::begin_redefining_function(&IBM, I, P);
@ -46,8 +55,12 @@ int SynopticKinds::redefine(inter_tree *I, inter_tree_node *P, inter_symbol *con
Synoptic::end_redefining_function(I, save);
break;
}
case DEFAULTVALUEFINDER_SYNID:
case DEFAULTVALUEFINDER_SYNID: {
packaging_state save = Synoptic::begin_redefining_function(&IBM, I, P);
@<Add a body of code to the DEFAULTVALUEFINDER function@>;
Synoptic::end_redefining_function(I, save);
break;
}
case PRINTKINDVALUEPAIR_SYNID: {
packaging_state save = Synoptic::begin_redefining_function(&IBM, I, P);
@<Add a body of code to the PRINTKINDVALUEPAIR function@>;
@ -95,6 +108,35 @@ int SynopticKinds::redefine(inter_tree *I, inter_tree_node *P, inter_symbol *con
return TRUE;
}
@<Define BASE_KIND_HWM@> =
Synoptic::def_numeric_constant(con_s, (inter_ti) (TreeLists::len(kind_nodes) + 2), &IBM);
@<Add a body of code to the DEFAULTVALUEFINDER function@> =
inter_symbol *k_s = Synoptic::get_local(I, I"k");
for (int i=0; i<TreeLists::len(derived_kind_nodes); i++) {
inter_package *pack = Inter::Package::defined_by_frame(derived_kind_nodes->list[i].node);
if (Metadata::read_numeric(pack, I"^default_value_needed")) {
inter_symbol *rks_s = Synoptic::get_symbol(pack, I"strong_id");
inter_symbol *dv_s = Synoptic::get_symbol(pack, I"default_value");
Produce::inv_primitive(I, IF_BIP);
Produce::down(I);
Produce::inv_primitive(I, EQ_BIP);
Produce::down(I);
Produce::val_symbol(I, K_value, k_s);
Produce::val_symbol(I, K_value, rks_s);
Produce::up(I);
Produce::code(I);
Produce::down(I);
Produce::inv_primitive(I, RETURN_BIP);
Produce::down(I);
Produce::val_symbol(I, K_value, dv_s);
Produce::up(I);
Produce::up(I);
Produce::up(I);
}
}
Produce::rfalse(I);
@<Add a body of code to the DEFAULTVALUEOFKOV function@> =
inter_symbol *sk_s = Synoptic::get_local(I, I"sk");
inter_symbol *k_s = Synoptic::get_local(I, I"k");

View file

@ -11,11 +11,11 @@ of instances having the kind |K_scene|.
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);
}
// 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);
// }
}
}

View file

@ -33,6 +33,7 @@ inter_tree_location_list *figure_nodes = NULL;
inter_tree_location_list *sound_nodes = NULL;
inter_tree_location_list *use_option_nodes = NULL;
inter_tree_location_list *verb_form_nodes = NULL;
inter_tree_location_list *derived_kind_nodes = NULL;
inter_tree_location_list *kind_nodes = NULL;
int Synoptic::go(pipeline_step *step) {
@ -57,6 +58,7 @@ int Synoptic::go(pipeline_step *step) {
sound_nodes = TreeLists::new();
use_option_nodes = TreeLists::new();
verb_form_nodes = TreeLists::new();
derived_kind_nodes = TreeLists::new();
kind_nodes = TreeLists::new();
InterTree::traverse(step->repository, Synoptic::visitor, NULL, NULL, 0);
SynopticText::alphabetise(step->repository, text_nodes);
@ -124,6 +126,8 @@ void Synoptic::visitor(inter_tree *I, inter_tree_node *P, void *state) {
TreeLists::add(verb_form_nodes, P);
if (ptype == PackageTypes::get(I, I"_kind"))
TreeLists::add(kind_nodes, P);
if (ptype == PackageTypes::get(I, I"_derived_kind"))
TreeLists::add(derived_kind_nodes, P);
if (ptype == PackageTypes::get(I, I"_instance")) {
TreeLists::add(instance_nodes, P);
inter_package *pack = Inter::Package::defined_by_frame(P);
@ -215,6 +219,12 @@ inter_symbol *Synoptic::get_local(inter_tree *I, text_stream *name) {
return loc_s;
}
inter_symbol *Synoptic::get_symbol(inter_package *pack, text_stream *name) {
inter_symbol *loc_s = InterSymbolsTables::symbol_from_name(Inter::Packages::scope(pack), name);
if (loc_s == NULL) Metadata::err("package symbol not found", pack, name);
return loc_s;
}
packaging_state Synoptic::begin_redefining_function(inter_bookmark *IBM, inter_tree *I, inter_tree_node *P) {
if (P->W.data[FORMAT_CONST_IFLD] != CONSTANT_ROUTINE) {
LOG("%d\n", P->W.data[FORMAT_CONST_IFLD]);
@ -246,7 +256,7 @@ void Synoptic::end_redefining_function(inter_tree *I, packaging_state save) {
void Synoptic::def_numeric_constant(inter_symbol *con_s, inter_ti val, inter_bookmark *IBM) {
Produce::guard(Inter::Constant::new_numerical(IBM,
InterSymbolsTables::id_from_IRS_and_symbol(IBM, con_s),
InterSymbolsTables::id_from_IRS_and_symbol(IBM, list_of_unchecked_kind_symbol),
InterSymbolsTables::id_from_IRS_and_symbol(IBM, unchecked_kind_symbol),
LITERAL_IVAL, val, (inter_ti) Inter::Bookmarks::baseline(IBM) + 1, NULL));
}

View file

@ -492,38 +492,39 @@ take lightly in the Z-machine. But speed and flexibility are worth more.
@<Write Value Property Holder objects for each kind of value instance@> =
@<Define the I6 VPH class@>;
inter_symbol *max_weak_id = InterSymbolsTables::symbol_from_name_in_main_or_basics(I, I"MAX_WEAK_ID");
inter_symbol *max_weak_id = InterSymbolsTables::url_name_to_symbol(I, NULL,
I"/main/synoptic/kinds/BASE_KIND_HWM");
if (max_weak_id) {
inter_tree_node *P = Inter::Symbols::definition(max_weak_id);
int M = (int) P->W.data[DATA_CONST_IFLD + 1];
@<Decide who gets a VPH@>;
@<Write the VPH lookup array@>;
for (int w=1; w<M; w++) {
for (int i=0; i<no_kind_frames; i++) {
inter_symbol *kind_name = kinds_in_source_order[i];
if (CodeGen::IP::weak_id(kind_name) == w) {
if (Inter::Symbols::get_flag(kind_name, VPH_MARK_BIT)) {
TEMPORARY_TEXT(sticks)
WRITE("VPH_Class VPH_%d\n with value_range %d\n",
w, Inter::Kind::instance_count(kind_name));
for (int p=0; p<no_properties; p++) {
inter_symbol *prop_name = props_in_source_order[p];
CodeGen::unmark(prop_name);
}
inter_node_list *FL =
Inter::Warehouse::get_frame_list(InterTree::warehouse(I), Inter::Kind::permissions_list(kind_name));
@<Work through this frame list of permissions@>;
for (int in=0; in<no_instance_frames; in++) {
inter_symbol *inst_name = instances_in_declaration_order[in];
if (Inter::Kind::is_a(Inter::Instance::kind_of(inst_name), kind_name)) {
inter_node_list *FL =
Inter::Warehouse::get_frame_list(InterTree::warehouse(I), Inter::Instance::permissions_list(inst_name));
@<Work through this frame list of permissions@>;
int M = Inter::Symbols::evaluate_to_int(max_weak_id);
if (M != 0) {
@<Decide who gets a VPH@>;
@<Write the VPH lookup array@>;
for (int w=1; w<M; w++) {
for (int i=0; i<no_kind_frames; i++) {
inter_symbol *kind_name = kinds_in_source_order[i];
if (CodeGen::IP::weak_id(kind_name) == w) {
if (Inter::Symbols::get_flag(kind_name, VPH_MARK_BIT)) {
TEMPORARY_TEXT(sticks)
WRITE("VPH_Class VPH_%d\n with value_range %d\n",
w, Inter::Kind::instance_count(kind_name));
for (int p=0; p<no_properties; p++) {
inter_symbol *prop_name = props_in_source_order[p];
CodeGen::unmark(prop_name);
}
inter_node_list *FL =
Inter::Warehouse::get_frame_list(InterTree::warehouse(I), Inter::Kind::permissions_list(kind_name));
@<Work through this frame list of permissions@>;
for (int in=0; in<no_instance_frames; in++) {
inter_symbol *inst_name = instances_in_declaration_order[in];
if (Inter::Kind::is_a(Inter::Instance::kind_of(inst_name), kind_name)) {
inter_node_list *FL =
Inter::Warehouse::get_frame_list(InterTree::warehouse(I), Inter::Instance::permissions_list(inst_name));
@<Work through this frame list of permissions@>;
}
}
WRITE(";\n%S\n", sticks);
DISCARD_TEXT(sticks)
}
WRITE(";\n%S\n", sticks);
DISCARD_TEXT(sticks)
}
}
}
@ -898,8 +899,11 @@ int CodeGen::IP::kind_sequence_number_decl(const inter_symbol *kind_name) {
}
int CodeGen::IP::weak_id(inter_symbol *kind_name) {
int N = Inter::Symbols::read_annotation(kind_name, WEAK_ID_IANN);
if (N >= 0) return N;
inter_package *pack = Inter::Packages::container(kind_name->definition);
inter_symbol *weak_s = Metadata::read_optional_symbol(pack, I"^weak_id");
int alt_N = -1;
if (weak_s) alt_N = Inter::Symbols::evaluate_to_int(weak_s);
if (alt_N >= 0) return alt_N;
return 0;
}

View file

@ -62,7 +62,6 @@ typedef struct kind_constructor {
int dimensional_form_fixed; /* whether they are derived */
/* H: representing this kind at run-time */
int weak_kind_ID; /* as used at run-time by Inter code */
struct text_stream *name_in_template_code; /* an Inter identifier */
int class_number; /* for classes of object */
#ifdef CORE_MODULE
@ -163,7 +162,6 @@ There aren't actually many possibilities.
of object) here:
= (early code)
int next_free_data_type_ID = 2; /* i.e., leaving room for |UNKNOWN_TY| to be 1 at run-time */
kind *latest_base_kind_of_value = NULL;
@h Creation.
@ -269,7 +267,6 @@ we apply any defaults set in Neptune files.
Kinds::Dimensions::dim_initialise(&(con->dim_rules));
/* H: representing this kind at run-time */
con->weak_kind_ID = next_free_data_type_ID++;
con->name_in_template_code = Str::new();
con->class_number = 0;
@ -395,24 +392,13 @@ of the kind which the constructor makes:
void Kinds::Constructors::emit_constants(void) {
kind_constructor *con;
LOOP_OVER(con, kind_constructor) {
text_stream *tn = Kinds::Constructors::name_in_template_code(con);
if (Str::len(tn) > 0) {
con->con_iname = Hierarchy::make_iname_with_specific_translation(WEAK_ID_HL,
tn, Kinds::Constructors::package(con));
Hierarchy::make_available(con->con_iname);
Emit::numeric_constant(con->con_iname, (inter_ti) con->weak_kind_ID);
} else {
TEMPORARY_TEXT(wn)
WRITE_TO(wn, "WEAK_ID_%d", con->allocation_id);
con->con_iname = Hierarchy::make_iname_with_specific_translation(WEAK_ID_HL,
wn, Kinds::Constructors::package(con));
DISCARD_TEXT(wn)
Emit::numeric_constant(con->con_iname, (inter_ti) con->weak_kind_ID);
}
Emit::numeric_constant(Kinds::Constructors::iname(con), 0);
Hierarchy::make_available(Kinds::Constructors::iname(con));
}
inter_name *hwm = Hierarchy::find(BASE_KIND_HWM_HL);
Emit::numeric_constant(hwm, (inter_ti) next_free_data_type_ID);
Emit::numeric_constant(hwm, 0);
Produce::annotate_i(hwm, SYNOPTIC_IANN, BASE_KIND_HWM_SYNID);
Hierarchy::make_available(hwm);
}
inter_name *Kinds::Constructors::UNKNOWN_iname(void) {
@ -441,11 +427,24 @@ package_request *Kinds::Constructors::package(kind_constructor *con) {
return con->kc_package;
}
inter_name *Kinds::Constructors::iname(kind_constructor *con) {
if (con->con_iname == NULL) {
if (Str::len(con->name_in_template_code) > 0) {
con->con_iname = Hierarchy::make_iname_with_specific_translation(WEAK_ID_HL,
con->name_in_template_code, Kinds::Constructors::package(con));
Hierarchy::make_available(con->con_iname);
} else {
TEMPORARY_TEXT(wn)
WRITE_TO(wn, "WEAK_ID_%d", con->allocation_id);
con->con_iname = Hierarchy::make_iname_with_specific_translation(WEAK_ID_HL,
wn, Kinds::Constructors::package(con));
DISCARD_TEXT(wn)
}
}
return con->con_iname;
}
void Kinds::Constructors::set_iname(kind_constructor *con, inter_name *iname) {
con->con_iname = iname;
}
//void Kinds::Constructors::set_iname(kind_constructor *con, inter_name *iname) {
// con->con_iname = iname;
//}
inter_name *Kinds::Constructors::list_iname(kind_constructor *con) {
return con->list_iname;
}
@ -559,11 +558,6 @@ int Kinds::Constructors::is_definite(kind_constructor *con) {
return FALSE;
}
int Kinds::Constructors::get_weak_ID(kind_constructor *con) {
if (con == NULL) return 0;
return con->weak_kind_ID;
}
int Kinds::Constructors::offers_I6_GPR(kind_constructor *con) {
if (con == NULL) return FALSE;
if ((Kinds::Constructors::is_definite(con)) &&

View file

@ -164,8 +164,6 @@ not matter, since such things never come into kind definitions.
@<Transcribe the kind's name@>
else if (Str::eq_wide_string(template_wildcard_buffer, L"lower-case-kind"))
@<Transcribe the kind's name in lower case@>
else if (Str::eq_wide_string(template_wildcard_buffer, L"kind-weak-ID"))
@<Transcribe the kind's weak ID@>
else if (Str::eq_wide_string(template_wildcard_buffer, L"printing-routine"))
@<Transcribe the kind's I6 printing routine@>
else if (Str::eq_wide_string(template_wildcard_buffer, L"comparison-routine"))
@ -180,9 +178,6 @@ not matter, since such things never come into kind definitions.
@<Transcribe the kind's name in lower case@> =
StarTemplates::transcribe_constructor_name(template_line_buffer, con, TRUE);
@<Transcribe the kind's weak ID@> =
WRITE_TO(template_line_buffer, "%d", con->weak_kind_ID);
@<Transcribe the kind's I6 printing routine@> =
WRITE_TO(template_line_buffer, "%S", con->print_identifier);