1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-08 10:04:21 +03:00
inform7/docs/core-module/27-in.html

799 lines
155 KiB
HTML
Raw Normal View History

2019-03-17 14:40:57 +02:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>27/cm</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body>
<!--Weave of '27/in' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">core</a></li><li><a href="index.html#27">Chapter 27: Bridge to Inter Module</a></li><li><b>Inter Namespace</b></li></ul><p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b></p>
2019-04-13 20:58:43 +03:00
<pre class="display">
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">name_iterator</span><span class="plain"> {</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">prototype</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">counter</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">name_iterator</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The structure name_iterator is accessed in 12/is, 27/hl.</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b></p>
2019-03-17 14:40:57 +02:00
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">UNIQUE_FUSAGE</span><span class="definitionkeyword"> from </span><span class="constant">1</span>
<span class="definitionkeyword">enum</span> <span class="constant">UNIQUE_PER_NAMESPACE_FUSAGE</span>
<span class="definitionkeyword">enum</span> <span class="constant">MANY_PER_NAMESPACE_FUSAGE</span>
<span class="definitionkeyword">enum</span> <span class="constant">DERIVED_FUSAGE</span>
</pre>
<pre class="display">
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_namespace</span><span class="plain"> {</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">namespace_prefix</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">unmarked_prefix</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">exporting</span><span class="plain">;</span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">inter_namespace</span><span class="plain">;</span>
<span class="reserved">inter_namespace</span><span class="plain"> *</span><span class="identifier">root_namespace</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name_family</span><span class="plain"> {</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">fusage</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">family_name</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name_consumption_token</span><span class="plain"> *</span><span class="identifier">first_ict</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">derivative_of</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">derived_prefix</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">derived_suffix</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">mark_exports</span><span class="plain">;</span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">inter_name_family</span><span class="plain">;</span>
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name_consumption_token</span><span class="plain"> {</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_namespace</span><span class="plain"> *</span><span class="identifier">for_namespace</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">no_consumed</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name_consumption_token</span><span class="plain"> *</span><span class="identifier">next_ict</span><span class="plain">;</span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">inter_name_consumption_token</span><span class="plain">;</span>
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name</span><span class="plain"> {</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_namespace</span><span class="plain"> *</span><span class="identifier">namespace</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">family</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">unique_number</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">symbol</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">eventual_owner</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">memo</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">override</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">derived_from</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_name</span><span class="plain"> **</span><span class="identifier">parametrised_derivatives</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">compilation_module</span><span class="plain"> *</span><span class="identifier">declared_in</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">to_mark</span><span class="plain">;</span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">inter_name</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The structure inter_namespace is accessed in 26/jl, 27/cm and here.</p>
<p class="endnote">The structure inter_name_family is private to this section.</p>
<p class="endnote">The structure inter_name_consumption_token is private to this section.</p>
2019-04-16 22:38:10 +03:00
<p class="endnote">The structure inter_name is accessed in 5/ins, 5/nv, 13/rsfk, 17/rs, 21/rl2, 22/ph, 26/jl, 26/rt, 27/ei, 27/cm, 27/pc, 27/hl and here.</p>
2019-03-17 14:40:57 +02:00
2019-04-13 20:58:43 +03:00
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b></p>
2019-03-17 14:40:57 +02:00
<pre class="display">
<span class="reserved">inter_namespace</span><span class="plain"> *</span><span class="functiontext">InterNames::new_namespace</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">prefix</span><span class="plain">) {</span>
<span class="reserved">inter_namespace</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inter_namespace</span><span class="plain">);</span>
<span class="identifier">S</span><span class="plain">-</span><span class="element">&gt;namespace_prefix</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">prefix</span><span class="plain">);</span>
<span class="identifier">S</span><span class="plain">-</span><span class="element">&gt;unmarked_prefix</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">prefix</span><span class="plain">);</span>
<span class="identifier">S</span><span class="plain">-</span><span class="element">&gt;exporting</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">S</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_namespace</span><span class="plain"> *</span><span class="functiontext">InterNames::root</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">root_namespace</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">root_namespace</span><span class="plain"> = </span><span class="functiontext">InterNames::new_namespace</span><span class="plain">(</span><span class="identifier">NULL</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">root_namespace</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="functiontext">InterNames::new_family</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">fu</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">) {</span>
<span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inter_name_family</span><span class="plain">);</span>
<span class="identifier">F</span><span class="plain">-</span><span class="element">&gt;fusage</span><span class="plain"> = </span><span class="identifier">fu</span><span class="plain">;</span>
<span class="identifier">F</span><span class="plain">-</span><span class="element">&gt;family_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">F</span><span class="plain">-</span><span class="element">&gt;first_ict</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">F</span><span class="plain">-</span><span class="element">&gt;derivative_of</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">F</span><span class="plain">-</span><span class="element">&gt;derived_prefix</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">F</span><span class="plain">-</span><span class="element">&gt;derived_suffix</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">F</span><span class="plain">-</span><span class="element">&gt;mark_exports</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">F</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_name_consumption_token</span><span class="plain"> *</span><span class="functiontext">InterNames::new_ict</span><span class="plain">(</span><span class="reserved">inter_namespace</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no namespace"</span><span class="plain">);</span>
<span class="reserved">inter_name_consumption_token</span><span class="plain"> *</span><span class="identifier">T</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inter_name_consumption_token</span><span class="plain">);</span>
<span class="identifier">T</span><span class="plain">-</span><span class="element">&gt;for_namespace</span><span class="plain"> = </span><span class="identifier">S</span><span class="plain">;</span>
<span class="identifier">T</span><span class="plain">-</span><span class="element">&gt;no_consumed</span><span class="plain"> = 1;</span>
<span class="identifier">T</span><span class="plain">-</span><span class="element">&gt;next_ict</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">T</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::new_in_space</span><span class="plain">(</span><span class="reserved">inter_namespace</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain">, </span><span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">suppress_count</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no namespace"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">F</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no family"</span><span class="plain">);</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain">);</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;namespace</span><span class="plain"> = </span><span class="identifier">S</span><span class="plain">;</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;family</span><span class="plain"> = </span><span class="identifier">F</span><span class="plain">;</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;unique_number</span><span class="plain"> = 0;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">F</span><span class="plain">-</span><span class="element">&gt;fusage</span><span class="plain"> == </span><span class="constant">UNIQUE_FUSAGE</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"not a family name"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">F</span><span class="plain">-</span><span class="element">&gt;fusage</span><span class="plain"> != </span><span class="constant">DERIVED_FUSAGE</span><span class="plain">) &amp;&amp; (</span><span class="identifier">suppress_count</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">)) {</span>
<span class="reserved">inter_name_consumption_token</span><span class="plain"> *</span><span class="identifier">ict</span><span class="plain"> = </span><span class="identifier">F</span><span class="plain">-</span><span class="element">&gt;first_ict</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ict</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="identifier">F</span><span class="plain">-</span><span class="element">&gt;first_ict</span><span class="plain"> = </span><span class="functiontext">InterNames::new_ict</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">);</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;unique_number</span><span class="plain"> = 1;</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="reserved">while</span><span class="plain"> (</span><span class="identifier">ict</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ict</span><span class="plain">-</span><span class="element">&gt;for_namespace</span><span class="plain"> == </span><span class="identifier">S</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">F</span><span class="plain">-</span><span class="element">&gt;fusage</span><span class="plain"> == </span><span class="constant">UNIQUE_PER_NAMESPACE_FUSAGE</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"one per namespace, please"</span><span class="plain">);</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;unique_number</span><span class="plain"> = ++</span><span class="identifier">ict</span><span class="plain">-</span><span class="element">&gt;no_consumed</span><span class="plain">;</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">ict</span><span class="plain">-</span><span class="element">&gt;next_ict</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="identifier">ict</span><span class="plain">-</span><span class="element">&gt;next_ict</span><span class="plain"> = </span><span class="functiontext">InterNames::new_ict</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">);</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;unique_number</span><span class="plain"> = 1;</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">ict</span><span class="plain"> = </span><span class="identifier">ict</span><span class="plain">-</span><span class="element">&gt;next_ict</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;memo</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;override</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;derived_from</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;parametrised_derivatives</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;declared_in</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;to_mark</span><span class="plain"> = 0;</span>
2019-04-13 20:58:43 +03:00
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;eventual_owner</span><span class="plain"> = </span><span class="functiontext">Hierarchy::main</span><span class="plain">();</span>
2019-03-17 14:40:57 +02:00
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::one_off</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">) {</span>
<span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="functiontext">InterNames::new_family</span><span class="plain">(</span><span class="constant">UNIQUE_FUSAGE</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain">);</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;namespace</span><span class="plain"> = </span><span class="functiontext">InterNames::root</span><span class="plain">();</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;family</span><span class="plain"> = </span><span class="identifier">F</span><span class="plain">;</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;unique_number</span><span class="plain"> = 1;</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;memo</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;override</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;derived_from</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;parametrised_derivatives</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;declared_in</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;to_mark</span><span class="plain"> = 0;</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;eventual_owner</span><span class="plain"> = </span><span class="identifier">R</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::attach_memo</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"too late to attach memo"</span><span class="plain">);</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;memo</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">c</span><span class="plain"> = 0;</span>
<span class="identifier">LOOP_THROUGH_WORDING</span><span class="plain">(</span><span class="identifier">j</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">) {</span>
<span class="comment">identifier is at this point 32 chars or fewer in length: add at most 30 more</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">c</span><span class="plain">++ &gt; 0) </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;memo</span><span class="plain">, </span><span class="string">" "</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wide::len</span><span class="plain">(</span><span class="identifier">Lexer::word_text</span><span class="plain">(</span><span class="identifier">j</span><span class="plain">)) &gt; 30)</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;memo</span><span class="plain">, </span><span class="string">"etc"</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;memo</span><span class="plain">, </span><span class="string">"%N"</span><span class="plain">, </span><span class="identifier">j</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;memo</span><span class="plain">) &gt; 32) </span><span class="reserved">break</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">Str::truncate</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;memo</span><span class="plain">, 28); </span> <span class="comment">it was at worst 62 chars in size, but is now truncated to 28</span>
<span class="identifier">Identifiers::purify</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;memo</span><span class="plain">);</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">NBUFF</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">NBUFF</span><span class="plain">, </span><span class="string">"%n"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">);</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">L</span><span class="plain"> = </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">NBUFF</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">NBUFF</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">L</span><span class="plain"> &gt; 28) </span><span class="identifier">Str::truncate</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;memo</span><span class="plain">, </span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;memo</span><span class="plain">) - (</span><span class="identifier">L</span><span class="plain"> - 28));</span>
<span class="plain">}</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;to_mark</span><span class="plain">) </span><span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;to_mark</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">NBUFF</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">NBUFF</span><span class="plain">, </span><span class="string">"%n"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">);</span>
<span class="identifier">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">T</span><span class="plain"> = </span><span class="functiontext">Packaging::scope</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">N</span><span class="plain">);</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain"> = </span><span class="functiontext">Emit::new_symbol</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">NBUFF</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">NBUFF</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;to_mark</span><span class="plain">) </span><span class="identifier">Inter::Symbols::set_flag</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;to_mark</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="functiontext">InterNames::to_text</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">)-&gt;</span><span class="identifier">symbol_name</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">InterNames::define_symbol</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">) {</span>
<span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Symbols::is_predeclared</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">)) {</span>
<span class="identifier">Inter::Symbols::undefine</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">) &amp;&amp; (</span><span class="identifier">Inter::Symbols::read_annotation</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">, </span><span class="identifier">HOLDING_IANN</span><span class="plain">) == 1)) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Symbols::read_annotation</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">, </span><span class="identifier">DELENDA_EST_IANN</span><span class="plain">) != 1) {</span>
<span class="functiontext">Emit::annotate_symbol_i</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">, </span><span class="identifier">DELENDA_EST_IANN</span><span class="plain">, 1);</span>
<span class="identifier">Inter::Symbols::strike_definition</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">InterNames::destroy_symbol</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">) {</span>
<span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Symbols::is_predeclared</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">)) {</span>
<span class="identifier">Inter::Symbols::undefine</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">) &amp;&amp; (</span><span class="identifier">Inter::Symbols::read_annotation</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">, </span><span class="identifier">HOLDING_IANN</span><span class="plain">) == 1)) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Symbols::read_annotation</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">, </span><span class="identifier">DELENDA_EST_IANN</span><span class="plain">) != 1) {</span>
<span class="functiontext">Emit::annotate_symbol_i</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">, </span><span class="identifier">DELENDA_EST_IANN</span><span class="plain">, 1);</span>
<span class="identifier">Inter::Symbols::strike_definition</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Symbols::read_annotation</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">, </span><span class="identifier">DELENDA_EST_IANN</span><span class="plain">) != 1) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"Bang"</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;symbol</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::writer</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">format_string</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">vI</span><span class="plain">) {</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain"> = (</span><span class="reserved">inter_name</span><span class="plain"> *) </span><span class="identifier">vI</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"&lt;no-inter-name&gt;"</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> {</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;family</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) || (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;namespace</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"bad inter_name"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;override</span><span class="plain">) &gt; 0) { </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;override</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">NP</span><span class="plain"> = </span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;namespace</span><span class="plain">-</span><span class="element">&gt;namespace_prefix</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;family</span><span class="plain">-</span><span class="element">&gt;mark_exports</span><span class="plain"> == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="identifier">NP</span><span class="plain"> = </span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;namespace</span><span class="plain">-</span><span class="element">&gt;unmarked_prefix</span><span class="plain">;</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;family</span><span class="plain">-</span><span class="element">&gt;fusage</span><span class="plain">) {</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">DERIVED_FUSAGE</span><span class="plain">:</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;family</span><span class="plain">-</span><span class="element">&gt;derived_prefix</span><span class="plain">);</span>
<span class="functiontext">InterNames::writer</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">format_string</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;derived_from</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;family</span><span class="plain">-</span><span class="element">&gt;derived_suffix</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">UNIQUE_FUSAGE</span><span class="plain">:</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;family</span><span class="plain">-</span><span class="element">&gt;family_name</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">UNIQUE_PER_NAMESPACE_FUSAGE</span><span class="plain">:</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">NP</span><span class="plain">) &gt; 0) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S_"</span><span class="plain">, </span><span class="identifier">NP</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;family</span><span class="plain">-</span><span class="element">&gt;family_name</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">MANY_PER_NAMESPACE_FUSAGE</span><span class="plain">:</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">NP</span><span class="plain">) &gt; 0) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S_"</span><span class="plain">, </span><span class="identifier">NP</span><span class="plain">);</span>
<span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"%S%d"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;family</span><span class="plain">-</span><span class="element">&gt;family_name</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;unique_number</span><span class="plain">);</span>
<span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">default</span><span class="plain">: </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"unknown fusage"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;memo</span><span class="plain">) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"_%S"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;memo</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::annotate_i</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">annot_ID</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">V</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain">) </span><span class="functiontext">Emit::annotate_symbol_i</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">), </span><span class="identifier">annot_ID</span><span class="plain">, </span><span class="identifier">V</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::annotate_t</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">annot_ID</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">text</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain">) </span><span class="functiontext">Emit::annotate_symbol_t</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">), </span><span class="identifier">annot_ID</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::annotate_w</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">annot_ID</span><span class="plain">, </span><span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain">) </span><span class="functiontext">Emit::annotate_symbol_w</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">), </span><span class="identifier">annot_ID</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">InterNames::read_annotation</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">annot</span><span class="plain">) {</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">Inter::Symbols::read_annotation</span><span class="plain">(</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">), </span><span class="identifier">annot</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::holster</span><span class="plain">(</span><span class="reserved">value_holster</span><span class="plain"> *</span><span class="identifier">VH</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Holsters::data_acceptable</span><span class="plain">(</span><span class="identifier">VH</span><span class="plain">)) {</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">v1</span><span class="plain"> = 0, </span><span class="identifier">v2</span><span class="plain"> = 0;</span>
<span class="identifier">inter_reading_state</span><span class="plain"> *</span><span class="identifier">IRS</span><span class="plain"> = </span><span class="functiontext">Emit::IRS</span><span class="plain">();</span>
<span class="functiontext">InterNames::to_ival</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">-&gt;</span><span class="identifier">read_into</span><span class="plain">, </span><span class="identifier">IRS</span><span class="plain">-&gt;</span><span class="identifier">current_package</span><span class="plain">, &amp;</span><span class="identifier">v1</span><span class="plain">, &amp;</span><span class="identifier">v2</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">);</span>
<span class="functiontext">Holsters::holster_pair</span><span class="plain">(</span><span class="identifier">VH</span><span class="plain">, </span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">v2</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::to_ival</span><span class="plain">(</span><span class="identifier">inter_repository</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">val1</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">val2</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain">) { </span><span class="identifier">Inter::Symbols::to_data</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">val1</span><span class="plain">, </span><span class="identifier">val2</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="plain">*</span><span class="identifier">val1</span><span class="plain"> = </span><span class="identifier">LITERAL_IVAL</span><span class="plain">; *</span><span class="identifier">val2</span><span class="plain"> = 0;</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">InterNames::defined</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Symbols::is_defined</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function InterNames::new_namespace is used in 27/cm (<a href="27-cm.html#SP2">&#167;2</a>).</p>
2019-04-13 20:58:43 +03:00
<p class="endnote">The function InterNames::root is used in <a href="#SP4">&#167;4</a>, 27/cm (<a href="27-cm.html#SP2">&#167;2</a>).</p>
2019-03-17 14:40:57 +02:00
2019-04-13 20:58:43 +03:00
<p class="endnote">The function InterNames::new_family is used in <a href="#SP6">&#167;6</a>.</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function InterNames::new_ict appears nowhere else.</p>
2019-04-13 20:58:43 +03:00
<p class="endnote">The function InterNames::new_in_space is used in <a href="#SP4">&#167;4</a>.</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function InterNames::one_off is used in 27/pc (<a href="27-pc.html#SP7">&#167;7</a>, <a href="27-pc.html#SP7_1">&#167;7.1</a>, <a href="27-pc.html#SP8">&#167;8</a>), 27/hl (<a href="27-hl.html#SP1">&#167;1</a>, <a href="27-hl.html#SP1_1">&#167;1.1</a>, <a href="27-hl.html#SP2">&#167;2</a>), 27/hr (<a href="27-hr.html#SP5">&#167;5</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function InterNames::attach_memo is used in <a href="#SP4">&#167;4</a>, 15/ep (<a href="15-ep.html#SP4">&#167;4</a>), 15/vp (<a href="15-vp.html#SP3">&#167;3</a>), 27/hl (<a href="27-hl.html#SP1_1">&#167;1.1</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function InterNames::to_symbol is used in <a href="#SP5">&#167;5</a>, 4/am (<a href="4-am.html#SP43">&#167;43</a>), 5/lp (<a href="5-lp.html#SP19">&#167;19</a>, <a href="5-lp.html#SP19_3_1">&#167;19.3.1</a>, <a href="5-lp.html#SP19_3_1_1">&#167;19.3.1.1</a>, <a href="5-lp.html#SP19_3_2">&#167;19.3.2</a>, <a href="5-lp.html#SP19_2_1">&#167;19.2.1</a>), 5/un (<a href="5-un.html#SP1">&#167;1</a>), 5/ins (<a href="5-ins.html#SP14">&#167;14</a>), 5/nv (<a href="5-nv.html#SP12">&#167;12</a>), 6/bp (<a href="6-bp.html#SP33">&#167;33</a>), 6/rlt (<a href="6-rlt.html#SP15">&#167;15</a>, <a href="6-rlt.html#SP15_1_3">&#167;15.1.3</a>, <a href="6-rlt.html#SP15_2_1">&#167;15.2.1</a>, <a href="6-rlt.html#SP15_2_5_1">&#167;15.2.5.1</a>, <a href="6-rlt.html#SP15_2_6">&#167;15.2.6</a>, <a href="6-rlt.html#SP15_2_10">&#167;15.2.10</a>, <a href="6-rlt.html#SP15_2_11">&#167;15.2.11</a>, <a href="6-rlt.html#SP15_2_12">&#167;15.2.12</a>, <a href="6-rlt.html#SP15_2_9_1">&#167;15.2.9.1</a>, <a href="6-rlt.html#SP15_2_10_1">&#167;15.2.10.1</a>, <a href="6-rlt.html#SP15_2_12_1">&#167;15.2.12.1</a>, <a href="6-rlt.html#SP29_5">&#167;29.5</a>, <a href="6-rlt.html#SP29_6">&#167;29.6</a>), 6/nv (<a href="6-nv.html#SP17">&#167;17</a>, <a href="6-nv.html#SP18_2">&#167;18.2</a>), 12/dtd (<a href="12-dtd.html#SP7_1_2">&#167;7.1.2</a>, <a href="12-dtd.html#SP11">&#167;11</a>, <a href="12-dtd.html#SP17">&#167;17</a>, <a href="12-dtd.html#SP27">&#167;27</a>), 12/cdp (<a href="12-cdp.html#SP2_1_6_1_8">&#167;2.1.6.1.8</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_3">&#167;2.1.6.1.2.2.3</a>, <a href="12-cdp.html#SP2_1_6_1_9">&#167;2.1.6.1.9</a>), 13/ca (<a href="13-ca.html#SP1">&#167;1</a>, <a href="13-ca.html#SP1_2">&#167;1.2</a>, <a href="13-ca.html#SP1_3">&#167;1.3</a>, <a href="13-ca.html#SP1_4">&#167;1.4</a>, <a href="13-ca.html#SP1_5">&#167;1.5</a>, <a href="13-ca.html#SP1_6">&#167;1.6</a>, <a href="13-ca.html#SP1_7">&#167;1.7</a>, <a href="13-ca.html#SP1_8">&#167;1.8</a>, <a href="13-ca.html#SP1_9">&#167;1.9</a>, <a href="13-ca.html#SP1_11">&#167;1.11</a>, <a href="13-ca.html#SP1_12">&#167;1.12</a>), 13/rsfk (<a href="13-rsfk.html#SP5">&#167;5</a>, <a href="13-rsfk.html#SP7">&#167;7</a>, <a href="13-rsfk.html#SP9">&#167;9</a>, <a href="13-rsfk.html#SP12">&#167;12</a>, <a href="13-rsfk.html#SP19">&#167;19</a>, <a href="13-rsfk.html#SP25_6_1">&#167;25.6.1</a>, <a href="13-rsfk.html#SP25_6_2">&#167;25.6.2</a>, <a href="13-rsfk.html#SP25_6_3">&#167;25.6.3</a>, <a href="13-rsfk.html#SP25_6_4">&#167;25.6.4</a>, <a href="13-rsfk.html#SP25_6_5">&#167;25.6.5</a>, <a href="13-rsfk.html#SP25_6_6">&#167;25.6.6</a>), 14/lv (<a href="14-lv.html#SP14_3">&#167;14.3</a>, <a href="14-lv.html#SP14_4">&#167;14.4</a>, <a href="14-lv.html#SP14_5">&#167;14.5</a>), 14/cfs (<a href="14-cfs.html#SP7">&#167;7</a>), 15/pr (<a href="15-pr.html#SP21">&#167;21</a>, <a href="15-pr.html#SP22_1">&#167;22.1</a>, <a href="15-pr.html#SP27">&#167;27</a>), 17/tl (<a href="17-tl.html#SP7">&#167;7</a>, <a href="17-tl.html#SP13">&#167;13</a>), 17/ts (<a href="17-ts.html#SP7">&#167;7</a>, <a href="17-ts.html#SP8">&#167;8</a>), 17/rs (<a href="17-rs.html#SP6_1">&#167;6.1</a>, <a href="17-rs.html#SP6_2">&#167;6.2</a>, <a href="17-rs.html#SP7_2">&#167;7.2</a>), 19/tc (<a href="19-tc.html#SP8">&#167;8</a>), 20/eq (<a href="20-eq.html#SP48">&#167;48</a>), 21/rl (<a href="21-rl.html#SP9">&#167;9</a>, <a href="21-rl.html#SP11_2">&#167;11.2</a>, <a href="21-rl.html#SP22">&#167;22</a>, <a href="21-rl.html#SP22_1">&#167;22.1</a>), 21/rb (<a href="21-rb.html#SP24_1_3_1">&#167;24.1.3.1</a>), 21/fao (<a href="21-fao.html#SP10">&#167;10</a>), 21/sv (<a href="21-sv.html#SP3_2">&#167;3.2</a>), 21/ac (<a href="21-ac.html#SP14">&#167;14</a>), 22/prcd (<a href="22-prcd.html#SP10">&#167;10</a>, <a href="22-prcd.html#SP10_1_1_1">&#167;10.1.1.1</a>), 22/pav (<a href="22-pav.html#SP9_2">&#167;9.2</a>), 24/lv (<a href="24-lv.html#SP41">&#167;41</a>), 24/ch (<a href="24-ch.html#SP4">&#167;4</a>), 25/ci (<a href="25-ci.html#SP3_2_3_6">&#167;3.2.3.6</a>), 25/ciac (<a href="25-ciac.html#SP2">&#167;2</a>)
2019-03-17 14:40:57 +02:00
2019-04-10 04:13:29 +03:00
<p class="endnote">The function InterNames::to_text is used in 15/vp (<a href="15-vp.html#SP3">&#167;3</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function InterNames::define_symbol is used in 27/ei (<a href="27-ei.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function InterNames::destroy_symbol appears nowhere else.</p>
<p class="endnote">The function InterNames::writer is used in 1/cm (<a href="1-cm.html#SP6_3">&#167;6.3</a>).</p>
<p class="endnote">The function InterNames::annotate_i is used in 13/rsfk (<a href="13-rsfk.html#SP25">&#167;25</a>), 15/pr (<a href="15-pr.html#SP27">&#167;27</a>), 15/epv (<a href="15-epv.html#SP1">&#167;1</a>, <a href="15-epv.html#SP1_1_1">&#167;1.1.1</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function InterNames::annotate_t appears nowhere else.</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function InterNames::annotate_w is used in 15/pr (<a href="15-pr.html#SP27">&#167;27</a>).</p>
<p class="endnote">The function InterNames::read_annotation appears nowhere else.</p>
<p class="endnote">The function InterNames::holster is used in 13/rsfk (<a href="13-rsfk.html#SP4">&#167;4</a>), 14/rv (<a href="14-rv.html#SP24_2">&#167;24.2</a>, <a href="14-rv.html#SP24_3">&#167;24.3</a>, <a href="14-rv.html#SP24_3_1">&#167;24.3.1</a>), 17/tl (<a href="17-tl.html#SP10">&#167;10</a>, <a href="17-tl.html#SP10_2_1">&#167;10.2.1</a>, <a href="17-tl.html#SP16">&#167;16</a>), 17/ts (<a href="17-ts.html#SP8">&#167;8</a>, <a href="17-ts.html#SP8_1">&#167;8.1</a>), 17/rs (<a href="17-rs.html#SP12">&#167;12</a>).</p>
<p class="endnote">The function InterNames::to_ival is used in 13/rsfk (<a href="13-rsfk.html#SP5">&#167;5</a>), 17/tl (<a href="17-tl.html#SP13">&#167;13</a>).</p>
<p class="endnote">The function InterNames::defined is used in 13/rsfk (<a href="13-rsfk.html#SP25">&#167;25</a>).</p>
2019-03-17 14:40:57 +02:00
2019-04-13 20:58:43 +03:00
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b></p>
2019-03-17 14:40:57 +02:00
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">INVALID_INAMEF</span><span class="definitionkeyword"> from </span><span class="constant">0</span>
<span class="definitionkeyword">enum</span> <span class="constant">ACTION_BASE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">ACTION_BITMAP_PROPERTY_VALUE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">ACTION_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">ACTION_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">ACTION_STV_FRAME_CREATOR_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">ACTIVITY_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">ACTIVITY_STV_FRAME_CREATOR_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">ADJECTIVAL_TASK_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">ADJECTIVE_DEFINED_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">AGREE_ADJECTIVE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">BACKDROP_FOUND_IN_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">BACKDROP_FOUND_IN_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">CLOSURE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">CONJUGATE_VERB_FORM_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">CONJUGATE_VERB_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">CONJUGATIONS_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">CONSULT_GRAMMAR_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">DEFAULT_VALUE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">DEFERRED_PROPOSITION_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">DEFERRED_PROPOSITION_RTP_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">DIRECTION_OBJECT_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">EQUATION_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">EXTERNAL_FILE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">FORMAL_PAR_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">GPR_FOR_EITHER_OR_PROPERTY_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">GPR_FOR_INSTANCE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">GPR_FOR_KIND_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">GPR_FOR_TOKEN_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">GRAMMAR_LINE_COND_TOKEN_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">GRAMMAR_LINE_MISTAKE_TOKEN_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">GRAMMAR_PARSE_NAME_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">GRAMMAR_SLASH_GPR_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">IFID_ARRAY_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">INSTANCE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">KERNEL_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">KIND_DECREMENT_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">KIND_ID_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">KIND_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">KIND_INCREMENT_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">KIND_RANDOM_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">LIST_TOGETHER_ARRAY_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">LIST_TOGETHER_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">LITERAL_LIST_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">LITERAL_TEXT_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">LITERAL_TEXT_SBA_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">LOOP_OVER_SCOPE_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">MEASUREMENT_ADJECTIVE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">NAME_PROPERTY_STORAGE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">NAMED_ACTION_PATTERN_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">NOUN_FILTER_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">PACKAGE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">PARSE_NAME_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">PAST_ACTION_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">PHRASE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">PHRASE_REQUEST_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">PRINTING_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">PROPERTY_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">REGION_FOUND_IN_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">RELATION_BY_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">RELATION_GUARD_F0_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">RELATION_GUARD_F1_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">RELATION_GUARD_MAKE_FALSE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">RELATION_GUARD_MAKE_TRUE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">RELATION_GUARD_TEST_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">RELATION_HANDLER_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">RELATION_INITIALISER_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">RELATION_RECORD_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">RELATION_RELS_BM_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">RESPONSE_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">RESPONSE_VALUE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">RESPONSE_CONSTANT_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">ROUTINE_BLOCK_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">RULE_SHELL_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">RULEBOOK_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">RULEBOOK_NAMED_OPTION_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">RULEBOOK_STV_FRAME_CREATOR_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">SCOPE_FILTER_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">SHORT_NAME_PROPERTY_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">SHORT_NAME_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">TABLE_COLUMN_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">TABLE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">TEST_REQS_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">TEST_TEXTS_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">TEXT_ROUTINE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">TEXT_SUBSTITUTION_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">TO_PHRASE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">TWO_SIDED_DOOR_DOOR_DIR_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">TWO_SIDED_DOOR_DOOR_TO_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">TWO_SIDED_DOOR_FOUND_IN_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">V2V_BITMAP_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">V2V_ROUTE_CACHE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">VARIABLE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">VERB_DECLARATION_ARRAY_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">FIRST_INSTANCE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">COUNT_INSTANCE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">NEXT_INSTANCE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">LABEL_BASE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">LABEL_STORAGE_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">ICOUNT_CONSTANT_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">WEAK_ID_CONSTANT_INAMEF</span>
<span class="definitionkeyword">enum</span> <span class="constant">RESPONDER_INAMEF</span>
2019-03-17 14:40:57 +02:00
<span class="definitionkeyword">enum</span> <span class="constant">FINAL_INAMEF</span>
</pre>
<pre class="display">
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::new</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">fnum</span><span class="plain">) {</span>
<span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="functiontext">InterNames::get_family</span><span class="plain">(</span><span class="identifier">fnum</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">InterNames::new_in_space</span><span class="plain">(</span><span class="functiontext">InterNames::root</span><span class="plain">(), </span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::new_in</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">fnum</span><span class="plain">, </span><span class="reserved">compilation_module</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">C</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="functiontext">InterNames::new</span><span class="plain">(</span><span class="identifier">fnum</span><span class="plain">);</span>
<span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="functiontext">InterNames::get_family</span><span class="plain">(</span><span class="identifier">fnum</span><span class="plain">);</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::new_in_space</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">&gt;namespace</span><span class="plain">, </span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
<span class="functiontext">InterNames::mark</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::mark</span><span class="plain">(</span><span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">, </span><span class="reserved">compilation_module</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">) {</span>
<span class="identifier">iname</span><span class="plain">-</span><span class="element">&gt;declared_in</span><span class="plain"> = </span><span class="identifier">C</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">compilation_module</span><span class="plain"> *</span><span class="functiontext">InterNames::to_module</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">-</span><span class="element">&gt;declared_in</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::new_fixed</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">fnum</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">no</span><span class="plain">) {</span>
<span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="functiontext">InterNames::get_family</span><span class="plain">(</span><span class="identifier">fnum</span><span class="plain">);</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain"> = </span><span class="functiontext">InterNames::new_in_space</span><span class="plain">(</span><span class="functiontext">InterNames::root</span><span class="plain">(), </span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;unique_number</span><span class="plain"> = </span><span class="identifier">no</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::new_overridden</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">fnum</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">identifier</span><span class="plain">) {</span>
<span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="functiontext">InterNames::get_family</span><span class="plain">(</span><span class="identifier">fnum</span><span class="plain">);</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain"> = </span><span class="functiontext">InterNames::new_in_space</span><span class="plain">(</span><span class="functiontext">InterNames::root</span><span class="plain">(), </span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;override</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">identifier</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::new_derived</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">fnum</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain">) {</span>
<span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="functiontext">InterNames::get_family</span><span class="plain">(</span><span class="identifier">fnum</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">F</span><span class="plain">-</span><span class="element">&gt;fusage</span><span class="plain"> != </span><span class="constant">DERIVED_FUSAGE</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"not a derived family"</span><span class="plain">);</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain"> = </span><span class="functiontext">InterNames::new_in_space</span><span class="plain">(</span><span class="functiontext">InterNames::root</span><span class="plain">(), </span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
<span class="functiontext">Packaging::house_with</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">, </span><span class="identifier">from</span><span class="plain">);</span>
<span class="identifier">N</span><span class="plain">-</span><span class="element">&gt;derived_from</span><span class="plain"> = </span><span class="identifier">from</span><span class="plain">;</span>
<span class="reserved">compilation_module</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain"> = </span><span class="functiontext">InterNames::to_module</span><span class="plain">(</span><span class="identifier">from</span><span class="plain">);</span>
<span class="functiontext">InterNames::mark</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::icount_name</span><span class="plain">(</span><span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">) {</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">ICN</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">ICN</span><span class="plain">, </span><span class="string">"ICOUNT_"</span><span class="plain">);</span>
<span class="identifier">Kinds::Textual::write</span><span class="plain">(</span><span class="identifier">ICN</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">);</span>
<span class="identifier">Str::truncate</span><span class="plain">(</span><span class="identifier">ICN</span><span class="plain">, 31);</span>
<span class="identifier">LOOP_THROUGH_TEXT</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">, </span><span class="identifier">ICN</span><span class="plain">) {</span>
<span class="identifier">Str::put</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">, </span><span class="identifier">Characters::toupper</span><span class="plain">(</span><span class="identifier">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">)));</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Characters::isalnum</span><span class="plain">(</span><span class="identifier">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">)) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="identifier">Str::put</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">, </span><span class="character">'_'</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="functiontext">Emit::main_render_unique</span><span class="plain">(</span><span class="functiontext">Emit::main_scope</span><span class="plain">(), </span><span class="identifier">ICN</span><span class="plain">);</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::new_overridden</span><span class="plain">(</span><span class="constant">ICOUNT_CONSTANT_INAMEF</span><span class="plain">, </span><span class="identifier">ICN</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">ICN</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::constructed_kind_name</span><span class="plain">(</span><span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">) {</span>
<span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R2</span><span class="plain"> = </span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="identifier">wording</span><span class="plain"> </span><span class="identifier">W</span><span class="plain">;</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">KT</span><span class="plain">);</span>
<span class="identifier">Kinds::Textual::write</span><span class="plain">(</span><span class="identifier">KT</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">);</span>
<span class="identifier">W</span><span class="plain"> = </span><span class="identifier">Feeds::feed_stream</span><span class="plain">(</span><span class="identifier">KT</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">KT</span><span class="plain">);</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Compare::lt</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">K_object</span><span class="plain">)) {</span>
<span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::new_fixed</span><span class="plain">(</span><span class="constant">KIND_INAMEF</span><span class="plain">, </span><span class="functiontext">Kinds::RunTime::I6_classnumber</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">));</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Wordings::nonempty</span><span class="plain">(</span><span class="identifier">W</span><span class="plain">)) </span><span class="functiontext">InterNames::attach_memo</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">TO</span><span class="plain">);</span>
<span class="identifier">Identifiers::compose_numberless</span><span class="plain">(</span><span class="identifier">TO</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"K"</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
<span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::new_overridden</span><span class="plain">(</span><span class="constant">KIND_INAMEF</span><span class="plain">, </span><span class="identifier">TO</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">TO</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">iname</span><span class="plain">-</span><span class="element">&gt;eventual_owner</span><span class="plain"> = </span><span class="identifier">R2</span><span class="plain">;</span>
2019-04-12 16:47:00 +03:00
<span class="functiontext">Hierarchy::make_available</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">);</span>
2019-03-17 14:40:57 +02:00
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::label_base_name</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">) {</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::new_overridden</span><span class="plain">(</span><span class="constant">LABEL_BASE_INAMEF</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::template_weak_ID_name</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">) {</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain"> = </span><span class="functiontext">InterNames::new_overridden</span><span class="plain">(</span><span class="constant">WEAK_ID_CONSTANT_INAMEF</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">iname</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::translate</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">text</span><span class="plain">) {</span>
<span class="functiontext">Emit::translate</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">);</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function InterNames::new is used in <a href="#SP5">&#167;5</a>, 27/hl (<a href="27-hl.html#SP1">&#167;1</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function InterNames::new_in is used in 27/hl (<a href="27-hl.html#SP1">&#167;1</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function InterNames::mark appears nowhere else.</p>
<p class="endnote">The function InterNames::to_module appears nowhere else.</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function InterNames::new_fixed appears nowhere else.</p>
<p class="endnote">The function InterNames::new_overridden appears nowhere else.</p>
<p class="endnote">The function InterNames::new_derived is used in 27/hl (<a href="27-hl.html#SP1">&#167;1</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function InterNames::icount_name is used in 13/rsfk (<a href="13-rsfk.html#SP25">&#167;25</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function InterNames::constructed_kind_name is used in 13/rsfk (<a href="13-rsfk.html#SP24">&#167;24</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function InterNames::label_base_name is used in 26/jl (<a href="26-jl.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function InterNames::template_weak_ID_name appears nowhere else.</p>
<p class="endnote">The function InterNames::translate is used in 5/un (<a href="5-un.html#SP1">&#167;1</a>), 13/rsfk (<a href="13-rsfk.html#SP25">&#167;25</a>), 27/hl (<a href="27-hl.html#SP1_1">&#167;1.1</a>).</p>
2019-03-17 14:40:57 +02:00
2019-04-13 20:58:43 +03:00
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. </b></p>
2019-03-17 14:40:57 +02:00
<pre class="definitions">
<span class="definitionkeyword">enum</span> <span class="constant">FIRST_INSTANCE_INDERIV</span><span class="definitionkeyword"> from </span><span class="constant">26</span>
<span class="definitionkeyword">enum</span> <span class="constant">COUNT_INSTANCE_INDERIV</span>
<span class="definitionkeyword">enum</span> <span class="constant">NEXT_INSTANCE_INDERIV</span>
<span class="definitionkeyword">enum</span> <span class="constant">FINAL_INDERIV</span>
</pre>
<pre class="display">
2019-04-10 04:13:29 +03:00
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">InterNames::letter_parametrised_name</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">family</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">rname</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">marker</span><span class="plain">, </span><span class="reserved">package_request</span><span class="plain"> *</span><span class="identifier">R</span><span class="plain">) {</span>
2019-03-17 14:40:57 +02:00
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">rname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"can't parametrise null name"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">rname</span><span class="plain">-</span><span class="element">&gt;parametrised_derivatives</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="identifier">rname</span><span class="plain">-</span><span class="element">&gt;parametrised_derivatives</span><span class="plain"> =</span>
<span class="identifier">Memory::I7_calloc</span><span class="plain">(</span><span class="constant">FINAL_INDERIV</span><span class="plain">, </span><span class="reserved">sizeof</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *), </span><span class="identifier">INTER_SYMBOLS_MREASON</span><span class="plain">);</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain">&lt;</span><span class="constant">FINAL_INDERIV</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) </span><span class="identifier">rname</span><span class="plain">-</span><span class="element">&gt;parametrised_derivatives</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">marker</span><span class="plain"> &lt; 0) || (</span><span class="identifier">marker</span><span class="plain"> &gt;= </span><span class="constant">FINAL_INDERIV</span><span class="plain">)) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"respomse parameter out of range"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">rname</span><span class="plain">-</span><span class="element">&gt;parametrised_derivatives</span><span class="plain">[</span><span class="identifier">marker</span><span class="plain">] == </span><span class="identifier">NULL</span><span class="plain">) {</span>
2019-04-10 04:13:29 +03:00
<span class="identifier">rname</span><span class="plain">-</span><span class="element">&gt;parametrised_derivatives</span><span class="plain">[</span><span class="identifier">marker</span><span class="plain">] = </span><span class="functiontext">InterNames::new</span><span class="plain">(</span><span class="identifier">family</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">R</span><span class="plain">) </span><span class="functiontext">Packaging::house</span><span class="plain">(</span><span class="identifier">rname</span><span class="plain">-</span><span class="element">&gt;parametrised_derivatives</span><span class="plain">[</span><span class="identifier">marker</span><span class="plain">], </span><span class="identifier">R</span><span class="plain">);</span>
2019-03-17 14:40:57 +02:00
<span class="identifier">rname</span><span class="plain">-</span><span class="element">&gt;parametrised_derivatives</span><span class="plain">[</span><span class="identifier">marker</span><span class="plain">]-</span><span class="element">&gt;derived_from</span><span class="plain"> = </span><span class="identifier">rname</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">family</span><span class="plain"> == </span><span class="constant">NEXT_INSTANCE_INAMEF</span><span class="plain">) {</span>
<span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">rname</span><span class="plain">-</span><span class="element">&gt;parametrised_derivatives</span><span class="plain">[</span><span class="identifier">marker</span><span class="plain">]);</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">rname</span><span class="plain">-</span><span class="element">&gt;parametrised_derivatives</span><span class="plain">[</span><span class="identifier">marker</span><span class="plain">];</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::override_action_base_iname</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">ab_iname</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">to</span><span class="plain">) {</span>
<span class="identifier">ab_iname</span><span class="plain">-</span><span class="element">&gt;override</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">to</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">InterNames::override_count_iname</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">count_iname</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">N</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> &lt;= 10) {</span>
<span class="identifier">count_iname</span><span class="plain">-</span><span class="element">&gt;override</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">count_iname</span><span class="plain">-</span><span class="element">&gt;override</span><span class="plain">, </span><span class="string">"IK%d_Count"</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function InterNames::letter_parametrised_name is used in 27/hl (<a href="27-hl.html#SP1">&#167;1</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function InterNames::override_action_base_iname appears nowhere else.</p>
<p class="endnote">The function InterNames::override_count_iname is used in 16/ic (<a href="16-ic.html#SP12_2">&#167;12.2</a>).</p>
2019-04-13 20:58:43 +03:00
<p class="inwebparagraph"><a id="SP6"></a><b>&#167;6. </b></p>
2019-03-17 14:40:57 +02:00
<pre class="display">
<span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="identifier">inter_name_families</span><span class="plain">[</span><span class="constant">FINAL_INAMEF</span><span class="plain">+1];</span>
<span class="reserved">inter_name_family</span><span class="plain"> *</span><span class="functiontext">InterNames::get_family</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">fnum</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">fnum</span><span class="plain"> &lt; 1) || (</span><span class="identifier">fnum</span><span class="plain"> &gt;= </span><span class="constant">FINAL_INAMEF</span><span class="plain">)) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"fnum out of range"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">inter_name_families</span><span class="plain">[</span><span class="identifier">fnum</span><span class="plain">]) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">inter_name_families</span><span class="plain">[</span><span class="identifier">fnum</span><span class="plain">];</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
2019-04-13 20:58:43 +03:00
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">D</span><span class="plain"> = -1, </span><span class="identifier">mark_exports</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
2019-03-17 14:40:57 +02:00
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">Pre</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">, *</span><span class="identifier">Suf</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">fnum</span><span class="plain">) {</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">ACTION_BASE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"A"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">ACTION_BITMAP_PROPERTY_VALUE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"ActionBitmapPV"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">ACTION_INAMEF</span><span class="plain">: </span><span class="identifier">D</span><span class="plain"> = </span><span class="constant">ACTION_BASE_INAMEF</span><span class="plain">; </span><span class="identifier">Pre</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"##"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">ACTION_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">D</span><span class="plain"> = </span><span class="constant">ACTION_BASE_INAMEF</span><span class="plain">; </span><span class="identifier">Suf</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"Sub"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">ACTION_STV_FRAME_CREATOR_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"ANSTVC"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">ACTIVITY_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"V"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">ACTIVITY_STV_FRAME_CREATOR_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"AVSTVC"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">ADJECTIVE_DEFINED_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"ADJDEFN"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
2019-04-13 20:58:43 +03:00
<span class="reserved">case</span><span class="plain"> </span><span class="constant">ADJECTIVAL_TASK_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">D</span><span class="plain"> = </span><span class="constant">AGREE_ADJECTIVE_INAMEF</span><span class="plain">; </span><span class="identifier">Suf</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"Task"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">AGREE_ADJECTIVE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"Adj"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
2019-03-17 14:40:57 +02:00
<span class="reserved">case</span><span class="plain"> </span><span class="constant">BACKDROP_FOUND_IN_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"BD_found_in_storage"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">BACKDROP_FOUND_IN_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"FI_for_I"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CLOSURE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"Closure"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CONJUGATE_VERB_FORM_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"ConjugateVerbForm"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CONJUGATE_VERB_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"ConjugateVerb"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CONJUGATIONS_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"conjugations"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
2019-04-13 20:58:43 +03:00
<span class="reserved">case</span><span class="plain"> </span><span class="constant">CONSULT_GRAMMAR_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"Consult_Grammar"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
2019-03-17 14:40:57 +02:00
<span class="reserved">case</span><span class="plain"> </span><span class="constant">COUNT_INSTANCE_INAMEF</span><span class="plain">: </span><span class="identifier">D</span><span class="plain"> = </span><span class="constant">KIND_INAMEF</span><span class="plain">; </span><span class="identifier">Suf</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"_Count"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">DEFAULT_VALUE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"DV"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
2019-04-13 20:58:43 +03:00
<span class="reserved">case</span><span class="plain"> </span><span class="constant">DEFERRED_PROPOSITION_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"Prop"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
2019-03-17 14:40:57 +02:00
<span class="reserved">case</span><span class="plain"> </span><span class="constant">DEFERRED_PROPOSITION_RTP_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"PROP_SRC"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">DIRECTION_OBJECT_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"DirectionObject"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">EQUATION_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"Q"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">EXTERNAL_FILE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"X"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">FIRST_INSTANCE_INAMEF</span><span class="plain">: </span><span class="identifier">D</span><span class="plain"> = </span><span class="constant">KIND_INAMEF</span><span class="plain">; </span><span class="identifier">Suf</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"_First"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">FORMAL_PAR_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"formal_par"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">GPR_FOR_EITHER_OR_PROPERTY_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"PRN_PN"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">GPR_FOR_INSTANCE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"Instance_GPR"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">GPR_FOR_KIND_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"Kind_GPR"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">GPR_FOR_TOKEN_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"GPR_Line"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">GRAMMAR_LINE_COND_TOKEN_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"Cond_Token"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">GRAMMAR_LINE_MISTAKE_TOKEN_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"Mistake_Token"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">GRAMMAR_PARSE_NAME_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"Parse_Name_GV"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">GRAMMAR_SLASH_GPR_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"SlashGPR"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">ICOUNT_CONSTANT_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"always_overridden"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">IFID_ARRAY_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"IFID_ARRAY"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">INSTANCE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"I"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
2019-04-13 20:58:43 +03:00
<span class="reserved">case</span><span class="plain"> </span><span class="constant">KERNEL_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"KERNEL"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
2019-03-17 14:40:57 +02:00
<span class="reserved">case</span><span class="plain"> </span><span class="constant">KIND_DECREMENT_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">D</span><span class="plain"> = </span><span class="constant">PRINTING_ROUTINE_INAMEF</span><span class="plain">; </span><span class="identifier">Pre</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"B_"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">KIND_ID_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"KD"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">KIND_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"K"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">KIND_INCREMENT_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">D</span><span class="plain"> = </span><span class="constant">PRINTING_ROUTINE_INAMEF</span><span class="plain">; </span><span class="identifier">Pre</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"A_"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">KIND_RANDOM_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">D</span><span class="plain"> = </span><span class="constant">PRINTING_ROUTINE_INAMEF</span><span class="plain">; </span><span class="identifier">Pre</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"R_"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">LABEL_BASE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"always_overridden"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">LABEL_STORAGE_INAMEF</span><span class="plain">: </span><span class="identifier">D</span><span class="plain"> = </span><span class="constant">LABEL_BASE_INAMEF</span><span class="plain">; </span><span class="identifier">Pre</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"I7_ST_"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">LIST_TOGETHER_ARRAY_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"LTR"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">LIST_TOGETHER_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"LTR_R"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
2019-04-13 20:58:43 +03:00
<span class="reserved">case</span><span class="plain"> </span><span class="constant">LITERAL_LIST_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"LIST_CONST"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">LITERAL_TEXT_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"TX_PS"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">LITERAL_TEXT_SBA_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"TX_L"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
2019-03-17 14:40:57 +02:00
<span class="reserved">case</span><span class="plain"> </span><span class="constant">LOOP_OVER_SCOPE_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"LOS"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">MEASUREMENT_ADJECTIVE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"MADJ_Test"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">NAME_PROPERTY_STORAGE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"name_storage"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">NAMED_ACTION_PATTERN_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"NAP"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">NEXT_INSTANCE_INAMEF</span><span class="plain">: </span><span class="identifier">D</span><span class="plain"> = </span><span class="constant">KIND_INAMEF</span><span class="plain">; </span><span class="identifier">Suf</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"_Next"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">NOUN_FILTER_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"Noun_Filter"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">PACKAGE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"package"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">PARSE_NAME_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"PN_for_S"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">PAST_ACTION_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"PAPR"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
2019-04-13 20:58:43 +03:00
<span class="reserved">case</span><span class="plain"> </span><span class="constant">PHRASE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"R"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">PHRASE_REQUEST_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"REQ"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">PRINTING_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"E"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
2019-03-17 14:40:57 +02:00
<span class="reserved">case</span><span class="plain"> </span><span class="constant">PROPERTY_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"P"</span><span class="plain">; </span><span class="identifier">mark_exports</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">REGION_FOUND_IN_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"RFI_for_I"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RELATION_BY_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"Relation"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RELATION_GUARD_F0_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"RGuard_f0"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RELATION_GUARD_F1_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"RGuard_f1"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RELATION_GUARD_MAKE_FALSE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"RGuard_MF"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RELATION_GUARD_MAKE_TRUE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"RGuard_MT"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RELATION_GUARD_TEST_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"RGuard_T"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RELATION_HANDLER_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"Rel_Handler"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RELATION_INITIALISER_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"InitialiseRelation"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RELATION_RECORD_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"Rel_Record"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RELATION_RELS_BM_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"Relation_RELS_BM"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
2019-04-13 20:58:43 +03:00
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RESPONSE_CONSTANT_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"RESP"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RESPONSE_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">D</span><span class="plain"> = </span><span class="constant">RESPONSE_VALUE_INAMEF</span><span class="plain">; </span><span class="identifier">Suf</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"_R"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RESPONSE_VALUE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"TX_R"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">ROUTINE_BLOCK_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"RBLK"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
2019-03-17 14:40:57 +02:00
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RULE_SHELL_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"I6_Rule_Shell"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RULEBOOK_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"B"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RULEBOOK_NAMED_OPTION_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"RBNO"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RULEBOOK_STV_FRAME_CREATOR_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"RBSTVC"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">SCOPE_FILTER_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"Scope_Filter"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">SHORT_NAME_PROPERTY_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"SN_R_A"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">SHORT_NAME_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"SN_R"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">TABLE_COLUMN_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"TC"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">TABLE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"T"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">TEST_REQS_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"TestReq"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">TEST_TEXTS_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"TestText"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
2019-04-13 20:58:43 +03:00
<span class="reserved">case</span><span class="plain"> </span><span class="constant">TEXT_ROUTINE_INAMEF</span><span class="plain">: </span><span class="identifier">D</span><span class="plain"> = </span><span class="constant">TEXT_SUBSTITUTION_INAMEF</span><span class="plain">; </span><span class="identifier">Pre</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"R_"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">TEXT_SUBSTITUTION_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"TX_S"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
2019-03-17 14:40:57 +02:00
<span class="reserved">case</span><span class="plain"> </span><span class="constant">TO_PHRASE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"PHR"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">TWO_SIDED_DOOR_DOOR_DIR_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"TSD_door_dir_value"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">TWO_SIDED_DOOR_DOOR_TO_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"TSD_door_to_value"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">TWO_SIDED_DOOR_FOUND_IN_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"TSD_found_in_value"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">V2V_BITMAP_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"V2V_Bitmap"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">V2V_ROUTE_CACHE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"V2V_Route_Cache"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">VARIABLE_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"V"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">VERB_DECLARATION_ARRAY_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"GV_Grammar"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">WEAK_ID_CONSTANT_INAMEF</span><span class="plain">: </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"always_overridden"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> </span><span class="constant">RESPONDER_INAMEF</span><span class="plain">: </span><span class="identifier">D</span><span class="plain"> = </span><span class="constant">RULE_SHELL_ROUTINE_INAMEF</span><span class="plain">; </span><span class="identifier">Suf</span><span class="plain"> = </span><span class="identifier">I</span><span class="string">"M"</span><span class="plain">; </span><span class="reserved">break</span><span class="plain">;</span>
2019-03-17 14:40:57 +02:00
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">S</span><span class="plain">) || (</span><span class="identifier">D</span><span class="plain"> &gt;= 0)) {</span>
2019-03-17 14:40:57 +02:00
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">fusage</span><span class="plain"> = </span><span class="constant">MANY_PER_NAMESPACE_FUSAGE</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">D</span><span class="plain"> &gt;= 0) </span><span class="identifier">fusage</span><span class="plain"> = </span><span class="constant">DERIVED_FUSAGE</span><span class="plain">;</span>
<span class="identifier">inter_name_families</span><span class="plain">[</span><span class="identifier">fnum</span><span class="plain">] = </span><span class="functiontext">InterNames::new_family</span><span class="plain">(</span><span class="identifier">fusage</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">D</span><span class="plain"> &gt;= 0) {</span>
<span class="identifier">inter_name_families</span><span class="plain">[</span><span class="identifier">fnum</span><span class="plain">]-</span><span class="element">&gt;derivative_of</span><span class="plain"> = </span><span class="identifier">inter_name_families</span><span class="plain">[</span><span class="identifier">D</span><span class="plain">];</span>
<span class="identifier">inter_name_families</span><span class="plain">[</span><span class="identifier">fnum</span><span class="plain">]-</span><span class="element">&gt;derived_prefix</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">Pre</span><span class="plain">);</span>
<span class="identifier">inter_name_families</span><span class="plain">[</span><span class="identifier">fnum</span><span class="plain">]-</span><span class="element">&gt;derived_suffix</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">Suf</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">inter_name_families</span><span class="plain">[</span><span class="identifier">fnum</span><span class="plain">]-</span><span class="element">&gt;mark_exports</span><span class="plain"> = </span><span class="identifier">mark_exports</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"nameless namespace family"</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">inter_name_families</span><span class="plain">[</span><span class="identifier">fnum</span><span class="plain">];</span>
<span class="plain">}</span>
2019-04-13 20:58:43 +03:00
2019-03-17 14:40:57 +02:00
</pre>
<p class="inwebparagraph"></p>
2019-04-13 20:58:43 +03:00
<p class="endnote">The function InterNames::get_family is used in <a href="#SP4">&#167;4</a>.</p>
2019-03-17 14:40:57 +02:00
<hr class="tocbar">
<ul class="toc"><li><a href="27-cm.html">Back to 'Compilation Modules'</a></li><li><a href="27-pc.html">Continue with 'Packaging'</a></li></ul><hr class="tocbar">
<!--End of weave-->
2019-03-17 14:40:57 +02:00
</body>
</html>