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-ei.html

1773 lines
417 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/is</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/ei' 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>Emitting Inter</b></li></ul><p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Definitions. </b></p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b></p>
<pre class="display">
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">return_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">jump_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">move_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">give_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">take_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">break_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">continue_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">quit_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">modulo_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">random_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">not_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">and_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">or_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">bitwiseand_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">bitwiseor_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">bitwisenot_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">eq_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">ne_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">gt_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">ge_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">lt_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">le_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">in_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">has_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">hasnt_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">ofclass_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">sequential_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">ternarysequential_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">plus_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">minus_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">unaryminus_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">times_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">divide_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">stylebold_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">font_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">styleroman_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">styleunderline_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">print_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">printchar_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">printname_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">printnumber_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">printnlnumber_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">printcindef_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">printindef_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">printcdef_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">printdef_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">printaddress_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">printstring_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">box_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">push_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">pull_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">preincrement_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">postincrement_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">predecrement_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">postdecrement_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">lookup_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">lookupbyte_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">lookupref_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">store_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">if_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">ifdebug_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">ifelse_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">while_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">for_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">objectloop_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">objectloopx_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">switch_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">case_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">default_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">setbit_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">clearbit_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">indirect0v_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">indirect1v_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">indirect2v_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">indirect3v_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">indirect4v_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">indirect5v_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">indirect0_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">indirect1_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">indirect2_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">indirect3_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">indirect4_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">indirect5_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">propertyaddress_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">propertylength_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">provides_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">propertyvalue_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">notin_interp</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">unchecked_interk</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">unchecked_function_interk</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">int_interk</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">string_interk</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">nothing_iname</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b></p>
<pre class="display">
<span class="identifier">inter_reading_state</span><span class="plain"> </span><span class="identifier">IRS</span><span class="plain">;</span>
<span class="identifier">inter_reading_state</span><span class="plain"> *</span><span class="identifier">I7Inter</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_reading_state</span><span class="plain"> *</span><span class="identifier">default_bookmark</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_reading_state</span><span class="plain"> *</span><span class="functiontext">Emit::IRS</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">default_bookmark</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">inter_repository</span><span class="plain"> *</span><span class="functiontext">Emit::repository</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">default_bookmark</span><span class="plain">-&gt;</span><span class="identifier">read_into</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">inter_reading_state</span><span class="plain"> *</span><span class="functiontext">Emit::move_write_position</span><span class="plain">(</span><span class="identifier">inter_reading_state</span><span class="plain"> *</span><span class="identifier">to</span><span class="plain">) {</span>
<span class="identifier">inter_reading_state</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain"> = </span><span class="identifier">default_bookmark</span><span class="plain">;</span>
<span class="identifier">default_bookmark</span><span class="plain"> = </span><span class="identifier">to</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">from</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">inter_reading_state</span><span class="plain"> *</span><span class="identifier">IRS</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">IRS</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> 0;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">IRS</span><span class="plain">-&gt;</span><span class="identifier">current_package</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> 0;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">IRS</span><span class="plain">-&gt;</span><span class="identifier">current_package</span><span class="plain">-&gt;</span><span class="identifier">codelike_package</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">IRS</span><span class="plain">-&gt;</span><span class="identifier">current_package</span><span class="plain">-&gt;</span><span class="identifier">parent_package</span><span class="plain">-&gt;</span><span class="identifier">I7_baseline</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">IRS</span><span class="plain">-&gt;</span><span class="identifier">current_package</span><span class="plain">-&gt;</span><span class="identifier">I7_baseline</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">inter_reading_state</span><span class="plain"> </span><span class="functiontext">Emit::bookmark</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="identifier">inter_reading_state</span><span class="plain"> </span><span class="identifier">b</span><span class="plain"> = </span><span class="identifier">Inter::Bookmarks::snapshot</span><span class="plain">(</span><span class="functiontext">Emit::IRS</span><span class="plain">());</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">b</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">inter_reading_state</span><span class="plain"> </span><span class="functiontext">Emit::bookmark_bubble</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Nop::new</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="identifier">inter_reading_state</span><span class="plain"> </span><span class="identifier">b</span><span class="plain"> = </span><span class="functiontext">Emit::bookmark</span><span class="plain">();</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Nop::new</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</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">b</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">inter_reading_state</span><span class="plain"> </span><span class="identifier">pragmas_bookmark</span><span class="plain">;</span>
2019-04-13 20:58:43 +03:00
<span class="identifier">inter_reading_state</span><span class="plain"> </span><span class="identifier">package_types_bookmark</span><span class="plain">;</span>
2019-03-17 14:40:57 +02:00
<span class="identifier">inter_reading_state</span><span class="plain"> </span><span class="identifier">holdings_bookmark</span><span class="plain">;</span>
<span class="identifier">dictionary</span><span class="plain"> *</span><span class="identifier">extern_symbols</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">glob_count</span><span class="plain"> = 0;</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::begin</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="identifier">inter_repository</span><span class="plain"> *</span><span class="identifier">repo</span><span class="plain"> = </span><span class="identifier">Inter::create</span><span class="plain">(1, 4096);</span>
<span class="identifier">IRS</span><span class="plain"> = </span><span class="identifier">Inter::Bookmarks::new_IRS</span><span class="plain">(</span><span class="identifier">repo</span><span class="plain">);</span>
<span class="identifier">I7Inter</span><span class="plain"> = &amp;</span><span class="identifier">IRS</span><span class="plain">;</span>
<span class="identifier">default_bookmark</span><span class="plain"> = </span><span class="identifier">I7Inter</span><span class="plain">;</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Version::new</span><span class="plain">(</span><span class="functiontext">Emit::IRS</span><span class="plain">(), 1, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="functiontext">Emit::IRS</span><span class="plain">()), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="functiontext">Emit::comment</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Package types:"</span><span class="plain">);</span>
2019-04-13 20:58:43 +03:00
<span class="identifier">package_types_bookmark</span><span class="plain"> = </span><span class="functiontext">Emit::bookmark_bubble</span><span class="plain">();</span>
2019-03-17 14:40:57 +02:00
<span class="functiontext">Packaging::emit_types</span><span class="plain">();</span>
<span class="functiontext">Emit::comment</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Pragmas:"</span><span class="plain">);</span>
<span class="identifier">pragmas_bookmark</span><span class="plain"> = </span><span class="functiontext">Emit::bookmark_bubble</span><span class="plain">();</span>
<span class="functiontext">Emit::comment</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"Primitives:"</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!font"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">font_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!stylebold"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"void -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">stylebold_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!styleunderline"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"void -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">styleunderline_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!styleroman"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"void -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">styleroman_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!print"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">print_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!printchar"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">printchar_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!printname"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">printname_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!printnumber"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">printnumber_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!printaddress"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">printaddress_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!printstring"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">printstring_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!printnlnumber"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">printnlnumber_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!printdef"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">printdef_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!printcdef"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">printcdef_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!printindef"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">printindef_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!printcindef"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">printcindef_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!box"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">box_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!push"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">push_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!pull"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"ref -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">pull_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!postincrement"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"ref -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">postincrement_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!preincrement"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"ref -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">preincrement_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!postdecrement"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"ref -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">postdecrement_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!predecrement"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"ref -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">predecrement_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!return"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">return_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!quit"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"void -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">quit_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!break"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"void -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">break_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!continue"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"void -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">continue_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!jump"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"lab -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">jump_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!move"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">move_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!give"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">give_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!take"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">take_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!store"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"ref val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">store_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!setbit"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"ref val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">setbit_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!clearbit"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"ref val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">clearbit_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!modulo"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">modulo_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!random"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">random_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!lookup"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">lookup_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!lookupbyte"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">lookupbyte_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!lookupref"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; ref"</span><span class="plain">, &amp;</span><span class="identifier">lookupref_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!not"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">not_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!and"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">and_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!or"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">or_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!bitwiseand"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">bitwiseand_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!bitwiseor"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">bitwiseor_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!bitwisenot"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">bitwisenot_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!eq"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">eq_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!ne"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">ne_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!gt"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">gt_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!ge"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">ge_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!lt"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">lt_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!le"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">le_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!has"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">has_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!hasnt"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">hasnt_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!in"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">in_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!ofclass"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">ofclass_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!sequential"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">sequential_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!ternarysequential"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">ternarysequential_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!plus"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">plus_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!minus"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">minus_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!unaryminus"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">unaryminus_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!times"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">times_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!divide"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">divide_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!if"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val code -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">if_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!ifdebug"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"code -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">ifdebug_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!ifelse"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val code code -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">ifelse_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!while"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val code -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">while_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!for"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val val code -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">for_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!objectloop"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"ref val val code -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">objectloop_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!objectloopx"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"ref val code -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">objectloopx_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!switch"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val code -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">switch_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!case"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val code -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">case_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!default"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"code -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">default_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!indirect0v"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">indirect0v_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!indirect1v"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">indirect1v_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!indirect2v"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">indirect2v_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!indirect3v"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val val val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">indirect3v_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!indirect4v"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val val val val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">indirect4v_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!indirect5v"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val val val val val -&gt; void"</span><span class="plain">, &amp;</span><span class="identifier">indirect5v_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!indirect0"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">indirect0_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!indirect1"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">indirect1_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!indirect2"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">indirect2_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!indirect3"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">indirect3_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!indirect4"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val val val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">indirect4_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!indirect5"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val val val val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">indirect5_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!propertyaddress"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">propertyaddress_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!propertylength"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">propertylength_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!provides"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">provides_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!propertyvalue"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">propertyvalue_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"!notin"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"val val -&gt; val"</span><span class="plain">, &amp;</span><span class="identifier">notin_interp</span><span class="plain">);</span>
2019-04-13 20:58:43 +03:00
<span class="functiontext">Packaging::enter</span><span class="plain">(</span><span class="functiontext">Hierarchy::main</span><span class="plain">()); </span> <span class="comment">We never exit this</span>
2019-03-17 14:40:57 +02:00
2019-04-13 20:58:43 +03:00
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">KU</span><span class="plain"> = </span><span class="functiontext">Hierarchy::find</span><span class="plain">(</span><span class="constant">K_UNCHECKED_HL</span><span class="plain">);</span>
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Packaging::enter_home_of</span><span class="plain">(</span><span class="identifier">KU</span><span class="plain">);</span>
<span class="identifier">unchecked_interk</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">KU</span><span class="plain">);</span>
2019-03-17 14:40:57 +02:00
<span class="functiontext">Emit::kind_inner</span><span class="plain">(</span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">unchecked_interk</span><span class="plain">), </span><span class="identifier">UNCHECKED_IDT</span><span class="plain">, 0, </span><span class="identifier">BASE_ICON</span><span class="plain">, 0, </span><span class="identifier">NULL</span><span class="plain">);</span>
2019-04-13 20:58:43 +03:00
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">KUF</span><span class="plain"> = </span><span class="functiontext">Hierarchy::find</span><span class="plain">(</span><span class="constant">K_UNCHECKED_FUNCTION_HL</span><span class="plain">);</span>
<span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Packaging::enter_home_of</span><span class="plain">(</span><span class="identifier">KUF</span><span class="plain">);</span>
<span class="identifier">unchecked_function_interk</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">KUF</span><span class="plain">);</span>
2019-03-17 14:40:57 +02:00
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">operands</span><span class="plain">[2];</span>
<span class="identifier">operands</span><span class="plain">[0] = </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">unchecked_interk</span><span class="plain">);</span>
<span class="identifier">operands</span><span class="plain">[1] = </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">unchecked_interk</span><span class="plain">);</span>
<span class="functiontext">Emit::kind_inner</span><span class="plain">(</span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">unchecked_function_interk</span><span class="plain">), </span><span class="identifier">ROUTINE_IDT</span><span class="plain">, 0, </span><span class="identifier">FUNCTION_ICON</span><span class="plain">, 2, </span><span class="identifier">operands</span><span class="plain">);</span>
2019-04-13 20:58:43 +03:00
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">KTI</span><span class="plain"> = </span><span class="functiontext">Hierarchy::find</span><span class="plain">(</span><span class="constant">K_TYPELESS_INT_HL</span><span class="plain">);</span>
<span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Packaging::enter_home_of</span><span class="plain">(</span><span class="identifier">KTI</span><span class="plain">);</span>
<span class="identifier">int_interk</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">KTI</span><span class="plain">);</span>
2019-03-17 14:40:57 +02:00
<span class="functiontext">Emit::kind_inner</span><span class="plain">(</span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">int_interk</span><span class="plain">), </span><span class="identifier">INT32_IDT</span><span class="plain">, 0, </span><span class="identifier">BASE_ICON</span><span class="plain">, 0, </span><span class="identifier">NULL</span><span class="plain">);</span>
2019-04-13 20:58:43 +03:00
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">KTS</span><span class="plain"> = </span><span class="functiontext">Hierarchy::find</span><span class="plain">(</span><span class="constant">K_TYPELESS_STRING_HL</span><span class="plain">);</span>
<span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Packaging::enter_home_of</span><span class="plain">(</span><span class="identifier">KTS</span><span class="plain">);</span>
<span class="identifier">string_interk</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">KTS</span><span class="plain">);</span>
2019-03-17 14:40:57 +02:00
<span class="functiontext">Emit::kind_inner</span><span class="plain">(</span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">string_interk</span><span class="plain">), </span><span class="identifier">TEXT_IDT</span><span class="plain">, 0, </span><span class="identifier">BASE_ICON</span><span class="plain">, 0, </span><span class="identifier">NULL</span><span class="plain">);</span>
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
2019-04-13 20:58:43 +03:00
<span class="functiontext">VirtualMachines::emit_fundamental_constants</span><span class="plain">();</span>
2019-03-17 14:40:57 +02:00
<span class="functiontext">NewVerbs::ConjugateVerbDefinitions</span><span class="plain">();</span>
<span class="identifier">holdings_bookmark</span><span class="plain"> = </span><span class="functiontext">Emit::bookmark_bubble</span><span class="plain">();</span>
2019-04-13 20:58:43 +03:00
<span class="functiontext">Packaging::incarnate</span><span class="plain">(</span><span class="functiontext">Hierarchy::resources</span><span class="plain">());</span>
<span class="functiontext">Packaging::incarnate</span><span class="plain">(</span><span class="functiontext">Hierarchy::template</span><span class="plain">());</span>
2019-03-17 14:40:57 +02:00
2019-04-13 20:58:43 +03:00
<span class="functiontext">Hierarchy::main</span><span class="plain">()-</span><span class="element">&gt;write_position</span><span class="plain"> = </span><span class="functiontext">Emit::bookmark_bubble</span><span class="plain">();</span>
2019-03-17 14:40:57 +02:00
<span class="plain">}</span>
2019-04-17 20:19:03 +03:00
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Emit::packagetype</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">int</span><span class="plain"> </span><span class="identifier">enclosing</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">pt</span><span class="plain"> = </span><span class="functiontext">Emit::new_symbol</span><span class="plain">(</span><span class="identifier">Inter::get_global_symbols</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">()), </span><span class="identifier">name</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::PackageType::new_packagetype</span><span class="plain">(&amp;</span><span class="identifier">package_types_bookmark</span><span class="plain">, </span><span class="identifier">pt</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(&amp;</span><span class="identifier">package_types_bookmark</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">enclosing</span><span class="plain">) </span><span class="functiontext">Emit::annotate_symbol_i</span><span class="plain">(</span><span class="identifier">pt</span><span class="plain">, </span><span class="identifier">ENCLOSING_IANN</span><span class="plain">, 1);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">pt</span><span class="plain">;</span>
<span class="plain">}</span>
2019-03-17 14:40:57 +02:00
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Emit::is_indirect_interp</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="reserved">if</span><span class="plain"> (</span><span class="identifier">s</span><span class="plain"> == </span><span class="identifier">indirect0_interp</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">if</span><span class="plain"> (</span><span class="identifier">s</span><span class="plain"> == </span><span class="identifier">indirect1_interp</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">if</span><span class="plain"> (</span><span class="identifier">s</span><span class="plain"> == </span><span class="identifier">indirect2_interp</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">if</span><span class="plain"> (</span><span class="identifier">s</span><span class="plain"> == </span><span class="identifier">indirect3_interp</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">if</span><span class="plain"> (</span><span class="identifier">s</span><span class="plain"> == </span><span class="identifier">indirect4_interp</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">if</span><span class="plain"> (</span><span class="identifier">s</span><span class="plain"> == </span><span class="identifier">indirect5_interp</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>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Emit::indirect_interp</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">arity</span><span class="plain">) {</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">arity</span><span class="plain">) {</span>
<span class="reserved">case</span><span class="plain"> 0: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">indirect0_interp</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> 1: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">indirect1_interp</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> 2: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">indirect2_interp</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> 3: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">indirect3_interp</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> 4: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">indirect4_interp</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> 5: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">indirect5_interp</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">"indirect function call with too many arguments"</span><span class="plain">);</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="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Emit::is_indirectv_interp</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="reserved">if</span><span class="plain"> (</span><span class="identifier">s</span><span class="plain"> == </span><span class="identifier">indirect0v_interp</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">if</span><span class="plain"> (</span><span class="identifier">s</span><span class="plain"> == </span><span class="identifier">indirect1v_interp</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">if</span><span class="plain"> (</span><span class="identifier">s</span><span class="plain"> == </span><span class="identifier">indirect2v_interp</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">if</span><span class="plain"> (</span><span class="identifier">s</span><span class="plain"> == </span><span class="identifier">indirect3v_interp</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">if</span><span class="plain"> (</span><span class="identifier">s</span><span class="plain"> == </span><span class="identifier">indirect4v_interp</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">if</span><span class="plain"> (</span><span class="identifier">s</span><span class="plain"> == </span><span class="identifier">indirect5v_interp</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>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Emit::indirectv_interp</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">arity</span><span class="plain">) {</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">arity</span><span class="plain">) {</span>
<span class="reserved">case</span><span class="plain"> 0: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">indirect0v_interp</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> 1: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">indirect1v_interp</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> 2: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">indirect2v_interp</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> 3: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">indirect3v_interp</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> 4: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">indirect4v_interp</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> 5: </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">indirect5v_interp</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">"indirectv function call with too many arguments"</span><span class="plain">);</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="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::comment</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="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">), </span><span class="identifier">text</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Comment::new</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Emit::kind_to_symbol</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">if</span><span class="plain"> (</span><span class="identifier">K</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">unchecked_interk</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain"> == </span><span class="identifier">K_value</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">unchecked_interk</span><span class="plain">; </span> <span class="comment">for error recovery</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="functiontext">Kinds::RunTime::iname</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Emit::extern</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="identifier">kind</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">extern_symbols</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">extern_symbols</span><span class="plain"> = </span><span class="identifier">Dictionaries::new</span><span class="plain">(1024, </span><span class="identifier">FALSE</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Dictionaries::find</span><span class="plain">(</span><span class="identifier">extern_symbols</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">Dictionaries::read_value</span><span class="plain">(</span><span class="identifier">extern_symbols</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">symb</span><span class="plain"> = </span><span class="functiontext">Emit::new_symbol</span><span class="plain">(</span><span class="functiontext">Emit::main_scope</span><span class="plain">(), </span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::extern</span><span class="plain">(</span><span class="identifier">symb</span><span class="plain">);</span>
<span class="identifier">Dictionaries::create</span><span class="plain">(</span><span class="identifier">extern_symbols</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">Dictionaries::write_value</span><span class="plain">(</span><span class="identifier">extern_symbols</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">symb</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">symb</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Emit::response</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">rule</span><span class="plain"> *</span><span class="identifier">R</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">inter_name</span><span class="plain"> *</span><span class="identifier">val_iname</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">symb</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">inter_symbol</span><span class="plain"> *</span><span class="identifier">rsymb</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="functiontext">Rules::iname</span><span class="plain">(</span><span class="identifier">R</span><span class="plain">));</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">vsymb</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">val_iname</span><span class="plain">);</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">val1</span><span class="plain"> = 0, </span><span class="identifier">val2</span><span class="plain"> = 0;</span>
<span class="identifier">Inter::Symbols::to_data</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">-&gt;</span><span class="identifier">read_into</span><span class="plain">, </span><span class="identifier">default_bookmark</span><span class="plain">-&gt;</span><span class="identifier">current_package</span><span class="plain">, </span><span class="identifier">vsymb</span><span class="plain">, &amp;</span><span class="identifier">val1</span><span class="plain">, &amp;</span><span class="identifier">val2</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Response::new</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">symb</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">rsymb</span><span class="plain">), (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="identifier">marker</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="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</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">symb</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
2019-04-18 03:53:27 +03:00
<p class="endnote">The function Emit::IRS is used in <a href="#SP4">&#167;4</a>, <a href="#SP5">&#167;5</a>, 13/rsfk (<a href="13-rsfk.html#SP5">&#167;5</a>), 17/tl (<a href="17-tl.html#SP13">&#167;13</a>), 26/iti (<a href="26-iti.html#SP9">&#167;9</a>), 27/pc (<a href="27-pc.html#SP2">&#167;2</a>, <a href="27-pc.html#SP6">&#167;6</a>), 27/in (<a href="27-in.html#SP8">&#167;8</a>).</p>
2019-03-17 14:40:57 +02:00
2019-04-18 03:53:27 +03:00
<p class="endnote">The function Emit::repository is used in <a href="#SP4">&#167;4</a>, <a href="#SP5">&#167;5</a>, 1/mr (<a href="1-mr.html#SP4_15">&#167;4.15</a>), 21/rl (<a href="21-rl.html#SP9">&#167;9</a>), 27/pc (<a href="27-pc.html#SP2">&#167;2</a>, <a href="27-pc.html#SP4">&#167;4</a>, <a href="27-pc.html#SP6">&#167;6</a>), 27/in (<a href="27-in.html#SP8">&#167;8</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::move_write_position is used in 27/pc (<a href="27-pc.html#SP6">&#167;6</a>).</p>
2019-04-17 20:19:03 +03:00
<p class="endnote">The function Emit::baseline is used in <a href="#SP4">&#167;4</a>, <a href="#SP5">&#167;5</a>, 27/pc (<a href="27-pc.html#SP2">&#167;2</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::bookmark is used in <a href="#SP4">&#167;4</a>.</p>
<p class="endnote">The function Emit::bookmark_bubble is used in 27/pc (<a href="27-pc.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function Emit::begin is used in 1/mr (<a href="1-mr.html#SP4_7">&#167;4.7</a>).</p>
2019-04-17 20:19:03 +03:00
<p class="endnote">The function Emit::packagetype is used in 27/hl (<a href="27-hl.html#SP3">&#167;3</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::is_indirect_interp appears nowhere else.</p>
<p class="endnote">The function Emit::indirect_interp appears nowhere else.</p>
<p class="endnote">The function Emit::is_indirectv_interp appears nowhere else.</p>
<p class="endnote">The function Emit::indirectv_interp appears nowhere else.</p>
2019-04-13 20:58:43 +03:00
<p class="endnote">The function Emit::comment is used in 6/rlt (<a href="6-rlt.html#SP29">&#167;29</a>), 8/ef (<a href="8-ef.html#SP16">&#167;16</a>), 21/rl (<a href="21-rl.html#SP21">&#167;21</a>), 21/rb (<a href="21-rb.html#SP22">&#167;22</a>), 21/rl2 (<a href="21-rl2.html#SP20">&#167;20</a>), 22/pu (<a href="22-pu.html#SP17">&#167;17</a>), 22/tp (<a href="22-tp.html#SP10">&#167;10</a>), 25/ci (<a href="25-ci.html#SP3_2">&#167;3.2</a>), 26/ct (<a href="26-ct.html#SP7">&#167;7</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::kind_to_symbol is used in <a href="#SP4">&#167;4</a>, <a href="#SP5">&#167;5</a>.</p>
2019-04-18 11:51:47 +03:00
<p class="endnote">The function Emit::extern is used in 27/in (<a href="27-in.html#SP8">&#167;8</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::response is used in 17/rs (<a href="17-rs.html#SP7_1">&#167;7.1</a>).</p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b>The Inter language allows pragmas, or code-generation hints, to be passed
through. These are specific to the target of compilation. Here we generate
only I6-target pragmas, which are commands in Inform Control Language.
</p>
<p class="inwebparagraph">This is a mini-language for controlling the I6 compiler, able to set
command-line switches, memory settings and so on. I6 ordinarily discards lines
beginning with exclamation marks as comments, but at the very top of the file,
lines beginning <code class="display"><span class="extract">!%</span></code> are read as ICL commands: as soon as any line (including
a blank line) doesn't have this signature, I6 exits ICL mode. This is why we
insert them into the Inter stream close to the top.
</p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::pragma</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="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">), </span><span class="identifier">text</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">target_name</span><span class="plain"> =</span>
<span class="identifier">Inter::SymbolsTables::symbol_from_name_creating</span><span class="plain">(</span>
<span class="identifier">Inter::get_global_symbols</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">()), </span><span class="identifier">I</span><span class="string">"target_I6"</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Pragma::new</span><span class="plain">(&amp;</span><span class="identifier">pragmas_bookmark</span><span class="plain">, </span><span class="identifier">target_name</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">, 0, </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::append</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="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">symbol</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">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">), </span><span class="identifier">text</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Append::new</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">symbol</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::import</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">wording</span><span class="plain"> </span><span class="identifier">W</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="functiontext">InterNames::to_symbol</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">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">), </span><span class="string">"%W"</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Import::new</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">symbol</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::export</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">wording</span><span class="plain"> </span><span class="identifier">W</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="functiontext">InterNames::to_symbol</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">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">), </span><span class="string">"%W"</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Export::new</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">symbol</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::primitive</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">prim</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">category</span><span class="plain">, </span><span class="identifier">inter_symbol</span><span class="plain"> **</span><span class="identifier">to</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">to</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 symbol"</span><span class="plain">);</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">prim_command</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">prim_command</span><span class="plain">, </span><span class="string">"primitive %S %S"</span><span class="plain">, </span><span class="identifier">prim</span><span class="plain">, </span><span class="identifier">category</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Defn::read_construct_text</span><span class="plain">(</span><span class="identifier">prim_command</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="functiontext">Emit::IRS</span><span class="plain">()));</span>
<span class="identifier">inter_error_message</span><span class="plain"> *</span><span class="identifier">E</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="plain">*</span><span class="identifier">to</span><span class="plain"> = </span><span class="identifier">Inter::Textual::find_symbol</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">Inter::get_global_symbols</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">()), </span><span class="identifier">prim</span><span class="plain">, </span><span class="identifier">PRIMITIVE_IST</span><span class="plain">, &amp;</span><span class="identifier">E</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">E</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">prim_command</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">inter_symbols_table</span><span class="plain"> *</span><span class="functiontext">Emit::main_scope</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">Inter::Packages::main</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">()));</span>
<span class="plain">}</span>
<span class="identifier">inter_symbols_table</span><span class="plain"> *</span><span class="functiontext">Emit::global_scope</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">Inter::get_global_symbols</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::main_render_unique</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="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">) {</span>
<span class="identifier">Inter::SymbolsTables::render_identifier_unique</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Emit::seek_symbol</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="identifier">text_stream</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">Inter::SymbolsTables::symbol_from_name</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Emit::new_symbol</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="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">symb</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::symbol_from_name</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">symb</span><span class="plain">) &amp;&amp; (</span><span class="identifier">Inter::Symbols::read_annotation</span><span class="plain">(</span><span class="identifier">symb</span><span class="plain">, </span><span class="identifier">HOLDING_IANN</span><span class="plain">) == 1)) {</span>
<span class="functiontext">Emit::annotate_symbol_i</span><span class="plain">(</span><span class="identifier">symb</span><span class="plain">, </span><span class="identifier">DELENDA_EST_IANN</span><span class="plain">, 1);</span>
<span class="identifier">Inter::Nop::nop_out</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">Inter::Symbols::defining_frame</span><span class="plain">(</span><span class="identifier">symb</span><span class="plain">));</span>
<span class="identifier">Inter::Symbols::undefine</span><span class="plain">(</span><span class="identifier">symb</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">symb</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">Inter::SymbolsTables::create_with_unique_name</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Emit::holding_symbol</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="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">symb</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::symbol_from_name</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">symb</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="identifier">symb</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">name</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(&amp;</span><span class="identifier">holdings_bookmark</span><span class="plain">, </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(&amp;</span><span class="identifier">holdings_bookmark</span><span class="plain">, </span><span class="identifier">symb</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(&amp;</span><span class="identifier">holdings_bookmark</span><span class="plain">, </span><span class="identifier">int_interk</span><span class="plain">), </span><span class="identifier">LITERAL_IVAL</span><span class="plain">, 0, </span><span class="functiontext">Emit::baseline</span><span class="plain">(&amp;</span><span class="identifier">holdings_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="functiontext">Emit::annotate_symbol_i</span><span class="plain">(</span><span class="identifier">symb</span><span class="plain">, </span><span class="identifier">HOLDING_IANN</span><span class="plain">, 1);</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">symb</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Emit::new_local_symbol</span><span class="plain">(</span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">rsymb</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">return</span><span class="plain"> </span><span class="identifier">Inter::SymbolsTables::create_with_unique_name</span><span class="plain">(</span><span class="identifier">Inter::Package::local_symbols</span><span class="plain">(</span><span class="identifier">rsymb</span><span class="plain">), </span><span class="identifier">name</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::annotate_symbol_t</span><span class="plain">(</span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">symb</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">S</span><span class="plain">) {</span>
<span class="identifier">Inter::Symbols::annotate_t</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">symb</span><span class="plain">, </span><span class="identifier">annot_ID</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::annotate_symbol_w</span><span class="plain">(</span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">symb</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="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">temp</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">temp</span><span class="plain">, </span><span class="string">"%W"</span><span class="plain">, </span><span class="identifier">W</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::annotate_t</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">symb</span><span class="plain">, </span><span class="identifier">annot_ID</span><span class="plain">, </span><span class="identifier">temp</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">temp</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::annotate_symbol_i</span><span class="plain">(</span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">symb</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="identifier">Inter::Symbols::annotate_i</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">symb</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">Emit::annotate_iname_i</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">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="identifier">Inter::Symbols::annotate_i</span><span class="plain">(</span><span class="functiontext">Emit::repository</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="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">Emit::guard</span><span class="plain">(</span><span class="identifier">inter_error_message</span><span class="plain"> *</span><span class="identifier">ERR</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">ERR</span><span class="plain">) &amp;&amp; (</span><span class="identifier">problem_count</span><span class="plain"> == 0)) { </span><span class="identifier">Inter::Errors::issue</span><span class="plain">(</span><span class="identifier">ERR</span><span class="plain">); /* </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"inter error"</span><span class="plain">); */ }</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::kind</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">TID</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">super</span><span class="plain">,</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">constructor</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">arity</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain"> **</span><span class="identifier">operand_kinds</span><span class="plain">) {</span>
2019-04-18 03:53:27 +03:00
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Packaging::enter_home_of</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">);</span>
2019-03-17 14:40:57 +02:00
<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="identifier">inter_t</span><span class="plain"> </span><span class="identifier">SID</span><span class="plain"> = 0;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain">) </span><span class="identifier">SID</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">SS</span><span class="plain"> = (</span><span class="identifier">super</span><span class="plain">)?</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">super</span><span class="plain">):</span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">SUP</span><span class="plain"> = 0;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">SS</span><span class="plain">) </span><span class="identifier">SUP</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">SS</span><span class="plain">);</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">operands</span><span class="plain">[</span><span class="constant">MAX_KIND_ARITY</span><span class="plain">];</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">arity</span><span class="plain"> &gt; </span><span class="constant">MAX_KIND_ARITY</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"kind arity too high"</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="identifier">arity</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">operand_kinds</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] == </span><span class="identifier">K_nil</span><span class="plain">) </span><span class="identifier">operands</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] = 0;</span>
<span class="reserved">else</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">Emit::kind_to_symbol</span><span class="plain">(</span><span class="identifier">operand_kinds</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">]);</span>
<span class="identifier">operands</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] = </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="functiontext">Emit::kind_inner</span><span class="plain">(</span><span class="identifier">SID</span><span class="plain">, </span><span class="identifier">TID</span><span class="plain">, </span><span class="identifier">SUP</span><span class="plain">, </span><span class="identifier">constructor</span><span class="plain">, </span><span class="identifier">arity</span><span class="plain">, </span><span class="identifier">operands</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="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::kind_inner</span><span class="plain">(</span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">SID</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">TID</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">SUP</span><span class="plain">,</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">constructor</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">arity</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">operands</span><span class="plain">) {</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Kind::new</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">SID</span><span class="plain">, </span><span class="identifier">TID</span><span class="plain">, </span><span class="identifier">SUP</span><span class="plain">, </span><span class="identifier">constructor</span><span class="plain">, </span><span class="identifier">arity</span><span class="plain">, </span><span class="identifier">operands</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Emit::variable</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">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">inter_t</span><span class="plain"> </span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">v2</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">rvalue</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">var_name</span><span class="plain"> = </span><span class="functiontext">InterNames::define_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">var_kind</span><span class="plain"> = </span><span class="functiontext">Emit::kind_to_symbol</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Variable::new</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">,</span>
<span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">var_name</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">var_kind</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="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</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">rvalue</span><span class="plain">) </span><span class="functiontext">Emit::annotate_symbol_i</span><span class="plain">(</span><span class="identifier">var_name</span><span class="plain">, </span><span class="identifier">EXPLICIT_VARIABLE_IANN</span><span class="plain">, 1);</span>
2019-03-17 14:40:57 +02:00
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">var_name</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::marker</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">mark</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">mark_name</span><span class="plain"> = </span><span class="functiontext">Emit::new_symbol</span><span class="plain">(</span><span class="functiontext">Emit::main_scope</span><span class="plain">(), </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">mark</span><span class="plain">));</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Marker::new</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">mark_name</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::property</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">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">inter_symbol</span><span class="plain"> *</span><span class="identifier">prop_name</span><span class="plain"> = </span><span class="functiontext">InterNames::define_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">prop_kind</span><span class="plain"> = </span><span class="functiontext">Emit::kind_to_symbol</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Property::new</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">,</span>
<span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">prop_name</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">prop_kind</span><span class="plain">), </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::permission</span><span class="plain">(</span><span class="reserved">property</span><span class="plain"> *</span><span class="identifier">prn</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">inter_name</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">) {</span>
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Packaging::enter</span><span class="plain">(</span><span class="functiontext">Kinds::RunTime::package</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">));</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">prop_name</span><span class="plain"> = </span><span class="functiontext">Properties::iname</span><span class="plain">(</span><span class="identifier">prn</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">owner_kind</span><span class="plain"> = </span><span class="functiontext">Emit::kind_to_symbol</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">store</span><span class="plain"> = (</span><span class="identifier">name</span><span class="plain">)?</span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">):</span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="functiontext">Emit::basic_permission</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">prop_name</span><span class="plain">, </span><span class="identifier">owner_kind</span><span class="plain">, </span><span class="identifier">store</span><span class="plain">);</span>
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::instance_permission</span><span class="plain">(</span><span class="reserved">property</span><span class="plain"> *</span><span class="identifier">prn</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">inst_iname</span><span class="plain">) {</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">prop_name</span><span class="plain"> = </span><span class="functiontext">Properties::iname</span><span class="plain">(</span><span class="identifier">prn</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">inst_name</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">inst_iname</span><span class="plain">);</span>
2019-04-18 03:53:27 +03:00
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Packaging::enter_home_of</span><span class="plain">(</span><span class="identifier">inst_iname</span><span class="plain">);</span>
2019-03-17 14:40:57 +02:00
<span class="functiontext">Emit::basic_permission</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">prop_name</span><span class="plain">, </span><span class="identifier">inst_name</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">ppi7_counter</span><span class="plain"> = 0;</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::basic_permission</span><span class="plain">(</span><span class="identifier">inter_reading_state</span><span class="plain"> *</span><span class="identifier">at</span><span class="plain">, </span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">owner_name</span><span class="plain">, </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">store</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">prop_name</span><span class="plain"> = </span><span class="functiontext">InterNames::define_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">inter_error_message</span><span class="plain"> *</span><span class="identifier">E</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">ident</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">ident</span><span class="plain">, </span><span class="string">"pp_i7_%d"</span><span class="plain">, </span><span class="identifier">ppi7_counter</span><span class="plain">++);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">pp_name</span><span class="plain"> = </span><span class="identifier">Inter::Textual::new_symbol</span><span class="plain">(</span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">Inter::Bookmarks::scope</span><span class="plain">(</span><span class="identifier">at</span><span class="plain">), </span><span class="identifier">ident</span><span class="plain">, &amp;</span><span class="identifier">E</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">ident</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">E</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Permission::new</span><span class="plain">(</span><span class="identifier">at</span><span class="plain">,</span>
<span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">at</span><span class="plain">, </span><span class="identifier">prop_name</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">at</span><span class="plain">, </span><span class="identifier">owner_name</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">at</span><span class="plain">, </span><span class="identifier">pp_name</span><span class="plain">), (</span><span class="identifier">store</span><span class="plain">)?(</span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">at</span><span class="plain">, </span><span class="identifier">store</span><span class="plain">)):0, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">at</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</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">dval_written</span><span class="plain"> {</span>
<span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">K_written</span><span class="plain">;</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">v1</span><span class="plain">;</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">v2</span><span class="plain">;</span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">dval_written</span><span class="plain">;</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::ensure_defaultvalue</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">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain"> == </span><span class="identifier">K_value</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
<span class="reserved">dval_written</span><span class="plain"> *</span><span class="identifier">dw</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">dw</span><span class="plain">, </span><span class="reserved">dval_written</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Kinds::Compare::eq</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">dw</span><span class="plain">-</span><span class="element">&gt;K_written</span><span class="plain">))</span>
<span class="reserved">return</span><span class="plain">;</span>
<span class="identifier">dw</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">dval_written</span><span class="plain">);</span>
<span class="identifier">dw</span><span class="plain">-</span><span class="element">&gt;K_written</span><span class="plain"> = </span><span class="identifier">K</span><span class="plain">; </span><span class="identifier">dw</span><span class="plain">-</span><span class="element">&gt;v1</span><span class="plain"> = 0; </span><span class="identifier">dw</span><span class="plain">-</span><span class="element">&gt;v2</span><span class="plain"> = 0;</span>
<span class="functiontext">Kinds::RunTime::get_default_value</span><span class="plain">(&amp;(</span><span class="identifier">dw</span><span class="plain">-</span><span class="element">&gt;v1</span><span class="plain">), &amp;(</span><span class="identifier">dw</span><span class="plain">-</span><span class="element">&gt;v2</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">dw</span><span class="plain">-</span><span class="element">&gt;v1</span><span class="plain"> != 0)</span>
<span class="functiontext">Emit::defaultvalue</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">dw</span><span class="plain">-</span><span class="element">&gt;v1</span><span class="plain">, </span><span class="identifier">dw</span><span class="plain">-</span><span class="element">&gt;v2</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::defaultvalue</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">inter_t</span><span class="plain"> </span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">v2</span><span class="plain">) {</span>
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Packaging::enter</span><span class="plain">(</span><span class="functiontext">Kinds::RunTime::package</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">));</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">owner_kind</span><span class="plain"> = </span><span class="functiontext">Emit::kind_to_symbol</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::DefaultValue::new</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">,</span>
<span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">owner_kind</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="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::propertyvalue</span><span class="plain">(</span><span class="reserved">property</span><span class="plain"> *</span><span class="identifier">P</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">inter_t</span><span class="plain"> </span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">v2</span><span class="plain">) {</span>
<span class="functiontext">Properties::emit_single</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">prop_name</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="functiontext">Properties::iname</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">));</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">owner_kind</span><span class="plain"> = </span><span class="functiontext">Emit::kind_to_symbol</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::PropertyValue::new</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">,</span>
<span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">prop_name</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">owner_kind</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="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::instance_propertyvalue</span><span class="plain">(</span><span class="reserved">property</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="reserved">instance</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">v2</span><span class="plain">) {</span>
<span class="functiontext">Properties::emit_single</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">prop_name</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="functiontext">Properties::iname</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">));</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">owner_kind</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="functiontext">Instances::emitted_iname</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">));</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::PropertyValue::new</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">,</span>
<span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">prop_name</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">owner_kind</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="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::named_string_constant</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">contents</span><span class="plain">) {</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">), </span><span class="identifier">contents</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">con_name</span><span class="plain"> = </span><span class="functiontext">InterNames::define_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_textual</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">con_name</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">string_interk</span><span class="plain">), </span><span class="identifier">ID</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::instance</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">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">int</span><span class="plain"> </span><span class="identifier">v</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">inst_name</span><span class="plain"> = </span><span class="functiontext">InterNames::define_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">val_kind</span><span class="plain"> = </span><span class="functiontext">Emit::kind_to_symbol</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">val_kind</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 kind for val"</span><span class="plain">);</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">v1</span><span class="plain"> = </span><span class="identifier">LITERAL_IVAL</span><span class="plain">, </span><span class="identifier">v2</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">v</span><span class="plain"> == 0) { </span><span class="identifier">v1</span><span class="plain"> = </span><span class="identifier">UNDEF_IVAL</span><span class="plain">; </span><span class="identifier">v2</span><span class="plain"> = 0; }</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Instance::new</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">inst_name</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">val_kind</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="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::named_generic_constant</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">name</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="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">con_name</span><span class="plain"> = </span><span class="functiontext">InterNames::define_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">con_name</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">unchecked_interk</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="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">Emit::named_numeric_constant</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">val</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">con_name</span><span class="plain"> = </span><span class="functiontext">InterNames::define_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">con_name</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">int_interk</span><span class="plain">), </span><span class="identifier">LITERAL_IVAL</span><span class="plain">, </span><span class="identifier">val</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</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">name</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::hold_numeric_constant</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">val</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">con_name</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">con_name</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">int_interk</span><span class="plain">), </span><span class="identifier">LITERAL_IVAL</span><span class="plain">, </span><span class="identifier">val</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::named_text_constant</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">content</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">con_name</span><span class="plain"> = </span><span class="functiontext">InterNames::define_symbol</span><span class="plain">(</span><span class="identifier">name</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="functiontext">Emit::text_value</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">content</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">con_name</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">int_interk</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="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::named_pseudo_numeric_constant</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">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">inter_t</span><span class="plain"> </span><span class="identifier">val</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">con_name</span><span class="plain"> = </span><span class="functiontext">InterNames::define_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">val_kind</span><span class="plain"> = </span><span class="functiontext">Emit::kind_to_symbol</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">con_name</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">val_kind</span><span class="plain">), </span><span class="identifier">LITERAL_IVAL</span><span class="plain">, </span><span class="identifier">val</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::ds_named_pseudo_numeric_constant</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">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">inter_t</span><span class="plain"> </span><span class="identifier">val</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">con_name</span><span class="plain"> = </span><span class="functiontext">InterNames::define_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">val_kind</span><span class="plain"> = </span><span class="functiontext">Emit::kind_to_symbol</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">con_name</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">val_kind</span><span class="plain">), </span><span class="identifier">LITERAL_IVAL</span><span class="plain">, </span><span class="identifier">val</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</span>
2019-03-17 14:40:57 +02:00
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::named_late_array_begin</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">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="functiontext">Emit::named_array_begin</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">);</span>
<span class="functiontext">Emit::annotate_iname_i</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">LATE_IANN</span><span class="plain">, 1);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::named_byte_array_begin</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">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="functiontext">Emit::named_array_begin</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">);</span>
<span class="functiontext">Emit::annotate_iname_i</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">BYTEARRAY_IANN</span><span class="plain">, 1);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::named_table_array_begin</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">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="functiontext">Emit::named_array_begin</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">);</span>
<span class="functiontext">Emit::annotate_iname_i</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">TABLEARRAY_IANN</span><span class="plain">, 1);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::named_string_array_begin</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">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="functiontext">Emit::named_array_begin</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">);</span>
<span class="functiontext">Emit::annotate_iname_i</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">STRINGARRAY_IANN</span><span class="plain">, 1);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::named_verb_array_begin</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">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="functiontext">Emit::named_array_begin</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">);</span>
<span class="functiontext">Emit::annotate_iname_i</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">VERBARRAY_IANN</span><span class="plain">, 1);</span>
<span class="functiontext">Emit::annotate_iname_i</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">LATE_IANN</span><span class="plain">, 1);</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">nascent_array</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">array_name_symbol</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">entry_kind</span><span class="plain">;</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">array_form</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">no_entries</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">capacity</span><span class="plain">;</span>
<span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">entry_data1</span><span class="plain">;</span>
<span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">entry_data2</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">nascent_array</span><span class="plain"> *</span><span class="identifier">up</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">nascent_array</span><span class="plain"> *</span><span class="identifier">down</span><span class="plain">;</span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">nascent_array</span><span class="plain">;</span>
<span class="reserved">nascent_array</span><span class="plain"> *</span><span class="identifier">first_A</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">, *</span><span class="identifier">current_A</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::push_array</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">nascent_array</span><span class="plain"> *</span><span class="identifier">A</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">current_A</span><span class="plain">) {</span>
<span class="identifier">A</span><span class="plain"> = </span><span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;down</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">A</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="identifier">A</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">nascent_array</span><span class="plain">);</span>
<span class="identifier">A</span><span class="plain">-</span><span class="element">&gt;up</span><span class="plain"> = </span><span class="identifier">current_A</span><span class="plain">;</span>
<span class="identifier">A</span><span class="plain">-</span><span class="element">&gt;down</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">A</span><span class="plain">-</span><span class="element">&gt;capacity</span><span class="plain"> = 0;</span>
<span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;down</span><span class="plain"> = </span><span class="identifier">A</span><span class="plain">;</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">first_A</span><span class="plain">) </span><span class="identifier">A</span><span class="plain"> = </span><span class="identifier">first_A</span><span class="plain">;</span>
<span class="reserved">else</span><span class="plain"> {</span>
<span class="identifier">A</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">nascent_array</span><span class="plain">);</span>
<span class="identifier">A</span><span class="plain">-</span><span class="element">&gt;up</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">A</span><span class="plain">-</span><span class="element">&gt;down</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">A</span><span class="plain">-</span><span class="element">&gt;capacity</span><span class="plain"> = 0;</span>
<span class="identifier">first_A</span><span class="plain"> = </span><span class="identifier">A</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="identifier">A</span><span class="plain">-</span><span class="element">&gt;no_entries</span><span class="plain"> = 0;</span>
<span class="identifier">A</span><span class="plain">-</span><span class="element">&gt;entry_kind</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">A</span><span class="plain">-</span><span class="element">&gt;array_name_symbol</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">A</span><span class="plain">-</span><span class="element">&gt;array_form</span><span class="plain"> = </span><span class="identifier">CONSTANT_INDIRECT_LIST</span><span class="plain">;</span>
<span class="identifier">current_A</span><span class="plain"> = </span><span class="identifier">A</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::pull_array</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">current_A</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">"pull array failed"</span><span class="plain">);</span>
<span class="identifier">current_A</span><span class="plain"> = </span><span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;up</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::add_entry</span><span class="plain">(</span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">v2</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_A</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 nascent array"</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="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;no_entries</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">+1 &gt; </span><span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;capacity</span><span class="plain">) {</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">M</span><span class="plain"> = 4*(</span><span class="identifier">N</span><span class="plain">+1);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;capacity</span><span class="plain"> == 0) </span><span class="identifier">M</span><span class="plain"> = 256;</span>
<span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">old_data1</span><span class="plain"> = </span><span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;entry_data1</span><span class="plain">;</span>
<span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">old_data2</span><span class="plain"> = </span><span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;entry_data2</span><span class="plain">;</span>
<span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;entry_data1</span><span class="plain"> = </span><span class="identifier">Memory::I7_calloc</span><span class="plain">(</span><span class="identifier">M</span><span class="plain">, </span><span class="reserved">sizeof</span><span class="plain">(</span><span class="identifier">inter_t</span><span class="plain">), </span><span class="constant">EMIT_ARRAY_MREASON</span><span class="plain">);</span>
<span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;entry_data2</span><span class="plain"> = </span><span class="identifier">Memory::I7_calloc</span><span class="plain">(</span><span class="identifier">M</span><span class="plain">, </span><span class="reserved">sizeof</span><span class="plain">(</span><span class="identifier">inter_t</span><span class="plain">), </span><span class="constant">EMIT_ARRAY_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="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;capacity</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) {</span>
<span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;entry_data1</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] = </span><span class="identifier">old_data1</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">];</span>
<span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;entry_data2</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">] = </span><span class="identifier">old_data2</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">];</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">old_data1</span><span class="plain">) </span><span class="identifier">Memory::I7_array_free</span><span class="plain">(</span><span class="identifier">old_data1</span><span class="plain">, </span><span class="constant">EMIT_ARRAY_MREASON</span><span class="plain">, </span><span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;capacity</span><span class="plain">, </span><span class="reserved">sizeof</span><span class="plain">(</span><span class="identifier">inter_t</span><span class="plain">));</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">old_data2</span><span class="plain">) </span><span class="identifier">Memory::I7_array_free</span><span class="plain">(</span><span class="identifier">old_data2</span><span class="plain">, </span><span class="constant">EMIT_ARRAY_MREASON</span><span class="plain">, </span><span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;capacity</span><span class="plain">, </span><span class="reserved">sizeof</span><span class="plain">(</span><span class="identifier">inter_t</span><span class="plain">));</span>
<span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;capacity</span><span class="plain"> = </span><span class="identifier">M</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;entry_data1</span><span class="plain">[</span><span class="identifier">N</span><span class="plain">] = </span><span class="identifier">v1</span><span class="plain">;</span>
<span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;entry_data2</span><span class="plain">[</span><span class="identifier">N</span><span class="plain">] = </span><span class="identifier">v2</span><span class="plain">;</span>
<span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;no_entries</span><span class="plain">++;</span>
<span class="plain">}</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">Emit::sum_constant_begin</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">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="functiontext">Emit::named_array_begin</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">);</span>
<span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;array_form</span><span class="plain"> = </span><span class="identifier">CONSTANT_SUM_LIST</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">name</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::named_array_begin</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">kind</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">symb</span><span class="plain"> = </span><span class="functiontext">InterNames::define_symbol</span><span class="plain">(</span><span class="identifier">N</span><span class="plain">);</span>
<span class="functiontext">Emit::push_array</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">K</span><span class="plain"> = </span><span class="identifier">K_value</span><span class="plain">;</span>
<span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;entry_kind</span><span class="plain"> = </span><span class="identifier">K</span><span class="plain">;</span>
<span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;array_name_symbol</span><span class="plain"> = </span><span class="identifier">symb</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::array_iname_entry</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">current_A</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">"entry outside of inter array"</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">alias</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="identifier">alias</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="functiontext">Emit::nothing</span><span class="plain">());</span>
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">alias</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">inter_t</span><span class="plain"> </span><span class="identifier">val1</span><span class="plain"> = 0, </span><span class="identifier">val2</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::array_IRS</span><span class="plain">();</span>
<span class="identifier">Inter::Symbols::to_data</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">, </span><span class="identifier">alias</span><span class="plain">, &amp;</span><span class="identifier">val1</span><span class="plain">, &amp;</span><span class="identifier">val2</span><span class="plain">);</span>
<span class="functiontext">Emit::add_entry</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="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::array_null_entry</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
2019-04-13 20:58:43 +03:00
<span class="functiontext">Emit::array_iname_entry</span><span class="plain">(</span><span class="functiontext">Hierarchy::find</span><span class="plain">(</span><span class="constant">NULL_HL</span><span class="plain">));</span>
2019-03-17 14:40:57 +02:00
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::array_MPN_entry</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
2019-04-13 20:58:43 +03:00
<span class="functiontext">Emit::array_iname_entry</span><span class="plain">(</span><span class="functiontext">Hierarchy::find</span><span class="plain">(</span><span class="constant">MAX_POSITIVE_NUMBER_HL</span><span class="plain">));</span>
2019-03-17 14:40:57 +02:00
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::array_generic_entry</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">if</span><span class="plain"> (</span><span class="identifier">current_A</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">"entry outside of inter array"</span><span class="plain">);</span>
<span class="functiontext">Emit::add_entry</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="plain">}</span>
<span class="plain">#</span><span class="identifier">ifdef</span><span class="plain"> </span><span class="identifier">IF_MODULE</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::array_action_entry</span><span class="plain">(</span><span class="identifier">action_name</span><span class="plain"> *</span><span class="identifier">an</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_A</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">"entry outside of inter array"</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_symbol</span><span class="plain"> *</span><span class="identifier">symb</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">PL::Actions::iname</span><span class="plain">(</span><span class="identifier">an</span><span class="plain">));</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::array_IRS</span><span class="plain">();</span>
<span class="identifier">Inter::Symbols::to_data</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">, </span><span class="identifier">symb</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="functiontext">Emit::add_entry</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="identifier">endif</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::array_text_entry</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">content</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_A</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">"entry outside of inter array"</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="functiontext">Emit::text_value</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">content</span><span class="plain">);</span>
<span class="functiontext">Emit::add_entry</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="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::array_dword_entry</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">content</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_A</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">"entry outside of inter array"</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="functiontext">Emit::dword_value</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">content</span><span class="plain">);</span>
<span class="functiontext">Emit::add_entry</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="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::array_plural_dword_entry</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">content</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_A</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">"entry outside of inter array"</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="functiontext">Emit::plural_dword_value</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">content</span><span class="plain">);</span>
<span class="functiontext">Emit::add_entry</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="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::array_numeric_entry</span><span class="plain">(</span><span class="identifier">inter_t</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">current_A</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">"entry outside of inter array"</span><span class="plain">);</span>
<span class="functiontext">Emit::add_entry</span><span class="plain">(</span><span class="identifier">LITERAL_IVAL</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">Emit::array_divider</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">divider_text</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_A</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">"entry outside of inter array"</span><span class="plain">);</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">S</span><span class="plain">), </span><span class="identifier">divider_text</span><span class="plain">);</span>
<span class="functiontext">Emit::add_entry</span><span class="plain">(</span><span class="identifier">DIVIDER_IVAL</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">inter_reading_state</span><span class="plain"> *</span><span class="functiontext">Emit::array_IRS</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">current_A</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">"inter array not opened"</span><span class="plain">);</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="reserved">return</span><span class="plain"> </span><span class="identifier">IRS</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::array_end</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">current_A</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">"inter array not opened"</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">con_name</span><span class="plain"> = </span><span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;array_name_symbol</span><span class="plain">;</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="identifier">kind</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain"> = </span><span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;entry_kind</span><span class="plain">;</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">CID</span><span class="plain"> = 0;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">con_kind</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">current_A</span><span class="plain">-</span><span class="element">&gt;array_form</span><span class="plain"> == </span><span class="identifier">CONSTANT_INDIRECT_LIST</span><span class="plain">)</span>
<span class="identifier">con_kind</span><span class="plain"> = </span><span class="functiontext">Emit::kind_to_symbol</span><span class="plain">(</span><span class="identifier">Kinds::unary_construction</span><span class="plain">(</span><span class="identifier">CON_list_of</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">));</span>
<span class="reserved">else</span>
<span class="identifier">con_kind</span><span class="plain"> = </span><span class="functiontext">Emit::kind_to_symbol</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="identifier">CID</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">, </span><span class="identifier">con_kind</span><span class="plain">);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="identifier">CID</span><span class="plain"> = </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">, </span><span class="identifier">unchecked_interk</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">inter_frame</span><span class="plain"> </span><span class="identifier">array_in_progress</span><span class="plain"> =</span>
<span class="identifier">Inter::Frame::fill_3</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">, </span><span class="identifier">CONSTANT_IST</span><span class="plain">, </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">, </span><span class="identifier">con_name</span><span class="plain">), </span><span class="identifier">CID</span><span class="plain">, </span><span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;array_form</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">));</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">pos</span><span class="plain"> = </span><span class="identifier">array_in_progress</span><span class="plain">.</span><span class="identifier">extent</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Frame::extend</span><span class="plain">(&amp;</span><span class="identifier">array_in_progress</span><span class="plain">, (</span><span class="reserved">unsigned</span><span class="plain"> </span><span class="reserved">int</span><span class="plain">) (2*</span><span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;no_entries</span><span class="plain">)) == </span><span class="identifier">FALSE</span><span class="plain">)</span>
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"can't extend frame"</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="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;no_entries</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) {</span>
<span class="identifier">array_in_progress</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">pos</span><span class="plain">++] = </span><span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;entry_data1</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">];</span>
<span class="identifier">array_in_progress</span><span class="plain">.</span><span class="identifier">data</span><span class="plain">[</span><span class="identifier">pos</span><span class="plain">++] = </span><span class="identifier">current_A</span><span class="plain">-</span><span class="element">&gt;entry_data2</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">];</span>
<span class="plain">}</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Defn::verify_construct</span><span class="plain">(</span><span class="identifier">array_in_progress</span><span class="plain">));</span>
<span class="identifier">Inter::Frame::insert</span><span class="plain">(</span><span class="identifier">array_in_progress</span><span class="plain">, </span><span class="identifier">default_bookmark</span><span class="plain">);</span>
<span class="functiontext">Emit::pull_array</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">Emit::nothing</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">K_object</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">"too soon for nothing"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">nothing_iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
2019-04-12 16:47:00 +03:00
<span class="identifier">nothing_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::find</span><span class="plain">(</span><span class="constant">NOTHING_HL</span><span class="plain">);</span>
<span class="reserved">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="functiontext">Packaging::enter_home_of</span><span class="plain">(</span><span class="identifier">nothing_iname</span><span class="plain">);</span>
2019-03-17 14:40:57 +02:00
<span class="functiontext">Emit::named_pseudo_numeric_constant</span><span class="plain">(</span><span class="identifier">nothing_iname</span><span class="plain">, </span><span class="identifier">K_object</span><span class="plain">, 0);</span>
2019-04-03 10:03:42 +03:00
<span class="functiontext">Packaging::exit</span><span class="plain">(</span><span class="identifier">save</span><span class="plain">);</span>
2019-03-17 14:40:57 +02:00
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">nothing_iname</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">Emit::named_iname_constant</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">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">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">con_name</span><span class="plain"> = </span><span class="functiontext">InterNames::define_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">val_kind</span><span class="plain"> = </span><span class="functiontext">Emit::kind_to_symbol</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">alias</span><span class="plain"> = (</span><span class="identifier">iname</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">NULL</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">alias</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::le</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">alias</span><span class="plain"> = </span><span class="functiontext">InterNames::to_symbol</span><span class="plain">(</span><span class="functiontext">Emit::nothing</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">"can't handle a null alias"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">val1</span><span class="plain"> = 0, </span><span class="identifier">val2</span><span class="plain"> = 0;</span>
<span class="identifier">Inter::Symbols::to_data</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">-&gt;</span><span class="identifier">read_into</span><span class="plain">, </span><span class="identifier">default_bookmark</span><span class="plain">-&gt;</span><span class="identifier">current_package</span><span class="plain">, </span><span class="identifier">alias</span><span class="plain">, &amp;</span><span class="identifier">val1</span><span class="plain">, &amp;</span><span class="identifier">val2</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">con_name</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">val_kind</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="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</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">name</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">Emit::named_numeric_constant_hex</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">val</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">con_name</span><span class="plain"> = </span><span class="functiontext">InterNames::define_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="functiontext">Emit::annotate_symbol_i</span><span class="plain">(</span><span class="identifier">con_name</span><span class="plain">, </span><span class="identifier">HEX_IANN</span><span class="plain">, 0);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">con_name</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">int_interk</span><span class="plain">), </span><span class="identifier">LITERAL_IVAL</span><span class="plain">, </span><span class="identifier">val</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</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">name</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">Emit::named_unchecked_constant_hex</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">val</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">con_name</span><span class="plain"> = </span><span class="functiontext">InterNames::define_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="functiontext">Emit::annotate_symbol_i</span><span class="plain">(</span><span class="identifier">con_name</span><span class="plain">, </span><span class="identifier">HEX_IANN</span><span class="plain">, 0);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">con_name</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">unchecked_interk</span><span class="plain">), </span><span class="identifier">LITERAL_IVAL</span><span class="plain">, </span><span class="identifier">val</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</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">name</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="functiontext">Emit::named_numeric_constant_signed</span><span class="plain">(</span><span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">val</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">con_name</span><span class="plain"> = </span><span class="functiontext">InterNames::define_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="functiontext">Emit::annotate_symbol_i</span><span class="plain">(</span><span class="identifier">con_name</span><span class="plain">, </span><span class="identifier">SIGNED_IANN</span><span class="plain">, 0);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">con_name</span><span class="plain">), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">int_interk</span><span class="plain">), </span><span class="identifier">LITERAL_IVAL</span><span class="plain">, (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="identifier">val</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</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">name</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">current_inter_routine</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_reading_state</span><span class="plain"> </span><span class="identifier">current_inter_reading_state</span><span class="plain">;</span>
<span class="identifier">inter_reading_state</span><span class="plain"> </span><span class="identifier">locals_bookmark</span><span class="plain">;</span>
<span class="identifier">inter_reading_state</span><span class="plain"> </span><span class="identifier">begin_bookmark</span><span class="plain">;</span>
<span class="identifier">inter_reading_state</span><span class="plain"> </span><span class="identifier">code_bookmark</span><span class="plain">;</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::early_comment</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="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">), </span><span class="identifier">text</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Comment::new</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">) + 1, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::code_comment</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="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">), </span><span class="identifier">text</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Comment::new</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">(), (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="functiontext">Emit::level</span><span class="plain">(), </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Emit::package</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">ptype</span><span class="plain">, </span><span class="identifier">inter_package</span><span class="plain"> **</span><span class="identifier">P</span><span class="plain">) {</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">B</span><span class="plain"> = </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">rsymb</span><span class="plain"> = </span><span class="functiontext">InterNames::define_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">ptype</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 package type"</span><span class="plain">);</span>
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">IP</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Package::new_package</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">rsymb</span><span class="plain">, </span><span class="identifier">ptype</span><span class="plain">, </span><span class="identifier">B</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, &amp;</span><span class="identifier">IP</span><span class="plain">));</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">IP</span><span class="plain">) {</span>
<span class="identifier">IP</span><span class="plain">-&gt;</span><span class="identifier">I7_baseline</span><span class="plain"> = </span><span class="identifier">B</span><span class="plain">+1;</span>
<span class="identifier">Inter::Defn::set_current_package</span><span class="plain">(</span><span class="functiontext">Emit::IRS</span><span class="plain">(), </span><span class="identifier">IP</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain">) *</span><span class="identifier">P</span><span class="plain"> = </span><span class="identifier">IP</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">rsymb</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Emit::block</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">current_inter_routine</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"nested routines"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Emit::IRS</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 inter repository"</span><span class="plain">);</span>
<span class="reserved">inter_name</span><span class="plain"> *</span><span class="identifier">block_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="functiontext">Packaging::houseed_in_function</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">))</span>
2019-04-18 03:53:27 +03:00
<span class="identifier">block_iname</span><span class="plain"> = </span><span class="functiontext">Hierarchy::make_block_iname</span><span class="plain">(</span><span class="functiontext">Packaging::home_of</span><span class="plain">(</span><span class="identifier">iname</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">"routine outside function package"</span><span class="plain">);</span>
2019-03-17 14:40:57 +02:00
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">rsymb</span><span class="plain"> = </span><span class="functiontext">Emit::package</span><span class="plain">(</span><span class="identifier">block_iname</span><span class="plain">, </span><span class="identifier">code_packagetype</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">);</span>
<span class="identifier">current_inter_routine</span><span class="plain"> = </span><span class="identifier">rsymb</span><span class="plain">;</span>
<span class="identifier">current_inter_reading_state</span><span class="plain"> = </span><span class="functiontext">Emit::bookmark</span><span class="plain">();</span>
<span class="identifier">locals_bookmark</span><span class="plain"> = </span><span class="identifier">current_inter_reading_state</span><span class="plain">;</span>
<span class="functiontext">Emit::place_label</span><span class="plain">(</span><span class="functiontext">Emit::reserve_label</span><span class="plain">(</span><span class="identifier">I</span><span class="string">".begin"</span><span class="plain">), </span><span class="identifier">FALSE</span><span class="plain">);</span>
<span class="identifier">begin_bookmark</span><span class="plain"> = </span><span class="functiontext">Emit::bookmark</span><span class="plain">();</span>
<span class="functiontext">Emit::early_comment</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"body:"</span><span class="plain">);</span>
<span class="identifier">code_bookmark</span><span class="plain"> = </span><span class="functiontext">Emit::bookmark</span><span class="plain">();</span>
<span class="functiontext">Emit::place_label</span><span class="plain">(</span><span class="functiontext">Emit::reserve_label</span><span class="plain">(</span><span class="identifier">I</span><span class="string">".end"</span><span class="plain">), </span><span class="identifier">FALSE</span><span class="plain">);</span>
<span class="reserved">code_insertion_point</span><span class="plain"> </span><span class="identifier">cip</span><span class="plain"> = </span><span class="functiontext">Emit::new_cip</span><span class="plain">(&amp;</span><span class="identifier">code_bookmark</span><span class="plain">);</span>
<span class="functiontext">Emit::push_code_position</span><span class="plain">(</span><span class="identifier">cip</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">rsymb</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::routine</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="identifier">kind</span><span class="plain"> *</span><span class="identifier">rkind</span><span class="plain">, </span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">block_name</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Emit::IRS</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 inter repository"</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">AB_symbol</span><span class="plain"> = </span><span class="functiontext">Emit::kind_to_symbol</span><span class="plain">(</span><span class="identifier">rkind</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">rsymb</span><span class="plain"> = </span><span class="functiontext">InterNames::define_symbol</span><span class="plain">(</span><span class="identifier">rname</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_function</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">,</span>
<span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">rsymb</span><span class="plain">),</span>
<span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">AB_symbol</span><span class="plain">),</span>
<span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">block_name</span><span class="plain">),</span>
<span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Emit::reserve_label</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">lname</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_inter_routine</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">"not in an inter routine"</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">lab_name</span><span class="plain"> = </span><span class="functiontext">Emit::local_exists</span><span class="plain">(</span><span class="identifier">lname</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">lab_name</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">lab_name</span><span class="plain">;</span>
<span class="identifier">lab_name</span><span class="plain"> = </span><span class="functiontext">Emit::new_local_symbol</span><span class="plain">(</span><span class="identifier">current_inter_routine</span><span class="plain">, </span><span class="identifier">lname</span><span class="plain">);</span>
<span class="identifier">Inter::Symbols::label</span><span class="plain">(</span><span class="identifier">lab_name</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">lab_name</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::place_label</span><span class="plain">(</span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">lab_name</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">inside</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">inside</span><span class="plain">) {</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Label::new</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">(), </span><span class="identifier">current_inter_routine</span><span class="plain">, </span><span class="identifier">lab_name</span><span class="plain">, (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="functiontext">Emit::level</span><span class="plain">(), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Label::new</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">current_inter_routine</span><span class="plain">, </span><span class="identifier">lab_name</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">) + 1, </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Emit::local_exists</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">lname</span><span class="plain">) {</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">Inter::SymbolsTables::symbol_from_name</span><span class="plain">(</span><span class="identifier">Inter::Package::local_symbols</span><span class="plain">(</span><span class="identifier">current_inter_routine</span><span class="plain">), </span><span class="identifier">lname</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Emit::local</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">text_stream</span><span class="plain"> *</span><span class="identifier">lname</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="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">comm</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_inter_routine</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">"not in an inter routine"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">K</span><span class="plain"> = </span><span class="identifier">K_number</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">loc_name</span><span class="plain"> = </span><span class="functiontext">Emit::new_local_symbol</span><span class="plain">(</span><span class="identifier">current_inter_routine</span><span class="plain">, </span><span class="identifier">lname</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">loc_kind</span><span class="plain"> = </span><span class="functiontext">Emit::kind_to_symbol</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = 0;</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">comm</span><span class="plain">) &amp;&amp; (</span><span class="identifier">Str::len</span><span class="plain">(</span><span class="identifier">comm</span><span class="plain">) &gt; 0)) {</span>
<span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">), </span><span class="identifier">comm</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">annot</span><span class="plain">) </span><span class="functiontext">Emit::annotate_symbol_i</span><span class="plain">(</span><span class="identifier">loc_name</span><span class="plain">, </span><span class="identifier">annot</span><span class="plain">, 0);</span>
<span class="identifier">Inter::Symbols::local</span><span class="plain">(</span><span class="identifier">loc_name</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Local::new</span><span class="plain">(&amp;</span><span class="identifier">locals_bookmark</span><span class="plain">, </span><span class="identifier">current_inter_routine</span><span class="plain">, </span><span class="identifier">loc_name</span><span class="plain">, </span><span class="identifier">loc_kind</span><span class="plain">, </span><span class="identifier">ID</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(&amp;</span><span class="identifier">locals_bookmark</span><span class="plain">) + 1, </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">loc_name</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::inv_primitive</span><span class="plain">(</span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">prim_symb</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_inter_routine</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">"not in an inter routine"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">prim_symb</span><span class="plain"> == </span><span class="identifier">switch_interp</span><span class="plain">) ||</span>
<span class="plain">(</span><span class="identifier">prim_symb</span><span class="plain"> == </span><span class="identifier">if_interp</span><span class="plain">) ||</span>
<span class="plain">(</span><span class="identifier">prim_symb</span><span class="plain"> == </span><span class="identifier">ifelse_interp</span><span class="plain">) ||</span>
<span class="plain">(</span><span class="identifier">prim_symb</span><span class="plain"> == </span><span class="identifier">for_interp</span><span class="plain">) ||</span>
<span class="plain">(</span><span class="identifier">prim_symb</span><span class="plain"> == </span><span class="identifier">while_interp</span><span class="plain">) ||</span>
<span class="plain">(</span><span class="identifier">prim_symb</span><span class="plain"> == </span><span class="identifier">objectloop_interp</span><span class="plain">)) </span><span class="functiontext">Emit::note_level</span><span class="plain">(</span><span class="identifier">prim_symb</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Inv::new_primitive</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">(), </span><span class="identifier">current_inter_routine</span><span class="plain">, </span><span class="identifier">prim_symb</span><span class="plain">, (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="functiontext">Emit::level</span><span class="plain">(), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::inv_call</span><span class="plain">(</span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">prim_symb</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_inter_routine</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">"not in an inter routine"</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Inv::new_call</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">(), </span><span class="identifier">current_inter_routine</span><span class="plain">, </span><span class="identifier">prim_symb</span><span class="plain">, (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="functiontext">Emit::level</span><span class="plain">(), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
2019-04-17 20:19:03 +03:00
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::inv_call_iname</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">current_inter_routine</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">"not in an inter routine"</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">prim_symb</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="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Inv::new_call</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">(), </span><span class="identifier">current_inter_routine</span><span class="plain">, </span><span class="identifier">prim_symb</span><span class="plain">, (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="functiontext">Emit::level</span><span class="plain">(), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
2019-03-17 14:40:57 +02:00
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::inv_indirect_call</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">arity</span><span class="plain">) {</span>
<span class="reserved">switch</span><span class="plain"> (</span><span class="identifier">arity</span><span class="plain">) {</span>
<span class="reserved">case</span><span class="plain"> 0: </span><span class="functiontext">Emit::inv_primitive</span><span class="plain">(</span><span class="identifier">indirect0_interp</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> 1: </span><span class="functiontext">Emit::inv_primitive</span><span class="plain">(</span><span class="identifier">indirect1_interp</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> 2: </span><span class="functiontext">Emit::inv_primitive</span><span class="plain">(</span><span class="identifier">indirect2_interp</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> 3: </span><span class="functiontext">Emit::inv_primitive</span><span class="plain">(</span><span class="identifier">indirect3_interp</span><span class="plain">); </span><span class="reserved">break</span><span class="plain">;</span>
<span class="reserved">case</span><span class="plain"> 4: </span><span class="functiontext">Emit::inv_primitive</span><span class="plain">(</span><span class="identifier">indirect4_interp</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">"indirect function call with too many arguments"</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">Emit::inv_assembly</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">opcode</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_inter_routine</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">"not in an inter routine"</span><span class="plain">);</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">SID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">SID</span><span class="plain">);</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="identifier">opcode</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Inv::new_assembly</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">(), </span><span class="identifier">current_inter_routine</span><span class="plain">, </span><span class="identifier">SID</span><span class="plain">, (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="functiontext">Emit::level</span><span class="plain">(), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::return</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">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
<span class="functiontext">Emit::inv_primitive</span><span class="plain">(</span><span class="identifier">return_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::down</span><span class="plain">();</span>
<span class="functiontext">Emit::val_iname</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">);</span>
<span class="functiontext">Emit::up</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::rtrue</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="functiontext">Emit::inv_primitive</span><span class="plain">(</span><span class="identifier">return_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::down</span><span class="plain">();</span>
<span class="functiontext">Emit::val</span><span class="plain">(</span><span class="identifier">K_number</span><span class="plain">, </span><span class="identifier">LITERAL_IVAL</span><span class="plain">, 1); </span> <span class="comment">that is, return "true"</span>
<span class="functiontext">Emit::up</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::rfalse</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="functiontext">Emit::inv_primitive</span><span class="plain">(</span><span class="identifier">return_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::down</span><span class="plain">();</span>
<span class="functiontext">Emit::val</span><span class="plain">(</span><span class="identifier">K_number</span><span class="plain">, </span><span class="identifier">LITERAL_IVAL</span><span class="plain">, 0); </span> <span class="comment">that is, return "false"</span>
<span class="functiontext">Emit::up</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::push</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">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
<span class="functiontext">Emit::inv_primitive</span><span class="plain">(</span><span class="identifier">push_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::down</span><span class="plain">();</span>
<span class="functiontext">Emit::val_iname</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">);</span>
<span class="functiontext">Emit::up</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::pull</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">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
<span class="functiontext">Emit::inv_primitive</span><span class="plain">(</span><span class="identifier">pull_interp</span><span class="plain">);</span>
<span class="functiontext">Emit::down</span><span class="plain">();</span>
<span class="functiontext">Emit::ref_iname</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">);</span>
<span class="functiontext">Emit::up</span><span class="plain">();</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Emit::pragma is used in 26/uo (<a href="26-uo.html#SP18">&#167;18</a>).</p>
<p class="endnote">The function Emit::append is used in 15/epv (<a href="15-epv.html#SP1_1_2">&#167;1.1.2</a>).</p>
<p class="endnote">The function Emit::import is used in 21/rl (<a href="21-rl.html#SP22">&#167;22</a>).</p>
<p class="endnote">The function Emit::export is used in 21/rl (<a href="21-rl.html#SP26">&#167;26</a>).</p>
<p class="endnote">The function Emit::primitive is used in <a href="#SP3">&#167;3</a>.</p>
2019-04-17 20:19:03 +03:00
<p class="endnote">The function Emit::main_scope is used in <a href="#SP3">&#167;3</a>, 13/rsfk (<a href="13-rsfk.html#SP5">&#167;5</a>, <a href="13-rsfk.html#SP25">&#167;25</a>), 27/is (<a href="27-is.html#SP32">&#167;32</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::global_scope appears nowhere else.</p>
2019-04-17 20:19:03 +03:00
<p class="endnote">The function Emit::main_render_unique 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 Emit::seek_symbol is used in 13/rsfk (<a href="13-rsfk.html#SP5">&#167;5</a>), 27/is (<a href="27-is.html#SP32">&#167;32</a>).</p>
2019-04-18 03:53:27 +03:00
<p class="endnote">The function Emit::new_symbol is used in <a href="#SP3">&#167;3</a>, 27/pc (<a href="27-pc.html#SP2">&#167;2</a>), 27/in (<a href="27-in.html#SP8">&#167;8</a>).</p>
2019-03-17 14:40:57 +02:00
2019-04-12 04:07:32 +03:00
<p class="endnote">The function Emit::holding_symbol is used in 13/rsfk (<a href="13-rsfk.html#SP5">&#167;5</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::new_local_symbol appears nowhere else.</p>
2019-04-18 03:53:27 +03:00
<p class="endnote">The function Emit::annotate_symbol_t is used in 27/in (<a href="27-in.html#SP8">&#167;8</a>).</p>
2019-03-17 14:40:57 +02:00
2019-04-18 03:53:27 +03:00
<p class="endnote">The function Emit::annotate_symbol_w is used in 27/in (<a href="27-in.html#SP8">&#167;8</a>).</p>
2019-03-17 14:40:57 +02:00
2019-04-18 03:53:27 +03:00
<p class="endnote">The function Emit::annotate_symbol_i is used in <a href="#SP3">&#167;3</a>, 27/pc (<a href="27-pc.html#SP2">&#167;2</a>), 27/in (<a href="27-in.html#SP8">&#167;8</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::annotate_iname_i appears nowhere else.</p>
2019-04-17 20:19:03 +03:00
<p class="endnote">The function Emit::guard is used in <a href="#SP3">&#167;3</a>, <a href="#SP5">&#167;5</a>, 27/pc (<a href="27-pc.html#SP2">&#167;2</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::kind is used in 13/rsfk (<a href="13-rsfk.html#SP23">&#167;23</a>, <a href="13-rsfk.html#SP25">&#167;25</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::kind_inner is used in <a href="#SP3">&#167;3</a>.</p>
<p class="endnote">The function Emit::variable is used in 5/nv (<a href="5-nv.html#SP16">&#167;16</a>), 27/hr (<a href="27-hr.html#SP4">&#167;4</a>).</p>
2019-03-17 14:40:57 +02:00
2019-04-10 04:13:29 +03:00
<p class="endnote">The function Emit::marker appears nowhere else.</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::property is used in 15/pr (<a href="15-pr.html#SP27">&#167;27</a>).</p>
<p class="endnote">The function Emit::permission is used in 15/pr (<a href="15-pr.html#SP27">&#167;27</a>).</p>
<p class="endnote">The function Emit::instance_permission is used in 15/pr (<a href="15-pr.html#SP27">&#167;27</a>).</p>
<p class="endnote">The function Emit::basic_permission appears nowhere else.</p>
<p class="endnote">The function Emit::ensure_defaultvalue is used in 15/pr (<a href="15-pr.html#SP27">&#167;27</a>).</p>
<p class="endnote">The function Emit::defaultvalue appears nowhere else.</p>
<p class="endnote">The function Emit::propertyvalue is used in 15/epv (<a href="15-epv.html#SP2_1">&#167;2.1</a>).</p>
<p class="endnote">The function Emit::instance_propertyvalue is used in 15/epv (<a href="15-epv.html#SP2_1">&#167;2.1</a>).</p>
<p class="endnote">The function Emit::named_string_constant is used in 12/cdp (<a href="12-cdp.html#SP2_1_1">&#167;2.1.1</a>), 17/tl (<a href="17-tl.html#SP14_1">&#167;14.1</a>), 21/fao (<a href="21-fao.html#SP10">&#167;10</a>), 26/iti (<a href="26-iti.html#SP10">&#167;10</a>).</p>
<p class="endnote">The function Emit::instance is used in 5/ins (<a href="5-ins.html#SP34">&#167;34</a>).</p>
<p class="endnote">The function Emit::named_generic_constant is used in 21/rl (<a href="21-rl.html#SP9">&#167;9</a>).</p>
<p class="endnote">The function Emit::named_numeric_constant is used in 6/rlt (<a href="6-rlt.html#SP20_3">&#167;20.3</a>), 13/kak (<a href="13-kak.html#SP5">&#167;5</a>), 13/rsfk (<a href="13-rsfk.html#SP25">&#167;25</a>), 21/ac (<a href="21-ac.html#SP6">&#167;6</a>), 22/cs (<a href="22-cs.html#SP8">&#167;8</a>), 24/ch (<a href="24-ch.html#SP8">&#167;8</a>), 26/vm (<a href="26-vm.html#SP8">&#167;8</a>), 26/uo (<a href="26-uo.html#SP21">&#167;21</a>), 26/pl (<a href="26-pl.html#SP12">&#167;12</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>), 27/hr (<a href="27-hr.html#SP4">&#167;4</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::hold_numeric_constant appears nowhere else.</p>
<p class="endnote">The function Emit::named_text_constant appears nowhere else.</p>
<p class="endnote">The function Emit::named_pseudo_numeric_constant appears nowhere else.</p>
<p class="endnote">The function Emit::ds_named_pseudo_numeric_constant appears nowhere else.</p>
<p class="endnote">The function Emit::named_late_array_begin is used in 13/rsfk (<a href="13-rsfk.html#SP4">&#167;4</a>), 17/tl (<a href="17-tl.html#SP16">&#167;16</a>), 17/ts (<a href="17-ts.html#SP8_1">&#167;8.1</a>), 18/lc (<a href="18-lc.html#SP11">&#167;11</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::named_byte_array_begin is used in 6/rlt (<a href="6-rlt.html#SP20_3">&#167;20.3</a>), 19/rsft (<a href="19-rsft.html#SP1_2">&#167;1.2</a>), 21/ac (<a href="21-ac.html#SP14">&#167;14</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>).</p>
<p class="endnote">The function Emit::named_table_array_begin is used in 19/rsft (<a href="19-rsft.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="19-rsft.html#SP1_1_1_1_1">&#167;1.1.1.1.1</a>), 22/tp2 (<a href="22-tp2.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function Emit::named_string_array_begin appears nowhere else.</p>
<p class="endnote">The function Emit::named_verb_array_begin appears nowhere else.</p>
<p class="endnote">The function Emit::push_array appears nowhere else.</p>
<p class="endnote">The function Emit::pull_array appears nowhere else.</p>
<p class="endnote">The function Emit::add_entry appears nowhere else.</p>
<p class="endnote">The function Emit::sum_constant_begin is used in 6/rlt (<a href="6-rlt.html#SP15_1_2">&#167;15.1.2</a>).</p>
<p class="endnote">The function Emit::named_array_begin is used in 6/rlt (<a href="6-rlt.html#SP15_1">&#167;15.1</a>, <a href="6-rlt.html#SP16">&#167;16</a>, <a href="6-rlt.html#SP20">&#167;20</a>, <a href="6-rlt.html#SP20_3">&#167;20.3</a>), 6/nv (<a href="6-nv.html#SP18">&#167;18</a>), 13/rsfk (<a href="13-rsfk.html#SP16_1">&#167;16.1</a>), 17/tl (<a href="17-tl.html#SP14_1">&#167;14.1</a>), 17/ts (<a href="17-ts.html#SP11">&#167;11</a>), 17/rs (<a href="17-rs.html#SP6_1">&#167;6.1</a>, <a href="17-rs.html#SP7_3">&#167;7.3</a>), 18/lc (<a href="18-lc.html#SP12_1">&#167;12.1</a>, <a href="18-lc.html#SP13">&#167;13</a>), 19/rsft (<a href="19-rsft.html#SP1_3">&#167;1.3</a>), 21/rb (<a href="21-rb.html#SP24_1_1">&#167;24.1.1</a>), 21/rl2 (<a href="21-rl2.html#SP14">&#167;14</a>, <a href="21-rl2.html#SP20">&#167;20</a>), 21/ac (<a href="21-ac.html#SP8">&#167;8</a>, <a href="21-ac.html#SP14">&#167;14</a>), 22/pav (<a href="22-pav.html#SP8_1">&#167;8.1</a>, <a href="22-pav.html#SP9_1">&#167;9.1</a>), 24/ch (<a href="24-ch.html#SP6">&#167;6</a>), 26/lt (<a href="26-lt.html#SP4_1">&#167;4.1</a>), 26/jl (<a href="26-jl.html#SP6">&#167;6</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>).</p>
<p class="endnote">The function Emit::array_iname_entry is used in 6/rlt (<a href="6-rlt.html#SP15_1_2">&#167;15.1.2</a>, <a href="6-rlt.html#SP15_1_2_1">&#167;15.1.2.1</a>, <a href="6-rlt.html#SP15_1_3">&#167;15.1.3</a>, <a href="6-rlt.html#SP15_1_6">&#167;15.1.6</a>, <a href="6-rlt.html#SP16">&#167;16</a>, <a href="6-rlt.html#SP20_2">&#167;20.2</a>), 6/nv (<a href="6-nv.html#SP18">&#167;18</a>), 13/rsfk (<a href="13-rsfk.html#SP4">&#167;4</a>, <a href="13-rsfk.html#SP9">&#167;9</a>, <a href="13-rsfk.html#SP12">&#167;12</a>), 17/tl (<a href="17-tl.html#SP14_1">&#167;14.1</a>, <a href="17-tl.html#SP16">&#167;16</a>), 17/ts (<a href="17-ts.html#SP8_1">&#167;8.1</a>, <a href="17-ts.html#SP11">&#167;11</a>), 17/rs (<a href="17-rs.html#SP6_1">&#167;6.1</a>, <a href="17-rs.html#SP7_3_1_1">&#167;7.3.1.1</a>), 18/lc (<a href="18-lc.html#SP11">&#167;11</a>), 19/rsft (<a href="19-rsft.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="19-rsft.html#SP1_1_1_1_1_5">&#167;1.1.1.1.1.5</a>, <a href="19-rsft.html#SP1_3">&#167;1.3</a>), 21/rl2 (<a href="21-rl2.html#SP14">&#167;14</a>, <a href="21-rl2.html#SP20">&#167;20</a>), 21/ac (<a href="21-ac.html#SP8">&#167;8</a>), 22/pav (<a href="22-pav.html#SP8_1">&#167;8.1</a>, <a href="22-pav.html#SP9_1">&#167;9.1</a>), 22/tp2 (<a href="22-tp2.html#SP4">&#167;4</a>), 24/ch (<a href="24-ch.html#SP6">&#167;6</a>), 26/lt (<a href="26-lt.html#SP4_1">&#167;4.1</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>).</p>
<p class="endnote">The function Emit::array_null_entry is used in 6/rlt (<a href="6-rlt.html#SP15_1">&#167;15.1</a>, <a href="6-rlt.html#SP16">&#167;16</a>), 19/rsft (<a href="19-rsft.html#SP1_1_1_1_1_3">&#167;1.1.1.1.1.3</a>, <a href="19-rsft.html#SP1_2">&#167;1.2</a>), 21/rb (<a href="21-rb.html#SP24_1_5">&#167;24.1.5</a>), 21/ac (<a href="21-ac.html#SP14">&#167;14</a>).</p>
<p class="endnote">The function Emit::array_MPN_entry is used in 13/rsfk (<a href="13-rsfk.html#SP20">&#167;20</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::array_generic_entry is used in 5/nv (<a href="5-nv.html#SP25">&#167;25</a>), 13/rsfk (<a href="13-rsfk.html#SP4">&#167;4</a>), 14/cfs (<a href="14-cfs.html#SP9">&#167;9</a>), 19/rsft (<a href="19-rsft.html#SP1_1_1_1_1_4">&#167;1.1.1.1.1.4</a>).</p>
<p class="endnote">The function Emit::array_action_entry is used in 21/rb (<a href="21-rb.html#SP24_1_2">&#167;24.1.2</a>).</p>
<p class="endnote">The function Emit::array_text_entry is used in 6/rlt (<a href="6-rlt.html#SP15_1_1">&#167;15.1.1</a>, <a href="6-rlt.html#SP15_1_5">&#167;15.1.5</a>, <a href="6-rlt.html#SP16">&#167;16</a>), 17/rs (<a href="17-rs.html#SP7_3_1_1">&#167;7.3.1.1</a>), 21/rl2 (<a href="21-rl2.html#SP20">&#167;20</a>), 22/pav (<a href="22-pav.html#SP8_1">&#167;8.1</a>, <a href="22-pav.html#SP9_1">&#167;9.1</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>).</p>
<p class="endnote">The function Emit::array_dword_entry appears nowhere else.</p>
<p class="endnote">The function Emit::array_plural_dword_entry appears nowhere else.</p>
<p class="endnote">The function Emit::array_numeric_entry is used in 6/rlt (<a href="6-rlt.html#SP15_1">&#167;15.1</a>, <a href="6-rlt.html#SP15_1_3">&#167;15.1.3</a>, <a href="6-rlt.html#SP16">&#167;16</a>, <a href="6-rlt.html#SP19">&#167;19</a>, <a href="6-rlt.html#SP20_2">&#167;20.2</a>, <a href="6-rlt.html#SP20_3">&#167;20.3</a>), 6/nv (<a href="6-nv.html#SP18">&#167;18</a>), 13/rsfk (<a href="13-rsfk.html#SP4">&#167;4</a>, <a href="13-rsfk.html#SP9">&#167;9</a>, <a href="13-rsfk.html#SP16_1_1_1">&#167;16.1.1.1</a>, <a href="13-rsfk.html#SP16_1_1_2">&#167;16.1.1.2</a>, <a href="13-rsfk.html#SP20">&#167;20</a>), 17/rs (<a href="17-rs.html#SP7_3">&#167;7.3</a>, <a href="17-rs.html#SP7_3_1_1">&#167;7.3.1.1</a>, <a href="17-rs.html#SP7_3_1_2">&#167;7.3.1.2</a>), 18/lc (<a href="18-lc.html#SP11">&#167;11</a>, <a href="18-lc.html#SP12_1">&#167;12.1</a>, <a href="18-lc.html#SP13">&#167;13</a>), 19/rsft (<a href="19-rsft.html#SP1_1_1_1_1_3">&#167;1.1.1.1.1.3</a>, <a href="19-rsft.html#SP1_1_1_1_1_4">&#167;1.1.1.1.1.4</a>, <a href="19-rsft.html#SP1_2_3">&#167;1.2.3</a>, <a href="19-rsft.html#SP1_3">&#167;1.3</a>), 21/rb (<a href="21-rb.html#SP24_1_1">&#167;24.1.1</a>, <a href="21-rb.html#SP24_1_2">&#167;24.1.2</a>), 21/rl2 (<a href="21-rl2.html#SP14">&#167;14</a>, <a href="21-rl2.html#SP20">&#167;20</a>), 21/ac (<a href="21-ac.html#SP8">&#167;8</a>, <a href="21-ac.html#SP14">&#167;14</a>), 22/tp2 (<a href="22-tp2.html#SP4">&#167;4</a>), 24/ch (<a href="24-ch.html#SP6">&#167;6</a>), 26/jl (<a href="26-jl.html#SP6">&#167;6</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::array_divider appears nowhere else.</p>
<p class="endnote">The function Emit::array_IRS appears nowhere else.</p>
<p class="endnote">The function Emit::array_end is used in 6/rlt (<a href="6-rlt.html#SP15_1">&#167;15.1</a>, <a href="6-rlt.html#SP15_1_2">&#167;15.1.2</a>, <a href="6-rlt.html#SP16">&#167;16</a>, <a href="6-rlt.html#SP20">&#167;20</a>, <a href="6-rlt.html#SP20_3">&#167;20.3</a>), 6/nv (<a href="6-nv.html#SP18">&#167;18</a>), 13/rsfk (<a href="13-rsfk.html#SP4">&#167;4</a>, <a href="13-rsfk.html#SP16_1">&#167;16.1</a>), 17/tl (<a href="17-tl.html#SP14_1">&#167;14.1</a>, <a href="17-tl.html#SP16">&#167;16</a>), 17/ts (<a href="17-ts.html#SP8_1">&#167;8.1</a>, <a href="17-ts.html#SP11">&#167;11</a>), 17/rs (<a href="17-rs.html#SP6_1">&#167;6.1</a>, <a href="17-rs.html#SP7_3">&#167;7.3</a>), 18/lc (<a href="18-lc.html#SP11">&#167;11</a>, <a href="18-lc.html#SP12_1">&#167;12.1</a>, <a href="18-lc.html#SP13">&#167;13</a>), 19/rsft (<a href="19-rsft.html#SP1_1_1_1">&#167;1.1.1.1</a>, <a href="19-rsft.html#SP1_1_1_1_1">&#167;1.1.1.1.1</a>, <a href="19-rsft.html#SP1_2">&#167;1.2</a>, <a href="19-rsft.html#SP1_3">&#167;1.3</a>), 21/rb (<a href="21-rb.html#SP24_1_5">&#167;24.1.5</a>), 21/rl2 (<a href="21-rl2.html#SP14">&#167;14</a>, <a href="21-rl2.html#SP20">&#167;20</a>), 21/ac (<a href="21-ac.html#SP8">&#167;8</a>, <a href="21-ac.html#SP14">&#167;14</a>), 22/pav (<a href="22-pav.html#SP8_1">&#167;8.1</a>, <a href="22-pav.html#SP9_1">&#167;9.1</a>), 22/tp2 (<a href="22-tp2.html#SP4">&#167;4</a>), 24/ch (<a href="24-ch.html#SP6">&#167;6</a>), 26/lt (<a href="26-lt.html#SP4_1">&#167;4.1</a>), 26/jl (<a href="26-jl.html#SP6">&#167;6</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::nothing appears nowhere else.</p>
<p class="endnote">The function Emit::named_iname_constant is used in 6/bp (<a href="6-bp.html#SP42">&#167;42</a>), 16/ic (<a href="16-ic.html#SP10">&#167;10</a>), 17/tl (<a href="17-tl.html#SP14_2">&#167;14.2</a>), 21/rb (<a href="21-rb.html#SP24">&#167;24</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::named_numeric_constant_hex is used in 6/rlt (<a href="6-rlt.html#SP14">&#167;14</a>), 26/vm (<a href="26-vm.html#SP8">&#167;8</a>).</p>
<p class="endnote">The function Emit::named_unchecked_constant_hex is used in 26/vm (<a href="26-vm.html#SP8">&#167;8</a>).</p>
<p class="endnote">The function Emit::named_numeric_constant_signed is used in 6/nv (<a href="6-nv.html#SP18">&#167;18</a>), 26/vm (<a href="26-vm.html#SP8">&#167;8</a>).</p>
<p class="endnote">The function Emit::early_comment appears nowhere else.</p>
<p class="endnote">The function Emit::code_comment is used in 4/am (<a href="4-am.html#SP34_2">&#167;34.2</a>), 5/lp (<a href="5-lp.html#SP27">&#167;27</a>, <a href="5-lp.html#SP29">&#167;29</a>, <a href="5-lp.html#SP30">&#167;30</a>), 6/nv (<a href="6-nv.html#SP18_2">&#167;18.2</a>), 12/cdp (<a href="12-cdp.html#SP1">&#167;1</a>), 13/rsfk (<a href="13-rsfk.html#SP25_1">&#167;25.1</a>), 20/eq (<a href="20-eq.html#SP47">&#167;47</a>), 25/ci (<a href="25-ci.html#SP3_2_3">&#167;3.2.3</a>), 25/cp (<a href="25-cp.html#SP5_1">&#167;5.1</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::package is used in 27/pc (<a href="27-pc.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function Emit::block is used in 26/rt (<a href="26-rt.html#SP3">&#167;3</a>, <a href="26-rt.html#SP4_1">&#167;4.1</a>).</p>
<p class="endnote">The function Emit::routine is used in 26/rt (<a href="26-rt.html#SP4">&#167;4</a>, <a href="26-rt.html#SP4_1">&#167;4.1</a>).</p>
<p class="endnote">The function Emit::reserve_label is used in 5/lp (<a href="5-lp.html#SP19">&#167;19</a>, <a href="5-lp.html#SP28">&#167;28</a>), 12/cdp (<a href="12-cdp.html#SP2_1_6_1_2_2_2_1">&#167;2.1.6.1.2.2.2.1</a>, <a href="12-cdp.html#SP2_1_6_1_6">&#167;2.1.6.1.6</a>), 24/pb (<a href="24-pb.html#SP14">&#167;14</a>, <a href="24-pb.html#SP17">&#167;17</a>), 25/cii (<a href="25-cii.html#SP3_4_1">&#167;3.4.1</a>), 25/cp (<a href="25-cp.html#SP5_4_3">&#167;5.4.3</a>), 27/is (<a href="27-is.html#SP31_1">&#167;31.1</a>).</p>
<p class="endnote">The function Emit::place_label is used in 5/lp (<a href="5-lp.html#SP19">&#167;19</a>, <a href="5-lp.html#SP27_3">&#167;27.3</a>), 12/cdp (<a href="12-cdp.html#SP2_1_6_1_6">&#167;2.1.6.1.6</a>), 24/pb (<a href="24-pb.html#SP14">&#167;14</a>), 25/cp (<a href="25-cp.html#SP5_4_3">&#167;5.4.3</a>), 27/is (<a href="27-is.html#SP31_1">&#167;31.1</a>).</p>
<p class="endnote">The function Emit::local_exists is used in 24/lv (<a href="24-lv.html#SP47">&#167;47</a>).</p>
<p class="endnote">The function Emit::local is used in 24/lv (<a href="24-lv.html#SP47">&#167;47</a>), 26/rt (<a href="26-rt.html#SP4_1_1">&#167;4.1.1</a>).</p>
<p class="endnote">The function Emit::inv_primitive is used in 4/am (<a href="4-am.html#SP35">&#167;35</a>, <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_1">&#167;19.1</a>, <a href="5-lp.html#SP19_2">&#167;19.2</a>, <a href="5-lp.html#SP19_3">&#167;19.3</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>, <a href="5-lp.html#SP19_2_2">&#167;19.2.2</a>, <a href="5-lp.html#SP27">&#167;27</a>, <a href="5-lp.html#SP27_2">&#167;27.2</a>, <a href="5-lp.html#SP27_3">&#167;27.3</a>, <a href="5-lp.html#SP27_3_1">&#167;27.3.1</a>, <a href="5-lp.html#SP27_3_2">&#167;27.3.2</a>, <a href="5-lp.html#SP27_3_3">&#167;27.3.3</a>, <a href="5-lp.html#SP27_3_4">&#167;27.3.4</a>), 5/ins (<a href="5-ins.html#SP29">&#167;29</a>), 5/nv (<a href="5-nv.html#SP12">&#167;12</a>, <a href="5-nv.html#SP16">&#167;16</a>), 6/bp (<a href="6-bp.html#SP25">&#167;25</a>), 6/rlt (<a href="6-rlt.html#SP15">&#167;15</a>, <a href="6-rlt.html#SP15_2">&#167;15.2</a>, <a href="6-rlt.html#SP15_2_4">&#167;15.2.4</a>, <a href="6-rlt.html#SP15_2_5">&#167;15.2.5</a>, <a href="6-rlt.html#SP15_2_6">&#167;15.2.6</a>, <a href="6-rlt.html#SP15_2_7">&#167;15.2.7</a>, <a href="6-rlt.html#SP15_2_8">&#167;15.2.8</a>, <a href="6-rlt.html#SP15_2_9">&#167;15.2.9</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#SP17">&#167;17</a>, <a href="6-rlt.html#SP29_1">&#167;29.1</a>, <a href="6-rlt.html#SP29_2">&#167;29.2</a>, <a href="6-rlt.html#SP29_3">&#167;29.3</a>, <a href="6-rlt.html#SP29_4">&#167;29.4</a>, <a href="6-rlt.html#SP29_5">&#167;29.5</a>, <a href="6-rlt.html#SP29_6">&#167;29.6</a>, <a href="6-rlt.html#SP30">&#167;30</a>), 6/nv (<a href="6-nv.html#SP17">&#167;17</a>, <a href="6-nv.html#SP18_1">&#167;18.1</a>, <a href="6-nv.html#SP18_2">&#167;18.2</a>, <a href="6-nv.html#SP18_1_2">&#167;18.1.2</a>, <a href="6-nv.html#SP18_1_2_1">&#167;18.1.2.1</a>, <a href="6-nv.html#SP18_1_2_2">&#167;18.1.2.2</a>, <a href="6-nv.html#SP19">&#167;19</a>), 8/ef (<a href="8-ef.html#SP19">&#167;19</a>), 12/ca (<a href="12-ca.html#SP5_2">&#167;5.2</a>), 12/dtd (<a href="12-dtd.html#SP7_1">&#167;7.1</a>, <a href="12-dtd.html#SP7_1_1">&#167;7.1.1</a>, <a href="12-dtd.html#SP8">&#167;8</a>, <a href="12-dtd.html#SP9">&#167;9</a>, <a href="12-dtd.html#SP9_1">&#167;9.1</a>, <a href="12-dtd.html#SP15">&#167;15</a>, <a href="12-dtd.html#SP16">&#167;16</a>, <a href="12-dtd.html#SP18">&#167;18</a>, <a href="12-dtd.html#SP19">&#167;19</a>, <a href="12-dtd.html#SP20">&#167;20</a>, <a href="12-dtd.html#SP22">&#167;22</a>, <a href="12-dtd.html#SP23">&#167;23</a>, <a href="12-dtd.html#SP25">&#167;25</a>, <a href="12-dtd.html#SP26">&#167;26</a>, <a href="12-dtd.html#SP27">&#167;27</a>), 12/cdp (<a href="12-cdp.html#SP2_1_6">&#167;2.1.6</a>, <a href="12-cdp.html#SP2_1_6_1_2_2">&#167;2.1.6.1.2.2</a>, <a href="12-cdp.html#SP2_1_6_1_2_3_2">&#167;2.1.6.1.2.3.2</a>, <a href="12-cdp.html#SP2_1_6_1_2_3_7">&#167;2.1.6.1.2.3.7</a>, <a href="12-cdp.html#SP2_1_6_1_2_4">&#167;2.1.6.1.2.4</a>, <a href="12-cdp.html#SP2_1_6_1_2_5">&#167;2.1.6.1.2.5</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_2">&#167;2.1.6.1.2.2.2</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_2_1">&#167;2.1.6.1.2.2.2.1</a>, <a href="12-cdp.html#SP2_1_6_1_7">&#167;2.1.6.1.7</a>, <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>, <a href="12-cdp.html#SP2_1_6_1_10">&#167;2.1.6.1.10</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_4">&#167;2.1.6.1.2.2.4</a>, <a href="12-cdp.html#SP2_1_6_1_11">&#167;2.1.6.1.11</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_5">&#167;2.1.6.1.2.2.5</a>, <a hr
2019-03-17 14:40:57 +02:00
2019-04-17 20:19:03 +03:00
<p class="endnote">The function Emit::inv_call is used in 27/is (<a href="27-is.html#SP31_4">&#167;31.4</a>).</p>
<p class="endnote">The function Emit::inv_call_iname is used in 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/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_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#SP7">&#167;7</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>), 17/ts (<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>), 20/eq (<a href="20-eq.html#SP48">&#167;48</a>), 21/rl (<a href="21-rl.html#SP11_2">&#167;11.2</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>), 25/cii (<a href="25-cii.html#SP3_1_1_4_7_1">&#167;3.1.1.4.7.1</a>, <a href="25-cii.html#SP3_1_1_4_9">&#167;3.1.1.4.9</a>, <a href="25-cii.html#SP3_1_1_4_10">&#167;3.1.1.4.10</a>, <a href="25-cii.html#SP3_5_3">&#167;3.5.3</a>, <a href="25-cii.html#SP3_5_8">&#167;3.5.8</a>, <a href="25-cii.html#SP3_5_8_1">&#167;3.5.8.1</a>), 25/cp (<a href="25-cp.html#SP6">&#167;6</a>), 26/rt (<a href="26-rt.html#SP4_1_2">&#167;4.1.2</a>, <a href="26-rt.html#SP4_1_3">&#167;4.1.3</a>, <a href="26-rt.html#SP4_1_4">&#167;4.1.4</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>, <a href="26-ts.html#SP12">&#167;12</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::inv_indirect_call appears nowhere else.</p>
<p class="endnote">The function Emit::inv_assembly is used in 25/cii (<a href="25-cii.html#SP3_5_8_3">&#167;3.5.8.3</a>), 27/is (<a href="27-is.html#SP31_3">&#167;31.3</a>).</p>
<p class="endnote">The function Emit::return appears nowhere else.</p>
<p class="endnote">The function Emit::rtrue is used in 5/lp (<a href="5-lp.html#SP27">&#167;27</a>, <a href="5-lp.html#SP27_3_4">&#167;27.3.4</a>), 6/rlt (<a href="6-rlt.html#SP15_2_2">&#167;15.2.2</a>, <a href="6-rlt.html#SP15_2_3">&#167;15.2.3</a>, <a href="6-rlt.html#SP15_2_4">&#167;15.2.4</a>, <a href="6-rlt.html#SP15_2_7">&#167;15.2.7</a>, <a href="6-rlt.html#SP15_2_9_1">&#167;15.2.9.1</a>, <a href="6-rlt.html#SP29_4">&#167;29.4</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#SP18_1">&#167;18.1</a>), 12/cdp (<a href="12-cdp.html#SP2_1_6_1_2_2_1">&#167;2.1.6.1.2.2.1</a>), 13/rsfk (<a href="13-rsfk.html#SP25_6_5">&#167;25.6.5</a>), 15/ma (<a href="15-ma.html#SP13">&#167;13</a>), 17/ts (<a href="17-ts.html#SP11_1">&#167;11.1</a>), 19/rsft (<a href="19-rsft.html#SP2">&#167;2</a>), 21/rl (<a href="21-rl.html#SP20_2">&#167;20.2</a>), 21/fao (<a href="21-fao.html#SP10">&#167;10</a>), 24/ch (<a href="24-ch.html#SP6">&#167;6</a>), 25/cp (<a href="25-cp.html#SP5_4_4">&#167;5.4.4</a>), 26/uo (<a href="26-uo.html#SP21_1">&#167;21.1</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::rfalse is used in 4/am (<a href="4-am.html#SP34_2">&#167;34.2</a>), 6/bp (<a href="6-bp.html#SP25">&#167;25</a>), 6/rlt (<a href="6-rlt.html#SP15_2">&#167;15.2</a>, <a href="6-rlt.html#SP15_2_2">&#167;15.2.2</a>, <a href="6-rlt.html#SP15_2_3">&#167;15.2.3</a>, <a href="6-rlt.html#SP15_2_4">&#167;15.2.4</a>, <a href="6-rlt.html#SP15_2_9_1">&#167;15.2.9.1</a>, <a href="6-rlt.html#SP29_4">&#167;29.4</a>), 6/nv (<a href="6-nv.html#SP18_1">&#167;18.1</a>), 12/cdp (<a href="12-cdp.html#SP2_1_6_1_4">&#167;2.1.6.1.4</a>), 13/rsfk (<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>), 15/ma (<a href="15-ma.html#SP13">&#167;13</a>), 20/eq (<a href="20-eq.html#SP43">&#167;43</a>), 21/rb (<a href="21-rb.html#SP23">&#167;23</a>), 21/fao (<a href="21-fao.html#SP10">&#167;10</a>), 24/ch (<a href="24-ch.html#SP6">&#167;6</a>), 26/uo (<a href="26-uo.html#SP21_1">&#167;21.1</a>), 26/lt (<a href="26-lt.html#SP4_1">&#167;4.1</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::push is used in 26/rt (<a href="26-rt.html#SP4_1_2">&#167;4.1.2</a>).</p>
<p class="endnote">The function Emit::pull is used in 26/rt (<a href="26-rt.html#SP4_1_4">&#167;4.1.4</a>).</p>
<p class="endnote">The structure dval_written is private to this section.</p>
<p class="endnote">The structure nascent_array is accessed in 5/lp, 5/un, 7/hdn, 7/ns, 7/oaf, 7/rs, 8/ie, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/aots, 10/teav, 10/varc, 10/cap, 11/bas, 11/tc, 11/sc, 11/sm, 12/dtd, 14/sp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 17/ts, 18/lc, 19/tb, 19/rsft, 19/tod, 21/rl, 21/rl2, 21/rps, 21/ac, 22/cs, 22/ph, 23/ad, 24/lv, 24/ch, 25/in, 25/pi, 25/cp, 26/uo, 26/tti, 27/cm and here.</p>
<p class="inwebparagraph"><a id="SP5"></a><b>&#167;5. </b></p>
<pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">MAX_NESTED_NOTEWORTHY_LEVELS</span><span class="plain"> 256</span>
<span class="definitionkeyword">define</span> <span class="constant">MAX_CIP_STACK_SIZE</span><span class="plain"> 2</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">code_insertion_point</span><span class="plain"> {</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">inter_level</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">noted_levels</span><span class="plain">[</span><span class="constant">MAX_NESTED_NOTEWORTHY_LEVELS</span><span class="plain">];</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">noted_sp</span><span class="plain">;</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">error_flag</span><span class="plain">;</span>
<span class="identifier">inter_reading_state</span><span class="plain"> *</span><span class="identifier">insertion_bm</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">code_insertion_point</span><span class="plain">;</span>
<span class="reserved">code_insertion_point</span><span class="plain"> </span><span class="identifier">cip_stack</span><span class="plain">[</span><span class="constant">MAX_CIP_STACK_SIZE</span><span class="plain">];</span>
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">cip_sp</span><span class="plain"> = 0;</span>
<span class="reserved">code_insertion_point</span><span class="plain"> </span><span class="functiontext">Emit::new_cip</span><span class="plain">(</span><span class="identifier">inter_reading_state</span><span class="plain"> *</span><span class="identifier">IRS</span><span class="plain">) {</span>
<span class="reserved">code_insertion_point</span><span class="plain"> </span><span class="identifier">cip</span><span class="plain">;</span>
<span class="identifier">cip</span><span class="element">.inter_level</span><span class="plain"> = (</span><span class="reserved">int</span><span class="plain">) (</span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">IRS</span><span class="plain">) + 2);</span>
<span class="identifier">cip</span><span class="element">.noted_sp</span><span class="plain"> = 2;</span>
<span class="identifier">cip</span><span class="element">.error_flag</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="identifier">cip</span><span class="element">.insertion_bm</span><span class="plain"> = </span><span class="identifier">IRS</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">cip</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">code_insertion_point</span><span class="plain"> </span><span class="functiontext">Emit::begin_position</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">code_insertion_point</span><span class="plain"> </span><span class="identifier">cip</span><span class="plain"> = </span><span class="functiontext">Emit::new_cip</span><span class="plain">(&amp;</span><span class="identifier">begin_bookmark</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">cip</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::push_code_position</span><span class="plain">(</span><span class="reserved">code_insertion_point</span><span class="plain"> </span><span class="identifier">cip</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">cip_sp</span><span class="plain"> &gt;= </span><span class="constant">MAX_CIP_STACK_SIZE</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"CIP overflow"</span><span class="plain">);</span>
<span class="identifier">cip_stack</span><span class="plain">[</span><span class="identifier">cip_sp</span><span class="plain">++] = </span><span class="identifier">cip</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Emit::level</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">cip_sp</span><span class="plain"> &lt;= 0) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"CIP level accessed outside routine"</span><span class="plain">);</span>
<span class="reserved">code_insertion_point</span><span class="plain"> *</span><span class="identifier">cip</span><span class="plain"> = &amp;</span><span class="identifier">cip_stack</span><span class="plain">[</span><span class="identifier">cip_sp</span><span class="plain">-1];</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">cip</span><span class="plain">-</span><span class="element">&gt;inter_level</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::set_level</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">cip_sp</span><span class="plain"> &lt;= 0) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"CIP level accessed outside routine"</span><span class="plain">);</span>
<span class="reserved">code_insertion_point</span><span class="plain"> *</span><span class="identifier">cip</span><span class="plain"> = &amp;</span><span class="identifier">cip_stack</span><span class="plain">[</span><span class="identifier">cip_sp</span><span class="plain">-1];</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> &lt; 2) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="identifier">cip</span><span class="plain">-</span><span class="element">&gt;error_flag</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="identifier">N</span><span class="plain"> = 2;</span>
<span class="plain">}</span>
<span class="reserved">while</span><span class="plain"> (</span><span class="identifier">cip</span><span class="plain">-</span><span class="element">&gt;noted_sp</span><span class="plain"> &gt; 0) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">cip</span><span class="plain">-</span><span class="element">&gt;noted_levels</span><span class="plain">[</span><span class="identifier">cip</span><span class="plain">-</span><span class="element">&gt;noted_sp</span><span class="plain">-1] &lt; </span><span class="identifier">N</span><span class="plain">) </span><span class="reserved">break</span><span class="plain">;</span>
<span class="identifier">cip</span><span class="plain">-</span><span class="element">&gt;noted_sp</span><span class="plain">--;</span>
<span class="plain">}</span>
<span class="identifier">cip</span><span class="plain">-</span><span class="element">&gt;inter_level</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">Emit::note_level</span><span class="plain">(</span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">from</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">cip_sp</span><span class="plain"> &lt;= 0) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"CIP level accessed outside routine"</span><span class="plain">);</span>
<span class="reserved">code_insertion_point</span><span class="plain"> *</span><span class="identifier">cip</span><span class="plain"> = &amp;</span><span class="identifier">cip_stack</span><span class="plain">[</span><span class="identifier">cip_sp</span><span class="plain">-1];</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">cip</span><span class="plain">-</span><span class="element">&gt;noted_sp</span><span class="plain"> &gt;= </span><span class="constant">MAX_NESTED_NOTEWORTHY_LEVELS</span><span class="plain">) </span><span class="reserved">return</span><span class="plain">;</span>
<span class="identifier">cip</span><span class="plain">-</span><span class="element">&gt;noted_levels</span><span class="plain">[</span><span class="identifier">cip</span><span class="plain">-</span><span class="element">&gt;noted_sp</span><span class="plain">++] = </span><span class="functiontext">Emit::level</span><span class="plain">();</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::to_last_level</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">delta</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">cip_sp</span><span class="plain"> &lt;= 0) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"CIP level accessed outside routine"</span><span class="plain">);</span>
<span class="reserved">code_insertion_point</span><span class="plain"> *</span><span class="identifier">cip</span><span class="plain"> = &amp;</span><span class="identifier">cip_stack</span><span class="plain">[</span><span class="identifier">cip_sp</span><span class="plain">-1];</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">cip</span><span class="plain">-</span><span class="element">&gt;noted_sp</span><span class="plain"> &lt;= 0) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="identifier">cip</span><span class="plain">-</span><span class="element">&gt;error_flag</span><span class="plain"> = </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="functiontext">Emit::set_level</span><span class="plain">(</span><span class="identifier">cip</span><span class="plain">-</span><span class="element">&gt;noted_levels</span><span class="plain">[</span><span class="identifier">cip</span><span class="plain">-</span><span class="element">&gt;noted_sp</span><span class="plain">-1] + </span><span class="identifier">delta</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="identifier">inter_reading_state</span><span class="plain"> *</span><span class="functiontext">Emit::at</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">cip_sp</span><span class="plain"> &lt;= 0) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"CIP level accessed outside routine"</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">cip_stack</span><span class="plain">[</span><span class="identifier">cip_sp</span><span class="plain">-1]</span><span class="element">.insertion_bm</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::down</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="functiontext">Emit::set_level</span><span class="plain">(</span><span class="functiontext">Emit::level</span><span class="plain">() + 1);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">trace_inter_insertion</span><span class="plain">) </span><span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Down to %d\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="functiontext">Emit::level</span><span class="plain">());</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::up</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="functiontext">Emit::set_level</span><span class="plain">(</span><span class="functiontext">Emit::level</span><span class="plain">() - 1);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">trace_inter_insertion</span><span class="plain">) </span><span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Up to %d\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="functiontext">Emit::level</span><span class="plain">());</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::pop_code_position</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">cip_sp</span><span class="plain"> &lt;= 0) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"CIP underflow"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">cip_stack</span><span class="plain">[</span><span class="identifier">cip_sp</span><span class="plain">-1]</span><span class="element">.error_flag</span><span class="plain">) {</span>
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"bad inter hierarchy"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">cip_sp</span><span class="plain">--;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::code</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">current_inter_routine</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">"not in an inter routine"</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Code::new</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">(), </span><span class="identifier">current_inter_routine</span><span class="plain">, </span><span class="functiontext">Emit::level</span><span class="plain">(), </span><span class="identifier">NULL</span><span class="plain">));</span>
2019-03-17 14:40:57 +02:00
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::evaluation</span><span class="plain">(</span><span class="reserved">void</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">current_inter_routine</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">"not in an inter routine"</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Evaluation::new</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">(), </span><span class="identifier">current_inter_routine</span><span class="plain">, </span><span class="functiontext">Emit::level</span><span class="plain">(), </span><span class="identifier">NULL</span><span class="plain">));</span>
2019-03-17 14:40:57 +02:00
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::reference</span><span class="plain">(</span><span class="reserved">void</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">current_inter_routine</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">"not in an inter routine"</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Reference::new</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">(), </span><span class="identifier">current_inter_routine</span><span class="plain">, </span><span class="functiontext">Emit::level</span><span class="plain">(), </span><span class="identifier">NULL</span><span class="plain">));</span>
2019-03-17 14:40:57 +02:00
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::val</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">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">if</span><span class="plain"> (</span><span class="identifier">current_inter_routine</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">"not in an inter routine"</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">val_kind</span><span class="plain"> = </span><span class="functiontext">Emit::kind_to_symbol</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">val_kind</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 kind for val"</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Val::new</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">(), </span><span class="identifier">current_inter_routine</span><span class="plain">, </span><span class="identifier">val_kind</span><span class="plain">, </span><span class="functiontext">Emit::level</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="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::val_nothing</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="functiontext">Emit::val</span><span class="plain">(</span><span class="identifier">K_number</span><span class="plain">, </span><span class="identifier">LITERAL_IVAL</span><span class="plain">, 0);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::lab</span><span class="plain">(</span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">L</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_inter_routine</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">"not in an inter routine"</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Lab::new</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">(), </span><span class="identifier">current_inter_routine</span><span class="plain">, </span><span class="identifier">L</span><span class="plain">, (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="functiontext">Emit::level</span><span class="plain">(), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::ref</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">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">if</span><span class="plain"> (</span><span class="identifier">current_inter_routine</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">"not in an inter routine"</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">val_kind</span><span class="plain"> = </span><span class="functiontext">Emit::kind_to_symbol</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">val_kind</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 kind for ref"</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Ref::new</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">(), </span><span class="identifier">current_inter_routine</span><span class="plain">, </span><span class="identifier">val_kind</span><span class="plain">, </span><span class="functiontext">Emit::level</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="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::val_iname</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">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">if</span><span class="plain"> (</span><span class="identifier">problem_count</span><span class="plain"> == 0) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no iname"</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="functiontext">Emit::val</span><span class="plain">(</span><span class="identifier">K_value</span><span class="plain">, </span><span class="identifier">LITERAL_IVAL</span><span class="plain">, 0);</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="functiontext">Emit::val_symbol</span><span class="plain">(</span><span class="identifier">K</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="plain">}</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::val_symbol</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">inter_symbol</span><span class="plain"> *</span><span class="identifier">s</span><span class="plain">) {</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">val1</span><span class="plain"> = 0, </span><span class="identifier">val2</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="identifier">Inter::Symbols::to_data</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">, </span><span class="identifier">s</span><span class="plain">, &amp;</span><span class="identifier">val1</span><span class="plain">, &amp;</span><span class="identifier">val2</span><span class="plain">);</span>
<span class="functiontext">Emit::val</span><span class="plain">(</span><span class="identifier">K</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="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::val_text</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">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="functiontext">Emit::text_value</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">S</span><span class="plain">);</span>
<span class="functiontext">Emit::val</span><span class="plain">(</span><span class="identifier">K_value</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="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::val_char</span><span class="plain">(</span><span class="identifier">wchar_t</span><span class="plain"> </span><span class="identifier">c</span><span class="plain">) {</span>
<span class="functiontext">Emit::val</span><span class="plain">(</span><span class="identifier">K_number</span><span class="plain">, </span><span class="identifier">LITERAL_IVAL</span><span class="plain">, (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="identifier">c</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::val_real</span><span class="plain">(</span><span class="reserved">double</span><span class="plain"> </span><span class="identifier">g</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="functiontext">Emit::real_value</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">g</span><span class="plain">);</span>
<span class="functiontext">Emit::val</span><span class="plain">(</span><span class="identifier">K_real_number</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="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::val_real_from_text</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">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="functiontext">Emit::real_value_from_text</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">S</span><span class="plain">);</span>
<span class="functiontext">Emit::val</span><span class="plain">(</span><span class="identifier">K_real_number</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="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::val_dword</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">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="functiontext">Emit::dword_value</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">S</span><span class="plain">);</span>
<span class="functiontext">Emit::val</span><span class="plain">(</span><span class="identifier">K_value</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="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::ref_iname</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">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
<span class="functiontext">Emit::ref_symbol</span><span class="plain">(</span><span class="identifier">K</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="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::ref_symbol</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">inter_symbol</span><span class="plain"> *</span><span class="identifier">s</span><span class="plain">) {</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">val1</span><span class="plain"> = 0, </span><span class="identifier">val2</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="identifier">Inter::Symbols::to_data</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">, </span><span class="identifier">s</span><span class="plain">, &amp;</span><span class="identifier">val1</span><span class="plain">, &amp;</span><span class="identifier">val2</span><span class="plain">);</span>
<span class="functiontext">Emit::ref</span><span class="plain">(</span><span class="identifier">K</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="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::cast</span><span class="plain">(</span><span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">kind</span><span class="plain"> *</span><span class="identifier">T</span><span class="plain">) {</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">from_kind</span><span class="plain"> = </span><span class="functiontext">Emit::kind_to_symbol</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">to_kind</span><span class="plain"> = </span><span class="functiontext">Emit::kind_to_symbol</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Cast::new</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">(), </span><span class="identifier">current_inter_routine</span><span class="plain">, </span><span class="identifier">from_kind</span><span class="plain">, </span><span class="identifier">to_kind</span><span class="plain">, (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="functiontext">Emit::level</span><span class="plain">(), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::end_block</span><span class="plain">(</span><span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">rsymb</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_inter_routine</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">"not in an inter routine"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_inter_routine</span><span class="plain"> != </span><span class="identifier">rsymb</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"wrong inter routine ended"</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Defn::pass2</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">FALSE</span><span class="plain">, &amp;</span><span class="identifier">current_inter_reading_state</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">, (</span><span class="reserved">int</span><span class="plain">) </span><span class="functiontext">Emit::baseline</span><span class="plain">(&amp;</span><span class="identifier">current_inter_reading_state</span><span class="plain">)));</span>
<span class="identifier">current_inter_routine</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="functiontext">Emit::pop_code_position</span><span class="plain">();</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="identifier">IRS</span><span class="plain">-&gt;</span><span class="identifier">current_package</span><span class="plain"> = </span><span class="identifier">IRS</span><span class="plain">-&gt;</span><span class="identifier">current_package</span><span class="plain">-&gt;</span><span class="identifier">parent_package</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Emit::emitting_routine</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">current_inter_routine</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>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">current_splat</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="functiontext">Emit::begin_splat</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="functiontext">Emit::end_splat</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">current_splat</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">current_splat</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">current_splat</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::end_splat</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">current_splat</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">current_splat</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> ((</span><span class="identifier">L</span><span class="plain"> &gt; 1) ||</span>
<span class="plain">((</span><span class="identifier">L</span><span class="plain"> == 1) &amp;&amp; (</span><span class="identifier">Str::get_first_char</span><span class="plain">(</span><span class="identifier">current_splat</span><span class="plain">) != </span><span class="character">'\</span><span class="plain">n</span><span class="character">'</span><span class="plain">))) {</span>
<span class="functiontext">Emit::entire_splat</span><span class="plain">(</span><span class="identifier">current_splat</span><span class="plain">, 0);</span>
<span class="plain">}</span>
<span class="identifier">Str::clear</span><span class="plain">(</span><span class="identifier">current_splat</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">Emit::entire_splat</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">content</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">level</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">content</span><span class="plain">) == 0) </span><span class="reserved">return</span><span class="plain">;</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">SID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">SID</span><span class="plain">);</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="identifier">content</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">level</span><span class="plain"> &gt; </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">)) {</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Splat::new</span><span class="plain">(</span><span class="functiontext">Emit::at</span><span class="plain">(), </span><span class="identifier">current_inter_routine</span><span class="plain">, </span><span class="identifier">SID</span><span class="plain">, 0, </span><span class="identifier">level</span><span class="plain">, 0, </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">} </span><span class="reserved">else</span><span class="plain"> {</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Splat::new</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, </span><span class="identifier">current_inter_routine</span><span class="plain">, </span><span class="identifier">SID</span><span class="plain">, 0, </span><span class="identifier">level</span><span class="plain">, 0, </span><span class="identifier">NULL</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">Emit::entire_splat_code</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">content</span><span class="plain">) {</span>
<span class="functiontext">Emit::entire_splat</span><span class="plain">(</span><span class="identifier">content</span><span class="plain">, (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="functiontext">Emit::level</span><span class="plain">());</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::write_bytecode</span><span class="plain">(</span><span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Emit::IRS</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 inter repository"</span><span class="plain">);</span>
<span class="identifier">Inter::Binary::write</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">, </span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::glob_value</span><span class="plain">(</span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v2</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> *</span><span class="identifier">clue</span><span class="plain">) {</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">);</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="identifier">glob</span><span class="plain">);</span>
<span class="plain">*</span><span class="identifier">v1</span><span class="plain"> = </span><span class="identifier">GLOB_IVAL</span><span class="plain">;</span>
<span class="plain">*</span><span class="identifier">v2</span><span class="plain"> = </span><span class="identifier">ID</span><span class="plain">;</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Glob (I7/%s): %S\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">clue</span><span class="plain">, </span><span class="identifier">glob</span><span class="plain">);</span>
<span class="identifier">glob_count</span><span class="plain">++;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::text_value</span><span class="plain">(</span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v2</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="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">text_storage</span><span class="plain"> = </span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">);</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">text_storage</span><span class="plain">, </span><span class="identifier">text</span><span class="plain">);</span>
<span class="plain">*</span><span class="identifier">v1</span><span class="plain"> = </span><span class="identifier">LITERAL_TEXT_IVAL</span><span class="plain">;</span>
<span class="plain">*</span><span class="identifier">v2</span><span class="plain"> = </span><span class="identifier">ID</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Emit::glob_count</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">glob_count</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::real_value</span><span class="plain">(</span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v2</span><span class="plain">, </span><span class="reserved">double</span><span class="plain"> </span><span class="identifier">g</span><span class="plain">) {</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">g</span><span class="plain"> &gt; 0) </span><span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="string">"+"</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="string">"%g"</span><span class="plain">, </span><span class="identifier">g</span><span class="plain">);</span>
<span class="plain">*</span><span class="identifier">v1</span><span class="plain"> = </span><span class="identifier">REAL_IVAL</span><span class="plain">;</span>
<span class="plain">*</span><span class="identifier">v2</span><span class="plain"> = </span><span class="identifier">ID</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::real_value_from_text</span><span class="plain">(</span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v2</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">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">);</span>
<span class="identifier">LOOP_THROUGH_TEXT</span><span class="plain">(</span><span class="identifier">pos</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">Str::get</span><span class="plain">(</span><span class="identifier">pos</span><span class="plain">) != </span><span class="character">'$'</span><span class="plain">)</span>
<span class="identifier">PUT_TO</span><span class="plain">(</span><span class="identifier">glob_storage</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="plain">*</span><span class="identifier">v1</span><span class="plain"> = </span><span class="identifier">REAL_IVAL</span><span class="plain">;</span>
<span class="plain">*</span><span class="identifier">v2</span><span class="plain"> = </span><span class="identifier">ID</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::dword_value</span><span class="plain">(</span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v2</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob</span><span class="plain">) {</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">);</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="identifier">glob</span><span class="plain">);</span>
<span class="plain">*</span><span class="identifier">v1</span><span class="plain"> = </span><span class="identifier">DWORD_IVAL</span><span class="plain">;</span>
<span class="plain">*</span><span class="identifier">v2</span><span class="plain"> = </span><span class="identifier">ID</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::plural_dword_value</span><span class="plain">(</span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">inter_t</span><span class="plain"> *</span><span class="identifier">v2</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob</span><span class="plain">) {</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">glob_storage</span><span class="plain"> = </span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID</span><span class="plain">);</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">glob_storage</span><span class="plain">, </span><span class="identifier">glob</span><span class="plain">);</span>
<span class="plain">*</span><span class="identifier">v1</span><span class="plain"> = </span><span class="identifier">PDWORD_IVAL</span><span class="plain">;</span>
<span class="plain">*</span><span class="identifier">v2</span><span class="plain"> = </span><span class="identifier">ID</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::intervention</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">stage</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">segment</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">part</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">i6</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">seg</span><span class="plain">) {</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID1</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID1</span><span class="plain">), </span><span class="identifier">segment</span><span class="plain">);</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID2</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID2</span><span class="plain">), </span><span class="identifier">part</span><span class="plain">);</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID3</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID3</span><span class="plain">), </span><span class="identifier">i6</span><span class="plain">);</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ID4</span><span class="plain"> = </span><span class="identifier">Inter::create_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::get_text</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ID4</span><span class="plain">), </span><span class="identifier">seg</span><span class="plain">);</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">ref</span><span class="plain"> = </span><span class="identifier">Inter::create_ref</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">());</span>
<span class="identifier">Inter::set_ref</span><span class="plain">(</span><span class="functiontext">Emit::repository</span><span class="plain">(), </span><span class="identifier">ref</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) </span><span class="identifier">current_sentence</span><span class="plain">);</span>
<span class="functiontext">Emit::guard</span><span class="plain">(</span><span class="identifier">Inter::Link::new</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">, (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="identifier">stage</span><span class="plain">, </span><span class="identifier">ID1</span><span class="plain">, </span><span class="identifier">ID2</span><span class="plain">, </span><span class="identifier">ID3</span><span class="plain">, </span><span class="identifier">ID4</span><span class="plain">, </span><span class="identifier">ref</span><span class="plain">, </span><span class="functiontext">Emit::baseline</span><span class="plain">(</span><span class="identifier">default_bookmark</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Emit::new_cip is used in <a href="#SP4">&#167;4</a>.</p>
<p class="endnote">The function Emit::begin_position is used in 17/ts (<a href="17-ts.html#SP11">&#167;11</a>).</p>
<p class="endnote">The function Emit::push_code_position is used in <a href="#SP4">&#167;4</a>, 17/ts (<a href="17-ts.html#SP11">&#167;11</a>).</p>
<p class="endnote">The function Emit::level is used in <a href="#SP4">&#167;4</a>, 12/dtd (<a href="12-dtd.html#SP16">&#167;16</a>), 12/cdp (<a href="12-cdp.html#SP2_1_6_1">&#167;2.1.6.1</a>, <a href="12-cdp.html#SP2_1_6_1_2_3_5">&#167;2.1.6.1.2.3.5</a>, <a href="12-cdp.html#SP2_1_6_1_2_3_3_1">&#167;2.1.6.1.2.3.3.1</a>, <a href="12-cdp.html#SP2_1_6_1_2_6">&#167;2.1.6.1.2.6</a>), 25/ci (<a href="25-ci.html#SP3_2_3">&#167;3.2.3</a>, <a href="25-ci.html#SP3_2_3_4_1">&#167;3.2.3.4.1</a>), 25/cp (<a href="25-cp.html#SP5">&#167;5</a>, <a href="25-cp.html#SP5_4_5">&#167;5.4.5</a>).</p>
<p class="endnote">The function Emit::set_level appears nowhere else.</p>
<p class="endnote">The function Emit::note_level is used in <a href="#SP4">&#167;4</a>.</p>
<p class="endnote">The function Emit::to_last_level is used in 27/is (<a href="27-is.html#SP30">&#167;30</a>, <a href="27-is.html#SP31_2">&#167;31.2</a>, <a href="27-is.html#SP31_8">&#167;31.8</a>).</p>
<p class="endnote">The function Emit::at is used in <a href="#SP4">&#167;4</a>.</p>
<p class="endnote">The function Emit::down is used in <a href="#SP4">&#167;4</a>, 4/am (<a href="4-am.html#SP35">&#167;35</a>, <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_1">&#167;19.1</a>, <a href="5-lp.html#SP19_2">&#167;19.2</a>, <a href="5-lp.html#SP19_3">&#167;19.3</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>, <a href="5-lp.html#SP19_2_2">&#167;19.2.2</a>, <a href="5-lp.html#SP27">&#167;27</a>, <a href="5-lp.html#SP27_2">&#167;27.2</a>, <a href="5-lp.html#SP27_3">&#167;27.3</a>, <a href="5-lp.html#SP27_3_1">&#167;27.3.1</a>, <a href="5-lp.html#SP27_3_2">&#167;27.3.2</a>, <a href="5-lp.html#SP27_3_3">&#167;27.3.3</a>, <a href="5-lp.html#SP27_3_4">&#167;27.3.4</a>), 5/ins (<a href="5-ins.html#SP29">&#167;29</a>), 5/nv (<a href="5-nv.html#SP12">&#167;12</a>, <a href="5-nv.html#SP16">&#167;16</a>), 6/bp (<a href="6-bp.html#SP25">&#167;25</a>, <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_2">&#167;15.2</a>, <a href="6-rlt.html#SP15_2_1">&#167;15.2.1</a>, <a href="6-rlt.html#SP15_2_4">&#167;15.2.4</a>, <a href="6-rlt.html#SP15_2_5">&#167;15.2.5</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_7">&#167;15.2.7</a>, <a href="6-rlt.html#SP15_2_8">&#167;15.2.8</a>, <a href="6-rlt.html#SP15_2_9">&#167;15.2.9</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#SP17">&#167;17</a>, <a href="6-rlt.html#SP29_1">&#167;29.1</a>, <a href="6-rlt.html#SP29_2">&#167;29.2</a>, <a href="6-rlt.html#SP29_3">&#167;29.3</a>, <a href="6-rlt.html#SP29_4">&#167;29.4</a>, <a href="6-rlt.html#SP29_5">&#167;29.5</a>, <a href="6-rlt.html#SP29_6">&#167;29.6</a>, <a href="6-rlt.html#SP30">&#167;30</a>), 6/nv (<a href="6-nv.html#SP17">&#167;17</a>, <a href="6-nv.html#SP18_1">&#167;18.1</a>, <a href="6-nv.html#SP18_2">&#167;18.2</a>, <a href="6-nv.html#SP18_1_2">&#167;18.1.2</a>, <a href="6-nv.html#SP18_1_2_1">&#167;18.1.2.1</a>, <a href="6-nv.html#SP18_1_2_2">&#167;18.1.2.2</a>, <a href="6-nv.html#SP19">&#167;19</a>), 8/ef (<a href="8-ef.html#SP19">&#167;19</a>), 12/ca (<a href="12-ca.html#SP5_2">&#167;5.2</a>), 12/dtd (<a href="12-dtd.html#SP7_1">&#167;7.1</a>, <a href="12-dtd.html#SP7_1_1">&#167;7.1.1</a>, <a href="12-dtd.html#SP7_1_2">&#167;7.1.2</a>, <a href="12-dtd.html#SP8">&#167;8</a>, <a href="12-dtd.html#SP9">&#167;9</a>, <a href="12-dtd.html#SP9_1">&#167;9.1</a>, <a href="12-dtd.html#SP11">&#167;11</a>, <a href="12-dtd.html#SP15">&#167;15</a>, <a href="12-dtd.html#SP16">&#167;16</a>, <a href="12-dtd.html#SP17">&#167;17</a>, <a href="12-dtd.html#SP18">&#167;18</a>, <a href="12-dtd.html#SP19">&#167;19</a>, <a href="12-dtd.html#SP20">&#167;20</a>, <a href="12-dtd.html#SP22">&#167;22</a>, <a href="12-dtd.html#SP23">&#167;23</a>, <a href="12-dtd.html#SP25">&#167;25</a>, <a href="12-dtd.html#SP26">&#167;26</a>, <a href="12-dtd.html#SP27">&#167;27</a>), 12/cdp (<a href="12-cdp.html#SP2_1_6">&#167;2.1.6</a>, <a href="12-cdp.html#SP2_1_6_1_2_2">&#167;2.1.6.1.2.2</a>, <a href="12-cdp.html#SP2_1_6_1_2_3_2">&#167;2.1.6.1.2.3.2</a>, <a href="12-cdp.html#SP2_1_6_1_2_3_7">&#167;2.1.6.1.2.3.7</a>, <a href="12-cdp.html#SP2_1_6_1_2_4">&#167;2.1.6.1.2.4</a>, <a href="12-cdp.html#SP2_1_6_1_2_5">&#167;2.1.6.1.2.5</a>, <a href="12-cdp.html#SP2_1_6_1_2_3_3_1">&#167;2.1.6.1.2.3.3.1</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_2">&#167;2.1.6.1.2.2.2</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_2_1">&#167;2.1.6.1.2.2.2.1</a>, <a href="12-cdp.html#SP2_1_6_1_7">&#167;2.1.6.1.7</a>, <a href="12-cdp.html#SP2_1_6_1_8">&#167;2.1.6.1.8</a>, <a href="
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::up is used in <a href="#SP4">&#167;4</a>, 4/am (<a href="4-am.html#SP35">&#167;35</a>, <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_1">&#167;19.1</a>, <a href="5-lp.html#SP19_2">&#167;19.2</a>, <a href="5-lp.html#SP19_3">&#167;19.3</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>, <a href="5-lp.html#SP19_2_2">&#167;19.2.2</a>, <a href="5-lp.html#SP27">&#167;27</a>, <a href="5-lp.html#SP27_2">&#167;27.2</a>, <a href="5-lp.html#SP27_3">&#167;27.3</a>, <a href="5-lp.html#SP27_3_1">&#167;27.3.1</a>, <a href="5-lp.html#SP27_3_2">&#167;27.3.2</a>, <a href="5-lp.html#SP27_3_3">&#167;27.3.3</a>, <a href="5-lp.html#SP27_3_4">&#167;27.3.4</a>), 5/ins (<a href="5-ins.html#SP29">&#167;29</a>), 5/nv (<a href="5-nv.html#SP12">&#167;12</a>, <a href="5-nv.html#SP16">&#167;16</a>), 6/bp (<a href="6-bp.html#SP25">&#167;25</a>, <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_2">&#167;15.2</a>, <a href="6-rlt.html#SP15_2_1">&#167;15.2.1</a>, <a href="6-rlt.html#SP15_2_4">&#167;15.2.4</a>, <a href="6-rlt.html#SP15_2_5">&#167;15.2.5</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_7">&#167;15.2.7</a>, <a href="6-rlt.html#SP15_2_8">&#167;15.2.8</a>, <a href="6-rlt.html#SP15_2_9">&#167;15.2.9</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#SP17">&#167;17</a>, <a href="6-rlt.html#SP29_1">&#167;29.1</a>, <a href="6-rlt.html#SP29_2">&#167;29.2</a>, <a href="6-rlt.html#SP29_3">&#167;29.3</a>, <a href="6-rlt.html#SP29_4">&#167;29.4</a>, <a href="6-rlt.html#SP29_5">&#167;29.5</a>, <a href="6-rlt.html#SP29_6">&#167;29.6</a>, <a href="6-rlt.html#SP30">&#167;30</a>), 6/nv (<a href="6-nv.html#SP17">&#167;17</a>, <a href="6-nv.html#SP18_1">&#167;18.1</a>, <a href="6-nv.html#SP18_2">&#167;18.2</a>, <a href="6-nv.html#SP18_1_2">&#167;18.1.2</a>, <a href="6-nv.html#SP18_1_2_1">&#167;18.1.2.1</a>, <a href="6-nv.html#SP18_1_2_2">&#167;18.1.2.2</a>, <a href="6-nv.html#SP19">&#167;19</a>), 8/ef (<a href="8-ef.html#SP19">&#167;19</a>), 12/is (<a href="12-is.html#SP8">&#167;8</a>), 12/ca (<a href="12-ca.html#SP5_2">&#167;5.2</a>), 12/dtd (<a href="12-dtd.html#SP7_1">&#167;7.1</a>, <a href="12-dtd.html#SP7_1_2">&#167;7.1.2</a>, <a href="12-dtd.html#SP8">&#167;8</a>, <a href="12-dtd.html#SP9">&#167;9</a>, <a href="12-dtd.html#SP9_1">&#167;9.1</a>, <a href="12-dtd.html#SP11">&#167;11</a>, <a href="12-dtd.html#SP15">&#167;15</a>, <a href="12-dtd.html#SP16">&#167;16</a>, <a href="12-dtd.html#SP17">&#167;17</a>, <a href="12-dtd.html#SP18">&#167;18</a>, <a href="12-dtd.html#SP19">&#167;19</a>, <a href="12-dtd.html#SP20">&#167;20</a>, <a href="12-dtd.html#SP22">&#167;22</a>, <a href="12-dtd.html#SP23">&#167;23</a>, <a href="12-dtd.html#SP25">&#167;25</a>, <a href="12-dtd.html#SP26">&#167;26</a>, <a href="12-dtd.html#SP27">&#167;27</a>), 12/cdp (<a href="12-cdp.html#SP2_1_6">&#167;2.1.6</a>, <a href="12-cdp.html#SP2_1_6_1">&#167;2.1.6.1</a>, <a href="12-cdp.html#SP2_1_6_1_2_2">&#167;2.1.6.1.2.2</a>, <a href="12-cdp.html#SP2_1_6_1_2_3_3">&#167;2.1.6.1.2.3.3</a>, <a href="12-cdp.html#SP2_1_6_1_2_3_7">&#167;2.1.6.1.2.3.7</a>, <a href="12-cdp.html#SP2_1_6_1_2_4">&#167;2.1.6.1.2.4</a>, <a href="12-cdp.html#SP2_1_6_1_2_5">&#167;2.1.6.1.2.5</a>, <a href="12-cdp.html#SP2_1_6_1_2_6">&#167;2.1.6.1.2.6</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_2">&#167;2.1.6.1.2.2.2</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_2_1">&#167;2.1.6.1.2.2.2.1</a>, <a href="12-cdp.html#SP2_1_6_1_7">&#167;2.1.6.1.7</a>, <a href="12-cdp.html#SP2
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::pop_code_position is used in 17/ts (<a href="17-ts.html#SP11">&#167;11</a>).</p>
<p class="endnote">The function Emit::code is used in 4/am (<a href="4-am.html#SP35">&#167;35</a>, <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_1">&#167;19.1</a>, <a href="5-lp.html#SP19_2">&#167;19.2</a>, <a href="5-lp.html#SP19_3">&#167;19.3</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>, <a href="5-lp.html#SP19_2_2">&#167;19.2.2</a>, <a href="5-lp.html#SP27">&#167;27</a>, <a href="5-lp.html#SP27_2">&#167;27.2</a>, <a href="5-lp.html#SP27_3_3">&#167;27.3.3</a>, <a href="5-lp.html#SP27_3_4">&#167;27.3.4</a>), 6/bp (<a href="6-bp.html#SP25">&#167;25</a>), 6/rlt (<a href="6-rlt.html#SP15_2">&#167;15.2</a>, <a href="6-rlt.html#SP15_2_4">&#167;15.2.4</a>, <a href="6-rlt.html#SP15_2_9">&#167;15.2.9</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_1">&#167;29.1</a>, <a href="6-rlt.html#SP29_2">&#167;29.2</a>, <a href="6-rlt.html#SP29_3">&#167;29.3</a>, <a href="6-rlt.html#SP29_4">&#167;29.4</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#SP18_1">&#167;18.1</a>, <a href="6-nv.html#SP18_2">&#167;18.2</a>, <a href="6-nv.html#SP18_1_2">&#167;18.1.2</a>, <a href="6-nv.html#SP18_1_2_1">&#167;18.1.2.1</a>, <a href="6-nv.html#SP18_1_2_2">&#167;18.1.2.2</a>, <a href="6-nv.html#SP19">&#167;19</a>), 8/ef (<a href="8-ef.html#SP19">&#167;19</a>), 12/dtd (<a href="12-dtd.html#SP23">&#167;23</a>, <a href="12-dtd.html#SP27">&#167;27</a>), 12/cdp (<a href="12-cdp.html#SP2_1_6">&#167;2.1.6</a>, <a href="12-cdp.html#SP2_1_6_1_2_3_3_1">&#167;2.1.6.1.2.3.3.1</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_10">&#167;2.1.6.1.10</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_4">&#167;2.1.6.1.2.2.4</a>, <a href="12-cdp.html#SP2_1_6_1_11">&#167;2.1.6.1.11</a>, <a href="12-cdp.html#SP2_1_6_1_14">&#167;2.1.6.1.14</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_6">&#167;2.1.6.1.2.2.6</a>, <a href="12-cdp.html#SP2_1_6_1_17">&#167;2.1.6.1.17</a>), 13/rsfk (<a href="13-rsfk.html#SP16_3">&#167;16.3</a>, <a href="13-rsfk.html#SP25_3">&#167;25.3</a>, <a href="13-rsfk.html#SP25_5">&#167;25.5</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>, <a href="13-rsfk.html#SP26">&#167;26</a>), 15/ma (<a href="15-ma.html#SP13">&#167;13</a>), 17/ts (<a href="17-ts.html#SP11_1">&#167;11.1</a>), 17/rs (<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>), 19/rsft (<a href="19-rsft.html#SP2">&#167;2</a>), 21/rl (<a href="21-rl.html#SP11">&#167;11</a>, <a href="21-rl.html#SP20">&#167;20</a>, <a href="21-rl.html#SP20_2">&#167;20.2</a>), 21/rb (<a href="21-rb.html#SP24_1_2">&#167;24.1.2</a>, <a href="21-rb.html#SP24_1_3">&#167;24.1.3</a>, <a href="21-rb.html#SP24_1_4">&#167;24.1.4</a>, <a href="21-rb.html#SP24_1_3_1">&#167;24.1.3.1</a>), 21/rl2 (<a href="21-rl2.html#SP14_1">&#167;14.1</a>), 21/fao (<a href="21-fao.html#SP10">&#167;10</a>), 21/sv (<a href="21-sv.html#SP3">&#167;3</a>), 22/prcd (<a href="22-prcd.html#SP10">&#167;10</a>, <a href="22-prcd.html#SP10_2">&#167;10.2</a>, <a href="22-prcd.html#SP10_3">&#167;10.3</a>, <a href="22-prcd.html#SP10_4">&#167;10.4</a>, <a href="22-prcd.html#SP10_5">&#167;10.5</a>, <a href="22-prcd.html#SP10_1_1_1">&#167;10.1.1.1</a>), 24/ch (<a href="24-ch.html#SP6">&#167;6</a>, <a href="24-ch.html#SP7">&#167;7</a>, <a href="24-ch.html#SP7_4">&#167;7.4</a>, <a href="24-ch.html#SP7_5">&#167;7.5</a>), 25/ci (<a href="25
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::evaluation is used in 26/iti (<a href="26-iti.html#SP9">&#167;9</a>), 27/is (<a href="27-is.html#SP31_9">&#167;31.9</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::reference is used in 13/ca (<a href="13-ca.html#SP1_10">&#167;1.10</a>), 27/is (<a href="27-is.html#SP31_6">&#167;31.6</a>, <a href="27-is.html#SP31_9">&#167;31.9</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::val is used in <a href="#SP4">&#167;4</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_2">&#167;19.2</a>, <a href="5-lp.html#SP19_3">&#167;19.3</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>, <a href="5-lp.html#SP19_2_2">&#167;19.2.2</a>, <a href="5-lp.html#SP27">&#167;27</a>, <a href="5-lp.html#SP27_2">&#167;27.2</a>, <a href="5-lp.html#SP27_3_3">&#167;27.3.3</a>, <a href="5-lp.html#SP27_3_4">&#167;27.3.4</a>), 5/nv (<a href="5-nv.html#SP12">&#167;12</a>), 6/rlt (<a href="6-rlt.html#SP15">&#167;15</a>, <a href="6-rlt.html#SP15_2_1">&#167;15.2.1</a>, <a href="6-rlt.html#SP15_2_4">&#167;15.2.4</a>, <a href="6-rlt.html#SP15_2_6">&#167;15.2.6</a>, <a href="6-rlt.html#SP15_2_7">&#167;15.2.7</a>, <a href="6-rlt.html#SP15_2_8">&#167;15.2.8</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_12_1">&#167;15.2.12.1</a>), 6/nv (<a href="6-nv.html#SP17">&#167;17</a>, <a href="6-nv.html#SP18_1">&#167;18.1</a>, <a href="6-nv.html#SP18_1_2">&#167;18.1.2</a>, <a href="6-nv.html#SP18_1_2_1">&#167;18.1.2.1</a>, <a href="6-nv.html#SP18_1_2_2">&#167;18.1.2.2</a>, <a href="6-nv.html#SP19">&#167;19</a>), 8/ef (<a href="8-ef.html#SP19">&#167;19</a>), 12/is (<a href="12-is.html#SP7_3">&#167;7.3</a>), 12/dtd (<a href="12-dtd.html#SP7">&#167;7</a>, <a href="12-dtd.html#SP8">&#167;8</a>, <a href="12-dtd.html#SP9">&#167;9</a>, <a href="12-dtd.html#SP9_1">&#167;9.1</a>, <a href="12-dtd.html#SP10">&#167;10</a>, <a href="12-dtd.html#SP15">&#167;15</a>, <a href="12-dtd.html#SP18">&#167;18</a>, <a href="12-dtd.html#SP19">&#167;19</a>, <a href="12-dtd.html#SP20">&#167;20</a>, <a href="12-dtd.html#SP22">&#167;22</a>, <a href="12-dtd.html#SP23">&#167;23</a>, <a href="12-dtd.html#SP25">&#167;25</a>, <a href="12-dtd.html#SP26">&#167;26</a>, <a href="12-dtd.html#SP27">&#167;27</a>), 12/cdp (<a href="12-cdp.html#SP2_1_6">&#167;2.1.6</a>, <a href="12-cdp.html#SP2_1_6_1_2_3_7">&#167;2.1.6.1.2.3.7</a>, <a href="12-cdp.html#SP2_1_6_1_2_5">&#167;2.1.6.1.2.5</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_10">&#167;2.1.6.1.10</a>, <a href="12-cdp.html#SP2_1_6_1_11">&#167;2.1.6.1.11</a>, <a href="12-cdp.html#SP2_1_6_1_14">&#167;2.1.6.1.14</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_6">&#167;2.1.6.1.2.2.6</a>, <a href="12-cdp.html#SP2_1_6_1_17">&#167;2.1.6.1.17</a>), 13/rsfk (<a href="13-rsfk.html#SP9">&#167;9</a>, <a href="13-rsfk.html#SP16_3">&#167;16.3</a>, <a href="13-rsfk.html#SP19">&#167;19</a>, <a href="13-rsfk.html#SP25_4_1">&#167;25.4.1</a>, <a href="13-rsfk.html#SP25_4_2">&#167;25.4.2</a>, <a href="13-rsfk.html#SP25_5">&#167;25.5</a>, <a href="13-rsfk.html#SP25_5_1">&#167;25.5.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>), 14/vh (<a href="14-vh.html#SP3">&#167;3</a>), 14/lv (<a href="14-lv.html#SP14_5">&#167;14.5</a>), 14/cn (<a href="14-cn.html#SP16">&#167;16</a>, <a href="14-cn.html#SP16_3">&#167;16.3</a>), 15/epv (<a href="15-epv.html#SP4">&#167;4</a>), 16/is (<a href="16-is.html#SP29">&#167;29</a>), 17/rs (<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>), 21/rl (<a href="21-rl.html#SP11_1">&#167;11.1</a>, <a href="21-rl.html#SP11_2">&#167;11.2</a>, <a href="21-rl.html#SP20">&#167;20</a>), 21/rb (<a href="21-rb.html#SP24_1_3">&#167;24.1.3</a>, <a href="21-rb.html#SP24_1_5">&#167;24.1.5</a>), 21/rl2 (<a href="21-rl2.html#SP14_1">&#167;14.1</a>), 21/fao (<a href="21-fao.html#SP10">&#167;10</a>), 21/sv (<a href="21-sv.html#SP3">&#167;3</a>), 21/ac (<a href="21-ac.html#SP14">&#167;14</a>), 22/prcd (<a href="22-prcd.html#SP10">&#167;10</a>, <a
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::val_nothing is used in 4/am (<a href="4-am.html#SP43">&#167;43</a>), 6/rlt (<a href="6-rlt.html#SP29_1">&#167;29.1</a>, <a href="6-rlt.html#SP29_2">&#167;29.2</a>, <a href="6-rlt.html#SP29_3">&#167;29.3</a>), 12/cdp (<a href="12-cdp.html#SP2_1_6_1_11">&#167;2.1.6.1.11</a>, <a href="12-cdp.html#SP2_1_6_1_18">&#167;2.1.6.1.18</a>).</p>
<p class="endnote">The function Emit::lab is used in 5/lp (<a href="5-lp.html#SP19">&#167;19</a>, <a href="5-lp.html#SP19_1">&#167;19.1</a>, <a href="5-lp.html#SP19_2">&#167;19.2</a>, <a href="5-lp.html#SP19_3">&#167;19.3</a>, <a href="5-lp.html#SP19_3_1">&#167;19.3.1</a>, <a href="5-lp.html#SP19_3_2">&#167;19.3.2</a>, <a href="5-lp.html#SP27_2">&#167;27.2</a>), 12/cdp (<a href="12-cdp.html#SP2_1_6_1_2_2_2_1">&#167;2.1.6.1.2.2.2.1</a>), 24/pb (<a href="24-pb.html#SP17">&#167;17</a>), 25/cii (<a href="25-cii.html#SP3_4_1">&#167;3.4.1</a>).</p>
<p class="endnote">The function Emit::ref appears nowhere else.</p>
2019-04-17 20:19:03 +03:00
<p class="endnote">The function Emit::val_iname is used in <a href="#SP4">&#167;4</a>, 4/am (<a href="4-am.html#SP30">&#167;30</a>, <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_2">&#167;19.3.2</a>, <a href="5-lp.html#SP19_2_1">&#167;19.2.1</a>), 5/ins (<a href="5-ins.html#SP29">&#167;29</a>), 5/nv (<a href="5-nv.html#SP12">&#167;12</a>, <a href="5-nv.html#SP16">&#167;16</a>), 6/bp (<a href="6-bp.html#SP25">&#167;25</a>, <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_2">&#167;15.2</a>, <a href="6-rlt.html#SP15_2_1">&#167;15.2.1</a>, <a href="6-rlt.html#SP15_2_5">&#167;15.2.5</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_7">&#167;15.2.7</a>, <a href="6-rlt.html#SP15_2_8">&#167;15.2.8</a>, <a href="6-rlt.html#SP15_2_9">&#167;15.2.9</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#SP17">&#167;17</a>, <a href="6-rlt.html#SP29_2">&#167;29.2</a>, <a href="6-rlt.html#SP29_3">&#167;29.3</a>, <a href="6-rlt.html#SP29_4">&#167;29.4</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_1">&#167;18.1</a>, <a href="6-nv.html#SP18_2">&#167;18.2</a>), 12/is (<a href="12-is.html#SP8">&#167;8</a>), 12/dtd (<a href="12-dtd.html#SP9">&#167;9</a>, <a href="12-dtd.html#SP9_1">&#167;9.1</a>, <a href="12-dtd.html#SP13">&#167;13</a>, <a href="12-dtd.html#SP16">&#167;16</a>, <a href="12-dtd.html#SP18">&#167;18</a>, <a href="12-dtd.html#SP19">&#167;19</a>, <a href="12-dtd.html#SP22">&#167;22</a>, <a href="12-dtd.html#SP26">&#167;26</a>), 12/cdp (<a href="12-cdp.html#SP2_1_6_1_2_5">&#167;2.1.6.1.2.5</a>, <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_2_2_5">&#167;2.1.6.1.2.2.5</a>, <a href="12-cdp.html#SP2_1_6_1_14">&#167;2.1.6.1.14</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_6">&#167;2.1.6.1.2.2.6</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_6_1">&#167;2.1.6.1.2.2.6.1</a>), 13/kak (<a href="13-kak.html#SP2">&#167;2</a>), 13/rsfk (<a href="13-rsfk.html#SP9">&#167;9</a>, <a href="13-rsfk.html#SP12">&#167;12</a>, <a href="13-rsfk.html#SP16_3">&#167;16.3</a>, <a href="13-rsfk.html#SP25_3">&#167;25.3</a>, <a href="13-rsfk.html#SP25_5">&#167;25.5</a>, <a href="13-rsfk.html#SP25_5_1">&#167;25.5.1</a>, <a href="13-rsfk.html#SP25_6_3">&#167;25.6.3</a>, <a href="13-rsfk.html#SP25_6_6">&#167;25.6.6</a>, <a href="13-rsfk.html#SP26">&#167;26</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>), 15/epv (<a href="15-epv.html#SP4">&#167;4</a>), 17/ts (<a href="17-ts.html#SP8">&#167;8</a>, <a href="17-ts.html#SP11_1">&#167;11.1</a>), 17/rs (<a href="17-rs.html#SP5">&#167;5</a>, <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>), 19/rsft (<a href="19-rsft.html#SP2">&#167;2</a>), 20/eq (<a href="20-eq.html#SP48">&#167;48</a>), 21/rl (<a href="21-rl.html#SP20">&#167;20</a>, <a href="21-rl.html#SP20_1">&#167;20.1</a>, <a href="21-rl.html#SP20_2">&#167;20.2</a>), 21/rb (<a href="21-rb.html#SP24_1_1">&#167;24.1.1</a>, <a href="21-rb.html#SP24_1_2">&#167;24.1.2</a>, <a href="21-rb.html#SP24_1_3">&#167;24.1.3</a>, <a href="21-rb.html#SP24_1_3_1">&#167;24.1.3.1</a>), 21/rl2 (<a href="21-rl2.html#SP14_1">&#167;14.1</a>), 21/fao (<a href="21-fao.html#SP10">&#167;10</a>), 21/sv (<a href="21-sv.html#SP3_1">&#167;3.1</a>, <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=
2019-03-17 14:40:57 +02:00
2019-04-17 20:19:03 +03:00
<p class="endnote">The function Emit::val_symbol is used in 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_1">&#167;19.1</a>, <a href="5-lp.html#SP19_2">&#167;19.2</a>, <a href="5-lp.html#SP19_3">&#167;19.3</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>, <a href="5-lp.html#SP19_2_2">&#167;19.2.2</a>, <a href="5-lp.html#SP27">&#167;27</a>, <a href="5-lp.html#SP27_2">&#167;27.2</a>, <a href="5-lp.html#SP27_3_3">&#167;27.3.3</a>, <a href="5-lp.html#SP27_3_4">&#167;27.3.4</a>), 5/ins (<a href="5-ins.html#SP29">&#167;29</a>), 6/bp (<a href="6-bp.html#SP25">&#167;25</a>), 6/rlt (<a href="6-rlt.html#SP15_2">&#167;15.2</a>, <a href="6-rlt.html#SP15_2_1">&#167;15.2.1</a>, <a href="6-rlt.html#SP15_2_4">&#167;15.2.4</a>, <a href="6-rlt.html#SP15_2_5">&#167;15.2.5</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_7">&#167;15.2.7</a>, <a href="6-rlt.html#SP15_2_8">&#167;15.2.8</a>, <a href="6-rlt.html#SP15_2_9">&#167;15.2.9</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#SP17">&#167;17</a>, <a href="6-rlt.html#SP29_1">&#167;29.1</a>, <a href="6-rlt.html#SP29_2">&#167;29.2</a>, <a href="6-rlt.html#SP29_3">&#167;29.3</a>, <a href="6-rlt.html#SP29_4">&#167;29.4</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#SP18_1">&#167;18.1</a>, <a href="6-nv.html#SP18_2">&#167;18.2</a>, <a href="6-nv.html#SP18_1_2_1">&#167;18.1.2.1</a>, <a href="6-nv.html#SP18_1_2_2">&#167;18.1.2.2</a>, <a href="6-nv.html#SP19">&#167;19</a>), 8/ef (<a href="8-ef.html#SP19">&#167;19</a>), 11/tr (<a href="11-tr.html#SP10">&#167;10</a>), 12/dtd (<a href="12-dtd.html#SP23">&#167;23</a>, <a href="12-dtd.html#SP25">&#167;25</a>, <a href="12-dtd.html#SP26">&#167;26</a>, <a href="12-dtd.html#SP27">&#167;27</a>), 12/cad (<a href="12-cad.html#SP7">&#167;7</a>), 12/cdp (<a href="12-cdp.html#SP2_1_6">&#167;2.1.6</a>, <a href="12-cdp.html#SP2_1_6_1_7">&#167;2.1.6.1.7</a>, <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>, <a href="12-cdp.html#SP2_1_6_1_2_2_4">&#167;2.1.6.1.2.2.4</a>, <a href="12-cdp.html#SP2_1_6_1_11">&#167;2.1.6.1.11</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_5">&#167;2.1.6.1.2.2.5</a>, <a href="12-cdp.html#SP2_1_6_1_13">&#167;2.1.6.1.13</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_6">&#167;2.1.6.1.2.2.6</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_6_1">&#167;2.1.6.1.2.2.6.1</a>, <a href="12-cdp.html#SP2_1_6_1_15">&#167;2.1.6.1.15</a>, <a href="12-cdp.html#SP2_1_6_1_17">&#167;2.1.6.1.17</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_7">&#167;2.1.6.1.2.2.7</a>), 13/kak (<a href="13-kak.html#SP2">&#167;2</a>), 13/rsfk (<a href="13-rsfk.html#SP16_3">&#167;16.3</a>, <a href="13-rsfk.html#SP25_1">&#167;25.1</a>, <a href="13-rsfk.html#SP25_2">&#167;25.2</a>, <a href="13-rsfk.html#SP25_3">&#167;25.3</a>, <a href="13-rsfk.html#SP25_4_1">&#167;25.4.1</a>, <a href="13-rsfk.html#SP25_4_2">&#167;25.4.2</a>, <a href="13-rsfk.html#SP25_5">&#167;25.5</a>, <a href="13-rsfk.html#SP25_5_1">&#167;25.5.1</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>, <a href="13-rsfk.html#SP26">&#167;26</a>), 14/lv (<a href="14-lv.html#SP14_1">&#167;14.1</a>, <a href="14-lv.html#SP14_5">&#167;14.5</
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::val_text is used in 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#SP27_3">&#167;27.3</a>, <a href="5-lp.html#SP27_3_1">&#167;27.3.1</a>, <a href="5-lp.html#SP27_3_2">&#167;27.3.2</a>, <a href="5-lp.html#SP27_3_3">&#167;27.3.3</a>), 6/rlt (<a href="6-rlt.html#SP15">&#167;15</a>), 6/nv (<a href="6-nv.html#SP18_2">&#167;18.2</a>, <a href="6-nv.html#SP19">&#167;19</a>), 8/ef (<a href="8-ef.html#SP19">&#167;19</a>), 13/rsfk (<a href="13-rsfk.html#SP25_3">&#167;25.3</a>, <a href="13-rsfk.html#SP26">&#167;26</a>), 17/tl (<a href="17-tl.html#SP14_2">&#167;14.2</a>), 17/ts (<a href="17-ts.html#SP11_1">&#167;11.1</a>), 17/rs (<a href="17-rs.html#SP7_2">&#167;7.2</a>), 19/rsft (<a href="19-rsft.html#SP2">&#167;2</a>), 21/rl (<a href="21-rl.html#SP20_1">&#167;20.1</a>, <a href="21-rl.html#SP20_2">&#167;20.2</a>), 21/fao (<a href="21-fao.html#SP10">&#167;10</a>), 24/ch (<a href="24-ch.html#SP7_4">&#167;7.4</a>), 25/ci (<a href="25-ci.html#SP4_2">&#167;4.2</a>), 25/cii (<a href="25-cii.html#SP3_5_8_1">&#167;3.5.8.1</a>), 26/uo (<a href="26-uo.html#SP21_2">&#167;21.2</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>, <a href="26-ts.html#SP11">&#167;11</a>, <a href="26-ts.html#SP12">&#167;12</a>), 27/is (<a href="27-is.html#SP31_9">&#167;31.9</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::val_char is used in 27/is (<a href="27-is.html#SP31_9">&#167;31.9</a>).</p>
<p class="endnote">The function Emit::val_real appears nowhere else.</p>
<p class="endnote">The function Emit::val_real_from_text is used in 27/is (<a href="27-is.html#SP31_9">&#167;31.9</a>).</p>
<p class="endnote">The function Emit::val_dword is used in 5/lp (<a href="5-lp.html#SP19_1">&#167;19.1</a>), 26/ts (<a href="26-ts.html#SP10">&#167;10</a>), 27/is (<a href="27-is.html#SP31_9">&#167;31.9</a>).</p>
2019-04-10 04:13:29 +03:00
<p class="endnote">The function Emit::ref_iname is used in <a href="#SP4">&#167;4</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_1">&#167;19.1</a>, <a href="5-lp.html#SP19_3_1">&#167;19.3.1</a>, <a href="5-lp.html#SP19_3_2">&#167;19.3.2</a>, <a href="5-lp.html#SP19_2_2">&#167;19.2.2</a>), 6/nv (<a href="6-nv.html#SP17">&#167;17</a>), 12/dtd (<a href="12-dtd.html#SP19">&#167;19</a>, <a href="12-dtd.html#SP22">&#167;22</a>), 14/lv (<a href="14-lv.html#SP14_3_2">&#167;14.3.2</a>), 17/rs (<a href="17-rs.html#SP6_2">&#167;6.2</a>), 21/rb (<a href="21-rb.html#SP24_1_3">&#167;24.1.3</a>), 22/prcd (<a href="22-prcd.html#SP10_3">&#167;10.3</a>), 25/ci (<a href="25-ci.html#SP3">&#167;3</a>, <a href="25-ci.html#SP3_2_3_1_1">&#167;3.2.3.1.1</a>, <a href="25-ci.html#SP3_2_3_3_1_3">&#167;3.2.3.3.1.3</a>), 25/cii (<a href="25-cii.html#SP3_1_1_4_10">&#167;3.1.1.4.10</a>, <a href="25-cii.html#SP3_5_8_2">&#167;3.5.8.2</a>, <a href="25-cii.html#SP3_5_8_3">&#167;3.5.8.3</a>), 25/cp (<a href="25-cp.html#SP5_2_1">&#167;5.2.1</a>), 26/lt (<a href="26-lt.html#SP4_1">&#167;4.1</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::ref_symbol is used in 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_2">&#167;19.2</a>, <a href="5-lp.html#SP19_3">&#167;19.3</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>, <a href="5-lp.html#SP19_2_2">&#167;19.2.2</a>, <a href="5-lp.html#SP27_3_3">&#167;27.3.3</a>), 6/nv (<a href="6-nv.html#SP18_2">&#167;18.2</a>), 12/dtd (<a href="12-dtd.html#SP9">&#167;9</a>, <a href="12-dtd.html#SP23">&#167;23</a>, <a href="12-dtd.html#SP27">&#167;27</a>), 12/cdp (<a href="12-cdp.html#SP2_1_6">&#167;2.1.6</a>, <a href="12-cdp.html#SP2_1_6_1_2_2">&#167;2.1.6.1.2.2</a>, <a href="12-cdp.html#SP2_1_6_1_2_3_7">&#167;2.1.6.1.2.3.7</a>, <a href="12-cdp.html#SP2_1_6_1_2_4">&#167;2.1.6.1.2.4</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_2">&#167;2.1.6.1.2.2.2</a>, <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_10">&#167;2.1.6.1.10</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_4">&#167;2.1.6.1.2.2.4</a>, <a href="12-cdp.html#SP2_1_6_1_11">&#167;2.1.6.1.11</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_5">&#167;2.1.6.1.2.2.5</a>, <a href="12-cdp.html#SP2_1_6_1_14">&#167;2.1.6.1.14</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_6">&#167;2.1.6.1.2.2.6</a>, <a href="12-cdp.html#SP2_1_6_1_17">&#167;2.1.6.1.17</a>), 13/rsfk (<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>), 17/rs (<a href="17-rs.html#SP6_2">&#167;6.2</a>), 21/rb (<a href="21-rb.html#SP24_1_1">&#167;24.1.1</a>, <a href="21-rb.html#SP24_1_3">&#167;24.1.3</a>), 21/sv (<a href="21-sv.html#SP3_1">&#167;3.1</a>, <a href="21-sv.html#SP3_2">&#167;3.2</a>), 24/lv (<a href="24-lv.html#SP29">&#167;29</a>, <a href="24-lv.html#SP43">&#167;43</a>), 24/ch (<a href="24-ch.html#SP7_1">&#167;7.1</a>, <a href="24-ch.html#SP7_2">&#167;7.2</a>, <a href="24-ch.html#SP7_4">&#167;7.4</a>, <a href="24-ch.html#SP7_4_1">&#167;7.4.1</a>), 25/cii (<a href="25-cii.html#SP1_2_1">&#167;1.2.1</a>, <a href="25-cii.html#SP3_5_1">&#167;3.5.1</a>, <a href="25-cii.html#SP3_5_3">&#167;3.5.3</a>), 25/cp (<a href="25-cp.html#SP5_3_5">&#167;5.3.5</a>), 26/rt (<a href="26-rt.html#SP4_1_3">&#167;4.1.3</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::cast is used in 13/rsfk (<a href="13-rsfk.html#SP25_4_1">&#167;25.4.1</a>, <a href="13-rsfk.html#SP25_4_2">&#167;25.4.2</a>).</p>
2019-03-17 14:40:57 +02:00
<p class="endnote">The function Emit::end_block is used in 26/rt (<a href="26-rt.html#SP4">&#167;4</a>, <a href="26-rt.html#SP4_1">&#167;4.1</a>).</p>
<p class="endnote">The function Emit::emitting_routine is used in 24/lv (<a href="24-lv.html#SP10">&#167;10</a>).</p>
<p class="endnote">The function Emit::begin_splat appears nowhere else.</p>
<p class="endnote">The function Emit::end_splat appears nowhere else.</p>
<p class="endnote">The function Emit::entire_splat appears nowhere else.</p>
<p class="endnote">The function Emit::entire_splat_code appears nowhere else.</p>
<p class="endnote">The function Emit::write_bytecode appears nowhere else.</p>
<p class="endnote">The function Emit::glob_value appears nowhere else.</p>
<p class="endnote">The function Emit::text_value is used in <a href="#SP4">&#167;4</a>.</p>
<p class="endnote">The function Emit::glob_count appears nowhere else.</p>
<p class="endnote">The function Emit::real_value appears nowhere else.</p>
<p class="endnote">The function Emit::real_value_from_text appears nowhere else.</p>
<p class="endnote">The function Emit::dword_value is used in <a href="#SP4">&#167;4</a>.</p>
<p class="endnote">The function Emit::plural_dword_value is used in <a href="#SP4">&#167;4</a>.</p>
<p class="endnote">The function Emit::intervention is used in 26/i6i (<a href="26-i6i.html#SP7">&#167;7</a>), 26/uo (<a href="26-uo.html#SP17">&#167;17</a>).</p>
<p class="endnote">The structure code_insertion_point is private to this section.</p>
<hr class="tocbar">
2019-04-17 20:19:03 +03:00
<ul class="toc"><li><a href="27-is.html">Back to 'Inter Schemas'</a></li><li><i>(This section ends Chapter 27: Bridge to Inter Module.)</i></li></ul><hr class="tocbar">
<!--End of weave-->
2019-03-17 14:40:57 +02:00
</body>
</html>