mirror of
https://github.com/ganelson/inform.git
synced 2024-07-01 06:24:58 +03:00
Made kinds synoptic
This commit is contained in:
parent
2fe6b34a5d
commit
b5ca567881
|
@ -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">(&(</span><span class="identifier-syntax">am</span><span class="plain-syntax">-></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>
|
||||
|
|
|
@ -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">§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>
|
||||
|
||||
|
|
|
@ -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">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">-></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">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">-></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">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">-></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">-></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">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">-></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">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">-></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">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">-></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">-></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">-></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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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">§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">) > </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<TreeLists::len(kind_nodes); i++) {</span>
|
||||
<span class="comment-syntax"> inter_package *pack = Inter::Package::defined_by_frame(kind_nodes->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->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"><</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">-></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">) > </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<TreeLists::len(derived_kind_nodes); i++) {</span>
|
||||
<span class="comment-syntax"> inter_package *pack = Inter::Package::defined_by_frame(derived_kind_nodes->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">(&</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">(&</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">(&</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">(&</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">(&</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">(&</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">(&</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">(&</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">(&</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>§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>§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">), &</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">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_2" class="paragraph-anchor"></a><b>§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"><</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">-></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">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_3" class="paragraph-anchor"></a><b>§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">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_2" class="paragraph-anchor"></a><b>§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>§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">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_3" class="paragraph-anchor"></a><b>§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>§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">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_4" class="paragraph-anchor"></a><b>§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>§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">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_5" class="paragraph-anchor"></a><b>§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>§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">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_6" class="paragraph-anchor"></a><b>§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>§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">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_7" class="paragraph-anchor"></a><b>§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>§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">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_8" class="paragraph-anchor"></a><b>§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>§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">
|
||||
|
|
|
@ -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">§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">) > </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"><</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">-></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<TreeLists::len(scene_nodes); i++) {</span>
|
||||
<span class="comment-syntax"> inter_package *pack = Inter::Package::defined_by_frame(scene_nodes->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>
|
||||
|
|
|
@ -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">-></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">-></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">§2.3</a><br/>Responses - <a href="3-rsp.html#SP2_4">§2.4</a><br/>Rules - <a href="3-rls.html#SP2_6">§2.6</a>, <a href="3-rls.html#SP2_7">§2.7</a><br/>Actions - <a href="3-act2.html#SP3_6">§3.6</a><br/>Kinds - <a href="3-knd.html#SP2_1">§2.1</a>, <a href="3-knd.html#SP2_2">§2.2</a>, <a href="3-knd.html#SP2_3">§2.3</a>, <a href="3-knd.html#SP2_4">§2.4</a>, <a href="3-knd.html#SP2_5">§2.5</a>, <a href="3-knd.html#SP2_6">§2.6</a>, <a href="3-knd.html#SP2_7">§2.7</a>, <a href="3-knd.html#SP2_8">§2.8</a><br/>Relations - <a href="3-rlt.html#SP2_3">§2.3</a>, <a href="3-rlt.html#SP2_4">§2.4</a><br/>Tables - <a href="3-tbl.html#SP2_2">§2.2</a>, <a href="3-tbl.html#SP2_3">§2.3</a><br/>Chronology - <a href="3-chr.html#SP2_6">§2.6</a><br/>Scenes - <a href="3-scn.html#SP2_2">§2.2</a><br/>Use Options - <a href="3-uo.html#SP2_2">§2.2</a>, <a href="3-uo.html#SP2_3">§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">§2.3</a><br/>Responses - <a href="3-rsp.html#SP2_4">§2.4</a><br/>Rules - <a href="3-rls.html#SP2_6">§2.6</a>, <a href="3-rls.html#SP2_7">§2.7</a><br/>Actions - <a href="3-act2.html#SP3_6">§3.6</a><br/>Kinds - <a href="3-knd.html#SP2_2">§2.2</a>, <a href="3-knd.html#SP2_3">§2.3</a>, <a href="3-knd.html#SP2_4">§2.4</a>, <a href="3-knd.html#SP2_5">§2.5</a>, <a href="3-knd.html#SP2_6">§2.6</a>, <a href="3-knd.html#SP2_7">§2.7</a>, <a href="3-knd.html#SP2_8">§2.8</a>, <a href="3-knd.html#SP2_9">§2.9</a>, <a href="3-knd.html#SP2_10">§2.10</a><br/>Relations - <a href="3-rlt.html#SP2_3">§2.3</a>, <a href="3-rlt.html#SP2_4">§2.4</a><br/>Tables - <a href="3-tbl.html#SP2_2">§2.2</a>, <a href="3-tbl.html#SP2_3">§2.3</a><br/>Chronology - <a href="3-chr.html#SP2_6">§2.6</a><br/>Scenes - <a href="3-scn.html#SP2_2">§2.2</a><br/>Use Options - <a href="3-uo.html#SP2_2">§2.2</a>, <a href="3-uo.html#SP2_3">§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">§2</a><br/>Responses - <a href="3-rsp.html#SP2">§2</a><br/>Rules - <a href="3-rls.html#SP2">§2</a><br/>Actions - <a href="3-act2.html#SP3">§3</a><br/>Kinds - <a href="3-knd.html#SP2">§2</a><br/>Relations - <a href="3-rlt.html#SP2">§2</a><br/>Tables - <a href="3-tbl.html#SP2">§2</a><br/>Chronology - <a href="3-chr.html#SP2">§2</a><br/>Scenes - <a href="3-scn.html#SP2">§2</a><br/>Use Options - <a href="3-uo.html#SP2">§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">§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">§2</a><br/>Responses - <a href="3-rsp.html#SP2">§2</a><br/>Rules - <a href="3-rls.html#SP2">§2</a><br/>Actions - <a href="3-act2.html#SP3">§3</a><br/>Kinds - <a href="3-knd.html#SP2">§2</a><br/>Relations - <a href="3-rlt.html#SP2">§2</a><br/>Tables - <a href="3-tbl.html#SP2">§2</a><br/>Chronology - <a href="3-chr.html#SP2">§2</a><br/>Scenes - <a href="3-scn.html#SP2">§2</a><br/>Use Options - <a href="3-uo.html#SP2">§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">-></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">-></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">§2</a><br/>Responses - <a href="3-rsp.html#SP2">§2</a><br/>Rules - <a href="3-rls.html#SP2">§2</a><br/>Actions - <a href="3-act2.html#SP3">§3</a><br/>Kinds - <a href="3-knd.html#SP2">§2</a><br/>Relations - <a href="3-rlt.html#SP2">§2</a><br/>Tables - <a href="3-tbl.html#SP2">§2</a><br/>Chronology - <a href="3-chr.html#SP2">§2</a><br/>Scenes - <a href="3-scn.html#SP2">§2</a><br/>Use Options - <a href="3-uo.html#SP2">§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">§2</a><br/>Responses - <a href="3-rsp.html#SP2">§2</a><br/>Rules - <a href="3-rls.html#SP2">§2</a><br/>Actions - <a href="3-act2.html#SP3">§3</a><br/>Kinds - <a href="3-knd.html#SP2">§2</a><br/>Relations - <a href="3-rlt.html#SP2">§2</a><br/>Tables - <a href="3-tbl.html#SP2">§2</a><br/>Chronology - <a href="3-chr.html#SP2">§2</a><br/>Scenes - <a href="3-scn.html#SP2">§2</a><br/>Use Options - <a href="3-uo.html#SP2">§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>§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">§2.1</a><br/>Rules - <a href="3-rls.html#SP2_1">§2.1</a><br/>Actions - <a href="3-act2.html#SP3_1">§3.1</a>, <a href="3-act2.html#SP3_5">§3.5</a><br/>Properties - <a href="3-prp.html#SP2_1">§2.1</a><br/>Relations - <a href="3-rlt.html#SP2_1">§2.1</a><br/>Chronology - <a href="3-chr.html#SP2_4">§2.4</a>, <a href="3-chr.html#SP2_5">§2.5</a><br/>Multimedia - <a href="3-mlt.html#SP2_3">§2.3</a><br/>Use Options - <a href="3-uo.html#SP2_1">§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">§2.1</a><br/>Rules - <a href="3-rls.html#SP2_1">§2.1</a><br/>Actions - <a href="3-act2.html#SP3_1">§3.1</a>, <a href="3-act2.html#SP3_5">§3.5</a><br/>Kinds - <a href="3-knd.html#SP2_1">§2.1</a><br/>Properties - <a href="3-prp.html#SP2_1">§2.1</a><br/>Relations - <a href="3-rlt.html#SP2_1">§2.1</a><br/>Chronology - <a href="3-chr.html#SP2_4">§2.4</a>, <a href="3-chr.html#SP2_5">§2.5</a><br/>Multimedia - <a href="3-mlt.html#SP2_3">§2.3</a><br/>Use Options - <a href="3-uo.html#SP2_1">§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">§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">§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>§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">§2</a><br/>Rules - <a href="3-rls.html#SP2">§2</a><br/>Activities - <a href="3-act.html#SP2">§2</a><br/>Actions - <a href="3-act2.html#SP3">§3</a><br/>Tables - <a href="3-tbl.html#SP2">§2</a><br/>Chronology - <a href="3-chr.html#SP2">§2</a><br/>Multimedia - <a href="3-mlt.html#SP2">§2</a><br/>Verbs - <a href="3-vrb.html#SP2">§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">§2</a><br/>Rules - <a href="3-rls.html#SP2">§2</a><br/>Activities - <a href="3-act.html#SP2">§2</a><br/>Actions - <a href="3-act2.html#SP3">§3</a><br/>Tables - <a href="3-tbl.html#SP2">§2</a><br/>Chronology - <a href="3-chr.html#SP2">§2</a><br/>Multimedia - <a href="3-mlt.html#SP2">§2</a><br/>Verbs - <a href="3-vrb.html#SP2">§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">§2</a><br/>Tables - <a href="3-tbl.html#SP2">§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">§2</a><br/>Tables - <a href="3-tbl.html#SP2">§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">§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">§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">§2</a><br/>Rules - <a href="3-rls.html#SP2">§2</a><br/>Activities - <a href="3-act.html#SP2">§2</a><br/>Actions - <a href="3-act2.html#SP3">§3</a><br/>Tables - <a href="3-tbl.html#SP2">§2</a><br/>Chronology - <a href="3-chr.html#SP2">§2</a><br/>Multimedia - <a href="3-mlt.html#SP2">§2</a><br/>Verbs - <a href="3-vrb.html#SP2">§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">§2</a><br/>Rules - <a href="3-rls.html#SP2">§2</a><br/>Activities - <a href="3-act.html#SP2">§2</a><br/>Actions - <a href="3-act2.html#SP3">§3</a><br/>Tables - <a href="3-tbl.html#SP2">§2</a><br/>Chronology - <a href="3-chr.html#SP2">§2</a><br/>Multimedia - <a href="3-mlt.html#SP2">§2</a><br/>Verbs - <a href="3-vrb.html#SP2">§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">§2.2</a>, <a href="3-rsp.html#SP2_3">§2.3</a><br/>Rules - <a href="3-rls.html#SP2_3">§2.3</a>, <a href="3-rls.html#SP2_4">§2.4</a>, <a href="3-rls.html#SP2_5">§2.5</a><br/>Activities - <a href="3-act.html#SP2_2">§2.2</a>, <a href="3-act.html#SP2_5">§2.5</a><br/>Actions - <a href="3-act2.html#SP3_2">§3.2</a>, <a href="3-act2.html#SP3_3">§3.3</a>, <a href="3-act2.html#SP3_4">§3.4</a><br/>Tables - <a href="3-tbl.html#SP2_1">§2.1</a>, <a href="3-tbl.html#SP2_4">§2.4</a><br/>Chronology - <a href="3-chr.html#SP2_1">§2.1</a>, <a href="3-chr.html#SP2_2">§2.2</a>, <a href="3-chr.html#SP2_3">§2.3</a><br/>Multimedia - <a href="3-mlt.html#SP2_1">§2.1</a>, <a href="3-mlt.html#SP2_2">§2.2</a>, <a href="3-mlt.html#SP2_4">§2.4</a><br/>Verbs - <a href="3-vrb.html#SP2_1">§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">§2.2</a>, <a href="3-rsp.html#SP2_3">§2.3</a><br/>Rules - <a href="3-rls.html#SP2_3">§2.3</a>, <a href="3-rls.html#SP2_4">§2.4</a>, <a href="3-rls.html#SP2_5">§2.5</a><br/>Activities - <a href="3-act.html#SP2_2">§2.2</a>, <a href="3-act.html#SP2_5">§2.5</a><br/>Actions - <a href="3-act2.html#SP3_2">§3.2</a>, <a href="3-act2.html#SP3_3">§3.3</a>, <a href="3-act2.html#SP3_4">§3.4</a><br/>Tables - <a href="3-tbl.html#SP2_1">§2.1</a>, <a href="3-tbl.html#SP2_4">§2.4</a><br/>Chronology - <a href="3-chr.html#SP2_1">§2.1</a>, <a href="3-chr.html#SP2_2">§2.2</a>, <a href="3-chr.html#SP2_3">§2.3</a><br/>Multimedia - <a href="3-mlt.html#SP2_1">§2.1</a>, <a href="3-mlt.html#SP2_2">§2.2</a>, <a href="3-mlt.html#SP2_4">§2.4</a><br/>Verbs - <a href="3-vrb.html#SP2_1">§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">-></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">-></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">-></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">-></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">§2.2</a><br/>Rules - <a href="3-rls.html#SP2_4">§2.4</a>, <a href="3-rls.html#SP2_5">§2.5</a><br/>Activities - <a href="3-act.html#SP2_1">§2.1</a>, <a href="3-act.html#SP2_3">§2.3</a>, <a href="3-act.html#SP2_4">§2.4</a>, <a href="3-act.html#SP2_5">§2.5</a><br/>Actions - <a href="3-act2.html#SP3_2">§3.2</a>, <a href="3-act2.html#SP3_4">§3.4</a><br/>Tables - <a href="3-tbl.html#SP2_1">§2.1</a><br/>Chronology - <a href="3-chr.html#SP2_1">§2.1</a>, <a href="3-chr.html#SP2_3">§2.3</a><br/>Multimedia - <a href="3-mlt.html#SP2_4">§2.4</a><br/>Verbs - <a href="3-vrb.html#SP2_1">§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">§2.2</a><br/>Rules - <a href="3-rls.html#SP2_4">§2.4</a>, <a href="3-rls.html#SP2_5">§2.5</a><br/>Activities - <a href="3-act.html#SP2_1">§2.1</a>, <a href="3-act.html#SP2_3">§2.3</a>, <a href="3-act.html#SP2_4">§2.4</a>, <a href="3-act.html#SP2_5">§2.5</a><br/>Actions - <a href="3-act2.html#SP3_2">§3.2</a>, <a href="3-act2.html#SP3_4">§3.4</a><br/>Tables - <a href="3-tbl.html#SP2_1">§2.1</a><br/>Chronology - <a href="3-chr.html#SP2_1">§2.1</a>, <a href="3-chr.html#SP2_3">§2.3</a><br/>Multimedia - <a href="3-mlt.html#SP2_4">§2.4</a><br/>Verbs - <a href="3-vrb.html#SP2_1">§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">-></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">-></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">-></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">-></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">-></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">§2.3</a><br/>Rules - <a href="3-rls.html#SP2_2">§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">§2.3</a><br/>Rules - <a href="3-rls.html#SP2_2">§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">-></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">-></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">§1</a><br/>Responses - <a href="3-rsp.html#SP1">§1</a><br/>Rules - <a href="3-rls.html#SP1">§1</a><br/>Activities - <a href="3-act.html#SP1">§1</a><br/>Actions - <a href="3-act2.html#SP2">§2</a><br/>Instances - <a href="3-ins.html#SP1">§1</a><br/>Kinds - <a href="3-knd.html#SP1">§1</a><br/>Properties - <a href="3-prp.html#SP1">§1</a><br/>Relations - <a href="3-rlt.html#SP1">§1</a><br/>Tables - <a href="3-tbl.html#SP1">§1</a>, <a href="3-tbl.html#SP2_4">§2.4</a><br/>Chronology - <a href="3-chr.html#SP1">§1</a><br/>Use Options - <a href="3-uo.html#SP1">§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">§1</a><br/>Responses - <a href="3-rsp.html#SP1">§1</a><br/>Rules - <a href="3-rls.html#SP1">§1</a><br/>Activities - <a href="3-act.html#SP1">§1</a><br/>Actions - <a href="3-act2.html#SP2">§2</a><br/>Instances - <a href="3-ins.html#SP1">§1</a><br/>Properties - <a href="3-prp.html#SP1">§1</a><br/>Relations - <a href="3-rlt.html#SP1">§1</a><br/>Tables - <a href="3-tbl.html#SP1">§1</a>, <a href="3-tbl.html#SP2_4">§2.4</a><br/>Chronology - <a href="3-chr.html#SP1">§1</a><br/>Use Options - <a href="3-uo.html#SP1">§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">§1</a><br/>Actions - <a href="3-act2.html#SP2">§2</a><br/>Tables - <a href="3-tbl.html#SP2_4">§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">§1</a><br/>Actions - <a href="3-act2.html#SP2">§2</a><br/>Tables - <a href="3-tbl.html#SP2_4">§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">-></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">§2</a><br/>Verbs - <a href="3-vrb.html#SP1">§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">§2</a><br/>Verbs - <a href="3-vrb.html#SP1">§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>
|
||||
|
|
|
@ -655,11 +655,11 @@ 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">-></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="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"><</span><span class="identifier-syntax">M</span><span class="plain-syntax">; </span><span class="identifier-syntax">w</span><span class="plain-syntax">++) {</span>
|
||||
|
@ -692,6 +692,7 @@ take lightly in the Z-machine. But speed and flexibility are worth more.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-iap.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_8_1" class="paragraph-anchor"></a><b>§5.8.1. </b>It's convenient to be able to distinguish, at run-time, which objects are
|
||||
|
@ -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">§5.8</a>, <a href="4-iap.html#SP5_8_3">§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"> >= </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">-></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"> >= </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>
|
||||
|
||||
|
|
|
@ -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>§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">(&(</span><span class="identifier-syntax">con</span><span class="plain-syntax">-></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">-></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">-></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">-></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">) > </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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></span><span class="element-syntax">name_in_template_code</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">con</span><span class="plain-syntax">-></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">-></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">-></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">-></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">-></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">-></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">-></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->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">-></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">-></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">§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">)) &&</span>
|
||||
|
|
|
@ -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">§5.1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_1_1_3" class="paragraph-anchor"></a><b>§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">-></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">§5.1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_1_1_4" class="paragraph-anchor"></a><b>§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>§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">-></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">§5.1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_1_1_5" class="paragraph-anchor"></a><b>§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>§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">
|
||||
|
|
|
@ -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">§1</a>, <a href="4-ll.html#SP2">§2</a>, <a href="4-ll.html#SP7_1">§7.1</a><br/>Box Quotations - <a href="4-bq.html#SP2">§2</a><br/>Relation Literals - <a href="4-rl.html#SP1">§1</a><br/>Stored Action Literals - <a href="4-sal.html#SP1">§1</a><br/>Rules - <a href="5-rls.html#SP7_1_1">§7.1.1</a>, <a href="5-rls.html#SP7_1_2">§7.1.2</a><br/>Runtime Support for Kinds - <a href="5-rsfk.html#SP11">§11</a>, <a href="5-rsfk.html#SP18_1_1_1">§18.1.1.1</a>, <a href="5-rsfk.html#SP18_1_1_2">§18.1.1.2</a>, <a href="5-rsfk.html#SP22">§22</a><br/>Relations at Run Time - <a href="5-rart.html#SP4_1">§4.1</a>, <a href="5-rart.html#SP4_1_3">§4.1.3</a>, <a href="5-rart.html#SP5">§5</a>, <a href="5-rart.html#SP7">§7</a>, <a href="5-rart.html#SP8_2">§8.2</a>, <a href="5-rart.html#SP8_3">§8.3</a><br/>Runtime Support for Tables - <a href="5-rsft.html#SP4_1_1_1_1_4">§4.1.1.1.1.4</a>, <a href="5-rsft.html#SP4_2_3">§4.2.3</a><br/>The Player - <a href="6-tp.html#SP1">§1</a><br/>The Map - <a href="6-tm.html#SP2_2">§2.2</a><br/>Actions - <a href="7-act.html#SP1">§1</a><br/>External Files - <a href="9-ef.html#SP1">§1</a><br/>Test Scripts - <a href="10-ts.html#SP3">§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">§1</a>, <a href="4-ll.html#SP2">§2</a>, <a href="4-ll.html#SP7_1">§7.1</a><br/>Box Quotations - <a href="4-bq.html#SP2">§2</a><br/>Relation Literals - <a href="4-rl.html#SP1">§1</a><br/>Stored Action Literals - <a href="4-sal.html#SP1">§1</a><br/>Rules - <a href="5-rls.html#SP7_1_1">§7.1.1</a>, <a href="5-rls.html#SP7_1_2">§7.1.2</a><br/>Runtime Support for Kinds - <a href="5-rsfk.html#SP18_1_1_1">§18.1.1.1</a>, <a href="5-rsfk.html#SP18_1_1_2">§18.1.1.2</a>, <a href="5-rsfk.html#SP22">§22</a><br/>Relations at Run Time - <a href="5-rart.html#SP4_1">§4.1</a>, <a href="5-rart.html#SP4_1_3">§4.1.3</a>, <a href="5-rart.html#SP5">§5</a>, <a href="5-rart.html#SP7">§7</a>, <a href="5-rart.html#SP8_2">§8.2</a>, <a href="5-rart.html#SP8_3">§8.3</a><br/>Runtime Support for Tables - <a href="5-rsft.html#SP4_1_1_1_1_4">§4.1.1.1.1.4</a>, <a href="5-rsft.html#SP4_2_3">§4.2.3</a><br/>The Player - <a href="6-tp.html#SP1">§1</a><br/>The Map - <a href="6-tm.html#SP2_2">§2.2</a><br/>Actions - <a href="7-act.html#SP1">§1</a><br/>External Files - <a href="9-ef.html#SP1">§1</a><br/>Test Scripts - <a href="10-ts.html#SP3">§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
|
@ -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">§23</a><br/>Compilation Units - <a href="2-cu.html#SP2_1_2">§2.1.2</a><br/>Fundamental Constants - <a href="3-fc.html#SP2">§2</a><br/>Use Options - <a href="3-uo.html#SP1">§1</a>, <a href="3-uo.html#SP1_1">§1.1</a>, <a href="3-uo.html#SP1_3">§1.3</a><br/>Responses - <a href="4-rsp.html#SP6">§6</a>, <a href="4-rsp.html#SP8_2">§8.2</a><br/>Rules - <a href="5-rls.html#SP10">§10</a>, <a href="5-rls.html#SP14_1">§14.1</a><br/>Activities - <a href="5-act.html#SP2">§2</a><br/>Runtime Support for Kinds - <a href="5-rsfk.html#SP14">§14</a>, <a href="5-rsfk.html#SP26">§26</a>, <a href="5-rsfk.html#SP30">§30</a><br/>Properties - <a href="5-prp.html#SP6">§6</a>, <a href="5-prp.html#SP13_1">§13.1</a><br/>Verbs at Run Time - <a href="5-vart.html#SP4">§4</a><br/>Relations at Run Time - <a href="5-rart.html#SP4_1">§4.1</a>, <a href="5-rart.html#SP8_3">§8.3</a>, <a href="5-rart.html#SP22_1">§22.1</a><br/>Runtime Support for Tables - <a href="5-rsft.html#SP1">§1</a>, <a href="5-rsft.html#SP4_1_1_1_1_3">§4.1.1.1.1.3</a>, <a href="5-rsft.html#SP4_1_2">§4.1.2</a><br/>Chronology - <a href="5-chr.html#SP2">§2</a>, <a href="5-chr.html#SP3">§3</a>, <a href="5-chr.html#SP5_4">§5.4</a>, <a href="5-chr.html#SP5_5">§5.5</a><br/>The Player - <a href="6-tp.html#SP1">§1</a><br/>The Map - <a href="6-tm.html#SP2_1">§2.1</a><br/>The Score - <a href="6-ts.html#SP1">§1</a><br/>Actions - <a href="7-act.html#SP1">§1</a>, <a href="7-act.html#SP6_1">§6.1</a>, <a href="7-act.html#SP6_3">§6.3</a><br/>Command Grammars - <a href="8-cg.html#SP1">§1</a>, <a href="8-cg.html#SP2">§2</a><br/>Figures - <a href="9-fgr.html#SP1">§1</a><br/>Sound Effects - <a href="9-se.html#SP1">§1</a><br/>External Files - <a href="9-ef.html#SP1">§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">§23</a><br/>Compilation Units - <a href="2-cu.html#SP2_1_2">§2.1.2</a><br/>Fundamental Constants - <a href="3-fc.html#SP2">§2</a><br/>Use Options - <a href="3-uo.html#SP1">§1</a>, <a href="3-uo.html#SP1_1">§1.1</a>, <a href="3-uo.html#SP1_3">§1.3</a><br/>Responses - <a href="4-rsp.html#SP6">§6</a>, <a href="4-rsp.html#SP8_2">§8.2</a><br/>Rules - <a href="5-rls.html#SP10">§10</a>, <a href="5-rls.html#SP14_1">§14.1</a><br/>Activities - <a href="5-act.html#SP2">§2</a><br/>Runtime Support for Kinds - <a href="5-rsfk.html#SP18_3">§18.3</a>, <a href="5-rsfk.html#SP26">§26</a><br/>Properties - <a href="5-prp.html#SP6">§6</a>, <a href="5-prp.html#SP13_1">§13.1</a><br/>Verbs at Run Time - <a href="5-vart.html#SP4">§4</a><br/>Relations at Run Time - <a href="5-rart.html#SP4_1">§4.1</a>, <a href="5-rart.html#SP8_3">§8.3</a>, <a href="5-rart.html#SP22_1">§22.1</a><br/>Runtime Support for Tables - <a href="5-rsft.html#SP1">§1</a>, <a href="5-rsft.html#SP4_1_1_1_1_3">§4.1.1.1.1.3</a>, <a href="5-rsft.html#SP4_1_2">§4.1.2</a><br/>Chronology - <a href="5-chr.html#SP2">§2</a>, <a href="5-chr.html#SP3">§3</a>, <a href="5-chr.html#SP5_4">§5.4</a>, <a href="5-chr.html#SP5_5">§5.5</a><br/>The Player - <a href="6-tp.html#SP1">§1</a><br/>The Map - <a href="6-tm.html#SP2_1">§2.1</a><br/>The Score - <a href="6-ts.html#SP1">§1</a><br/>Actions - <a href="7-act.html#SP1">§1</a>, <a href="7-act.html#SP6_1">§6.1</a>, <a href="7-act.html#SP6_3">§6.3</a><br/>Command Grammars - <a href="8-cg.html#SP1">§1</a>, <a href="8-cg.html#SP2">§2</a><br/>Figures - <a href="9-fgr.html#SP1">§1</a><br/>Sound Effects - <a href="9-se.html#SP1">§1</a><br/>External Files - <a href="9-ef.html#SP1">§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">§23</a><br/>Responses - <a href="4-rsp.html#SP6">§6</a><br/>Rules - <a href="5-rls.html#SP2">§2</a>, <a href="5-rls.html#SP7">§7</a>, <a href="5-rls.html#SP10">§10</a>, <a href="5-rls.html#SP12">§12</a><br/>Activities - <a href="5-act.html#SP2">§2</a><br/>Runtime Support for Kinds - <a href="5-rsfk.html#SP14">§14</a><br/>Instance Counting - <a href="5-ic.html#SP9">§9</a><br/>Verbs at Run Time - <a href="5-vart.html#SP4">§4</a><br/>Relations at Run Time - <a href="5-rart.html#SP1">§1</a>, <a href="5-rart.html#SP4">§4</a>, <a href="5-rart.html#SP4_1">§4.1</a><br/>Runtime Support for Tables - <a href="5-rsft.html#SP4_1_1_1_1_3">§4.1.1.1.1.3</a><br/>Chronology - <a href="5-chr.html#SP3">§3</a>, <a href="5-chr.html#SP4">§4</a><br/>Naming - <a href="6-nmn.html#SP2">§2</a><br/>Spatial - <a href="6-spt.html#SP1">§1</a><br/>The Map - <a href="6-tm.html#SP2_1">§2.1</a><br/>The Score - <a href="6-ts.html#SP1">§1</a><br/>Scenes - <a href="6-scn.html#SP2">§2</a>, <a href="6-scn.html#SP6">§6</a><br/>Actions - <a href="7-act.html#SP1">§1</a><br/>External Files - <a href="9-ef.html#SP1">§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">§23</a><br/>Responses - <a href="4-rsp.html#SP6">§6</a><br/>Rules - <a href="5-rls.html#SP2">§2</a>, <a href="5-rls.html#SP7">§7</a>, <a href="5-rls.html#SP10">§10</a>, <a href="5-rls.html#SP12">§12</a><br/>Activities - <a href="5-act.html#SP2">§2</a><br/>Runtime Support for Kinds - <a href="5-rsfk.html#SP14">§14</a>, <a href="5-rsfk.html#SP18_3">§18.3</a><br/>Instance Counting - <a href="5-ic.html#SP9">§9</a><br/>Verbs at Run Time - <a href="5-vart.html#SP4">§4</a><br/>Relations at Run Time - <a href="5-rart.html#SP1">§1</a>, <a href="5-rart.html#SP4">§4</a>, <a href="5-rart.html#SP4_1">§4.1</a><br/>Runtime Support for Tables - <a href="5-rsft.html#SP4_1_1_1_1_3">§4.1.1.1.1.3</a><br/>Chronology - <a href="5-chr.html#SP3">§3</a>, <a href="5-chr.html#SP4">§4</a><br/>Naming - <a href="6-nmn.html#SP2">§2</a><br/>Spatial - <a href="6-spt.html#SP1">§1</a><br/>The Map - <a href="6-tm.html#SP2_1">§2.1</a><br/>The Score - <a href="6-ts.html#SP1">§1</a><br/>Scenes - <a href="6-scn.html#SP2">§2</a>, <a href="6-scn.html#SP6">§6</a><br/>Actions - <a href="7-act.html#SP1">§1</a><br/>External Files - <a href="9-ef.html#SP1">§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
|
@ -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">§3.2</a>, <a href="5-adj.html#SP6">§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">§3.2</a>, <a href="5-adj.html#SP6">§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">-></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">-></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">-></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">-></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">-></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">-></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>
|
||||
|
|
|
@ -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">§11</a>, <a href="5-rsfk.html#SP14">§14</a>, <a href="5-rsfk.html#SP26">§26</a>, <a href="5-rsfk.html#SP26_1">§26.1</a><br/>Adjectives - <a href="5-adj.html#SP3_2">§3.2</a>, <a href="5-adj.html#SP6">§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">§11</a>, <a href="5-rsfk.html#SP14">§14</a>, <a href="5-rsfk.html#SP26_1">§26.1</a><br/>Adjectives - <a href="5-adj.html#SP3_2">§3.2</a>, <a href="5-adj.html#SP6">§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>§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">) > </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">§14</a>, <a href="5-rsfk.html#SP18_1">§18.1</a>, <a href="5-rsfk.html#SP22">§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">§14</a><br/>Rules - <a href="5-rls.html#SP12">§12</a><br/>Scenes - <a href="6-scn.html#SP5_1">§5.1</a><br/>Showme Command - <a href="10-sc.html#SP5_1">§5.1</a>, <a href="10-sc.html#SP5_1_1">§5.1.1</a>, <a href="10-sc.html#SP5_1_1_1">§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>§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">§18.3</a>, <a href="5-rsfk.html#SP21">§21</a><br/>Relations at Run Time - <a href="5-rart.html#SP4">§4</a>, <a href="5-rart.html#SP4_2_9_1">§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">§18.4</a>, <a href="5-rsfk.html#SP21">§21</a><br/>Relations at Run Time - <a href="5-rart.html#SP4">§4</a>, <a href="5-rart.html#SP4_2_9_1">§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">-></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">-></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>§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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">-></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">§15.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§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">-></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>§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">§18</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP18_3" class="paragraph-anchor"></a><b>§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>§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">-></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">-></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">-></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">-></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">§18</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP18_4" class="paragraph-anchor"></a><b>§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">-></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">-></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>
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -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.
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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);
|
||||
// }
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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));
|
||||
}
|
||||
|
||||
|
|
|
@ -492,11 +492,11 @@ 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];
|
||||
|
||||
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++) {
|
||||
|
@ -529,6 +529,7 @@ take lightly in the Z-machine. But speed and flexibility are worth more.
|
|||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ It's convenient to be able to distinguish, at run-time, which objects are
|
||||
the VPH objects used only for kind-property indexing; we can test if |O| is
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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)) &&
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in a new issue