1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-02 16:38:08 +03:00
inform7/docs/core-module/27-ei.html
2020-03-11 00:21:09 +00:00

912 lines
218 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>27/cm</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body>
<!--Weave of '27/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">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="identifier">inter_tree</span><span class="plain"> *</span><span class="identifier">I7_generation_tree</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">inter_tree</span><span class="plain"> *</span><span class="functiontext">Emit::tree</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">I7_generation_tree</span><span class="plain">;</span>
<span class="plain">}</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_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain"> = </span><span class="identifier">Inter::Tree::new</span><span class="plain">();</span>
<span class="identifier">Packaging::initialise_state</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
<span class="identifier">Packaging::outside_all_packages</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
<span class="identifier">I7_generation_tree</span><span class="plain"> = </span><span class="identifier">I</span><span class="plain">;</span>
<span class="identifier">Packaging::incarnate</span><span class="plain">(</span><span class="identifier">Site::veneer_request</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">));</span>
<span class="identifier">Packaging::incarnate</span><span class="plain">(</span><span class="identifier">Packaging::get_module</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"generic"</span><span class="plain">)-&gt;</span><span class="identifier">the_package</span><span class="plain">);</span>
<span class="identifier">Packaging::incarnate</span><span class="plain">(</span><span class="identifier">Packaging::get_module</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"synoptic"</span><span class="plain">)-&gt;</span><span class="identifier">the_package</span><span class="plain">);</span>
<span class="identifier">Packaging::incarnate</span><span class="plain">(</span><span class="identifier">Packaging::get_module</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"standard_rules"</span><span class="plain">)-&gt;</span><span class="identifier">the_package</span><span class="plain">);</span>
<span class="functiontext">Hierarchy::establish</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
<span class="identifier">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="identifier">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">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="identifier">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">KU</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">save</span><span class="plain">);</span>
<span class="identifier">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="identifier">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="identifier">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">KUF</span><span class="plain">);</span>
<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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">save</span><span class="plain">);</span>
<span class="identifier">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="identifier">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="identifier">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">KTI</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">save</span><span class="plain">);</span>
<span class="identifier">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="identifier">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="identifier">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">KTS</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">save</span><span class="plain">);</span>
<span class="functiontext">FundamentalConstants::emit</span><span class="plain">(</span><span class="functiontext">Task::vm</span><span class="plain">());</span>
<span class="functiontext">NewVerbs::ConjugateVerbDefinitions</span><span class="plain">();</span>
<span class="functiontext">Hierarchy::find</span><span class="plain">(</span><span class="constant">INFORMLIBRARY_HL</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="identifier">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="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">val_iname</span><span class="plain">) {</span>
<span class="identifier">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter_home_of</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">symb</span><span class="plain"> = </span><span class="identifier">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="identifier">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="identifier">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">Inter::Bookmarks::tree</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Response::new</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">save</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>
<p class="endnote">The function Emit::tree is used in <a href="#SP3">&#167;3</a>, <a href="#SP4">&#167;4</a>, 4/am (<a href="4-am.html#SP30">&#167;30</a>, <a href="4-am.html#SP34_2">&#167;34.2</a>, <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>, <a href="5-lp.html#SP28">&#167;28</a>), 5/un (<a href="5-un.html#SP1">&#167;1</a>), 5/ins (<a href="5-ins.html#SP29">&#167;29</a>), 5/nv (<a href="5-nv.html#SP10">&#167;10</a>, <a href="5-nv.html#SP12">&#167;12</a>, <a href="5-nv.html#SP16">&#167;16</a>, <a href="5-nv.html#SP25">&#167;25</a>), 6/bp (<a href="6-bp.html#SP25">&#167;25</a>, <a href="6-bp.html#SP33">&#167;33</a>, <a href="6-bp.html#SP42">&#167;42</a>), 6/rlt (<a href="6-rlt.html#SP14">&#167;14</a>, <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_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_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">&#167;29</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">&#167;18</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#SP9">&#167;9</a>), 11/tr (<a href="11-tr.html#SP10">&#167;10</a>), 12/is (<a href="12-is.html#SP7">&#167;7</a>, <a href="12-is.html#SP7_3">&#167;7.3</a>, <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">&#167;7</a>, <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#SP10">&#167;10</a>, <a href="12-dtd.html#SP11">&#167;11</a>, <a href="12-dtd.html#SP13">&#167;13</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/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">&#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_2">&#167;2.1.6.1.2.3.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_5">&#167;2.1.6.1.2.3.5</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_6">&#167;2.1.6.1.2.6</a>, <a href="12-cdp.html#SP2_1_6_1_2_2_1">&#167;2.1.6.1.2.2.1</a>, <a href="12-cdp.html#SP2_1_6_1_4">&#167;2.1.6.1.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_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>, <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 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_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>, <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>, <a href="12-cdp.html#SP2_1_6_1_18">&#167;2.1.6.1.18</a>), 13/kak (<a href="13-kak.html#SP2">&#167;2</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_10">&#167;1.10</a>, <a href="13-ca.html#SP1_11">&#167;1.11</a>, <a href="13-ca.html#SP1_12">&#167;1.12</a>, <a href="13-ca.html#SP1_13">&#167;1.13</a>), 13/rsfk (<a href="13-rsfk.html#SP4">&#167;4</a>, <a href="13-rsfk.html#SP5">&#167;5</a>, <a href="13-rsfk.html#SP7">&#167;7</a>, <a href="13-rsfk.html#SP9">&#167;9</a>, <a href="13-rsfk.html#SP12">&#167;12</a>, <a href="13-rsfk.html#SP16_3">&#167;16.3</a>, <a href="13-rsfk.html#SP19">&#167;19</a>, <a href="13-rsfk.html#SP24">&#167;24</a>, <a href="13-rsfk.html#SP24_1">&#167;24.1</a>, <a href="13-rsfk.html#SP24_2">&#167;24.2</a>, <a href="13-rsfk.html#SP24_3">&#167;24.3</a>, <a href="13-rsfk.html#SP24_4_1">&#167;24.4.1</a>, <a href="13-rsfk.html#SP24_4_2">&#167;24.4.2</a>, <a href="13-rsfk.html#SP24_5">&#167;24.5</a>, <a href="13-rsfk.html#SP24_5_1">&#167;24.5.1</a>, <a href="13-rsfk.html#SP24_6_1">&#167;24.6.1</a>, <a href="13-rsfk.html#SP24_6_2">&#167;24.6.2</a>, <a href="13-rsfk.html#SP24_6_3">&#167;24.6.3</a>, <a href="13-rsfk.html#SP24_6_4">&#167;24.6.4</a>, <a href="13-rsfk.html#SP24_6_5">&#167;24.6.5</a>, <a href="13-rsfk.html#SP24_6_6">&#167;24.6.6</a>, <a href="13-rsfk.html#SP25">&#167;25</a>), 14/rv (<a href="14-rv.html#SP24_3">&#167;24.3</a>), 14/lv (<a href="14-lv.html#SP14_1">&#167;14.1</a>, <a href="14-lv.html#SP14_3">&#167;14.3</a>, <a href="14-lv.html#SP14_3_2">&#167;14.3.2</a>, <a href="14-lv.html#SP14_4">&#167;14.4</a>, <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_1">&#167;16.1</a>, <a href="14-cn.html#SP16_2">&#167;16.2</a>, <a href="14-cn.html#SP16_3">&#167;16.3</a>), 14/cfs (<a href="14-cfs.html#SP7">&#167;7</a>, <a href="14-cfs.html#SP8">&#167;8</a>), 15/pr (<a href="15-pr.html#SP21">&#167;21</a>), 15/ma (<a href="15-ma.html#SP13">&#167;13</a>), 15/epv (<a href="15-epv.html#SP4">&#167;4</a>), 16/is (<a href="16-is.html#SP29">&#167;29</a>), 17/tl (<a href="17-tl.html#SP14_2">&#167;14.2</a>), 17/ts (<a href="17-ts.html#SP8">&#167;8</a>, <a href="17-ts.html#SP11">&#167;11</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>, <a href="17-rs.html#SP7_3">&#167;7.3</a>, <a href="17-rs.html#SP12_1_1">&#167;12.1.1</a>), 19/tc (<a href="19-tc.html#SP8">&#167;8</a>), 19/rsft (<a href="19-rsft.html#SP1_2">&#167;1.2</a>, <a href="19-rsft.html#SP2">&#167;2</a>), 20/eq (<a href="20-eq.html#SP43">&#167;43</a>, <a href="20-eq.html#SP48">&#167;48</a>), 21/rl (<a href="21-rl.html#SP9">&#167;9</a>, <a href="21-rl.html#SP11">&#167;11</a>, <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>, <a href="21-rl.html#SP20_1">&#167;20.1</a>, <a href="21-rl.html#SP20_2">&#167;20.2</a>, <a href="21-rl.html#SP21">&#167;21</a>, <a href="21-rl.html#SP22_1">&#167;22.1</a>), 21/rb (<a href="21-rb.html#SP22">&#167;22</a>, <a href="21-rb.html#SP23">&#167;23</a>, <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_4">&#167;24.1.4</a>, <a href="21-rb.html#SP24_1_5">&#167;24.1.5</a>, <a href="21-rb.html#SP24_1_3_1">&#167;24.1.3.1</a>), 21/rl2 (<a href="21-rl2.html#SP14">&#167;14</a>, <a href="21-rl2.html#SP14_1">&#167;14.1</a>, <a href="21-rl2.html#SP20">&#167;20</a>), 21/fao (<a href="21-fao.html#SP10">&#167;10</a>), 21/sv (<a href="21-sv.html#SP3">&#167;3</a>, <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#SP8">&#167;8</a>, <a href="21-ac.html#SP14">&#167;14</a>), 22/cs (<a href="22-cs.html#SP8">&#167;8</a>), 22/ph (<a href="22-ph.html#SP13">&#167;13</a>), 22/pu (<a href="22-pu.html#SP18">&#167;18</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>), 22/pav (<a href="22-pav.html#SP9_2">&#167;9.2</a>), 22/tp (<a href="22-tp.html#SP8">&#167;8</a>, <a href="22-tp.html#SP10">&#167;10</a>), 22/tp2 (<a href="22-tp2.html#SP4">&#167;4</a>), 23/abc (<a href="23-abc.html#SP1">&#167;1</a>), 24/lv (<a href="24-lv.html#SP10">&#167;10</a>, <a href="24-lv.html#SP28">&#167;28</a>, <a href="24-lv.html#SP29">&#167;29</a>, <a href="24-lv.html#SP41">&#167;41</a>, <a href="24-lv.html#SP43">&#167;43</a>, <a href="24-lv.html#SP45">&#167;45</a>, <a href="24-lv.html#SP47">&#167;47</a>), 24/pb (<a href="24-pb.html#SP14">&#167;14</a>, <a href="24-pb.html#SP17">&#167;17</a>), 24/ch (<a href="24-ch.html#SP3">&#167;3</a>, <a href="24-ch.html#SP3_1">&#167;3.1</a>, <a href="24-ch.html#SP4">&#167;4</a>, <a href="24-ch.html#SP6">&#167;6</a>, <a href="24-ch.html#SP7">&#167;7</a>, <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_3">&#167;7.3</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>, <a href="24-ch.html#SP7_5">&#167;7.5</a>, <a href="24-ch.html#SP8">&#167;8</a>), 25/ci (<a href="25-ci.html#SP3">&#167;3</a>, <a href="25-ci.html#SP3_2_3">&#167;3.2.3</a>, <a href="25-ci.html#SP3_2_3_2">&#167;3.2.3.2</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">&#167;3.2.3.3</a>, <a href="25-ci.html#SP3_2_3_6">&#167;3.2.3.6</a>, <a href="25-ci.html#SP3_2_3_4_1">&#167;3.2.3.4.1</a>, <a href="25-ci.html#SP3_2_3_3_1_2">&#167;3.2.3.3.1.2</a>, <a href="25-ci.html#SP3_2_3_4_1_1">&#167;3.2.3.4.1.1</a>, <a href="25-ci.html#SP3_2_3_3_1_2_1">&#167;3.2.3.3.1.2.1</a>, <a href="25-ci.html#SP3_2_3_3_1_3">&#167;3.2.3.3.1.3</a>, <a href="25-ci.html#SP4_2">&#167;4.2</a>), 25/ciac (<a href="25-ciac.html#SP2">&#167;2</a>, <a href="25-ciac.html#SP2_1">&#167;2.1</a>), 25/cii (<a href="25-cii.html#SP1_2_1">&#167;1.2.1</a>, <a href="25-cii.html#SP2">&#167;2</a>, <a href="25-cii.html#SP3_1">&#167;3.1</a>, <a href="25-cii.html#SP3_2_3">&#167;3.2.3</a>, <a href="25-cii.html#SP3_2_4">&#167;3.2.4</a>, <a href="25-cii.html#SP3_2_5">&#167;3.2.5</a>, <a href="25-cii.html#SP3_2_6">&#167;3.2.6</a>, <a href="25-cii.html#SP3_4_1">&#167;3.4.1</a>, <a href="25-cii.html#SP3_4_2">&#167;3.4.2</a>, <a href="25-cii.html#SP3_4_3">&#167;3.4.3</a>, <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_1_1_4_11">&#167;3.1.1.4.11</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>, <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>, <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>, <a href="25-cii.html#SP3_5_9">&#167;3.5.9</a>, <a href="25-cii.html#SP3_6_1">&#167;3.6.1</a>, <a href="25-cii.html#SP3_6_2">&#167;3.6.2</a>, <a href="25-cii.html#SP3_6_3">&#167;3.6.3</a>, <a href="25-cii.html#SP8">&#167;8</a>), 25/cp (<a href="25-cp.html#SP3_3_1">&#167;3.3.1</a>, <a href="25-cp.html#SP5">&#167;5</a>, <a href="25-cp.html#SP5_2_1">&#167;5.2.1</a>, <a href="25-cp.html#SP5_3_4">&#167;5.3.4</a>, <a href="25-cp.html#SP5_3_5">&#167;5.3.5</a>, <a href="25-cp.html#SP5_3_5_1">&#167;5.3.5.1</a>, <a href="25-cp.html#SP5_3_5_2">&#167;5.3.5.2</a>, <a href="25-cp.html#SP5_3_5_3">&#167;5.3.5.3</a>, <a href="25-cp.html#SP5_4_3">&#167;5.4.3</a>, <a href="25-cp.html#SP5_4_4">&#167;5.4.4</a>, <a href="25-cp.html#SP5_4_5">&#167;5.4.5</a>, <a href="25-cp.html#SP6">&#167;6</a>), 26/fc (<a href="26-fc.html#SP1">&#167;1</a>, <a href="26-fc.html#SP2">&#167;2</a>), 26/uo (<a href="26-uo.html#SP21_1">&#167;21.1</a>, <a href="26-uo.html#SP21_2">&#167;21.2</a>, <a href="26-uo.html#SP23">&#167;23</a>), 26/lt (<a href="26-lt.html#SP4_1">&#167;4.1</a>), 26/ct (<a href="26-ct.html#SP7">&#167;7</a>), 26/rt (<a href="26-rt.html#SP3">&#167;3</a>, <a href="26-rt.html#SP4">&#167;4</a>, <a href="26-rt.html#SP4_1">&#167;4.1</a>, <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>, <a href="26-rt.html#SP4_1_5">&#167;4.1.5</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/hr (<a href="27-hr.html#SP4">&#167;4</a>), 27/cm (<a href="27-cm.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Emit::begin is used in 1/htc (<a href="1-htc.html#SP2_2">&#167;2.2</a>).</p>
<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="SP3"></a><b>&#167;3. </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_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain"> = </span><span class="functiontext">Emit::tree</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::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::Tree::warehouse</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">), </span><span class="identifier">Inter::Tree::root_package</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">));</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::Warehouse::get_text</span><span class="plain">(</span><span class="identifier">Inter::Tree::warehouse</span><span class="plain">(</span><span class="identifier">I</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::Tree::global_scope</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"target_I6"</span><span class="plain">);</span>
<span class="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Pragma::new</span><span class="plain">(</span><span class="identifier">Site::pragmas</span><span class="plain">(</span><span class="identifier">I</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="identifier">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">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter_home_of</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">symbol</span><span class="plain"> = </span><span class="identifier">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::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::Tree::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())));</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::Warehouse::get_text</span><span class="plain">(</span><span class="identifier">Inter::Tree::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Append::new</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">save</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">text_stream</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="reserved">return</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::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">LOG</span><span class="plain">(</span><span class="string">"Holding %S\</span><span class="plain">n</span><span class="string">"</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="identifier">Produce::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="identifier">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain"> = </span><span class="functiontext">Emit::tree</span><span class="plain">();</span>
<span class="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">Site::holdings</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">Site::holdings</span><span class="plain">(</span><span class="identifier">I</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">Site::holdings</span><span class="plain">(</span><span class="identifier">I</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Site::holdings</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">)), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="identifier">Produce::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="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::kind</span><span class="plain">(</span><span class="identifier">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="identifier">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>
<span class="identifier">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter_home_of</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">);</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">);</span>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Kind::new</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">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">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter_home_of</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_name</span><span class="plain"> = </span><span class="identifier">Produce::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="identifier">Produce::kind_to_symbol</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Variable::new</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()),</span>
<span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::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>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">save</span><span class="plain">);</span>
<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::property</span><span class="plain">(</span><span class="identifier">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">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter_home_of</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_name</span><span class="plain"> = </span><span class="identifier">Produce::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="identifier">Produce::kind_to_symbol</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Property::new</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()),</span>
<span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">prop_kind</span><span class="plain">), </span><span class="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</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::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="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">) {</span>
<span class="identifier">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter</span><span class="plain">(</span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">));</span>
<span class="identifier">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="identifier">Produce::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="identifier">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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">inst_iname</span><span class="plain">) {</span>
<span class="identifier">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="identifier">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">inst_iname</span><span class="plain">);</span>
<span class="identifier">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter_home_of</span><span class="plain">(</span><span class="identifier">inst_iname</span><span class="plain">);</span>
<span class="functiontext">Emit::basic_permission</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</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_bookmark</span><span class="plain"> *</span><span class="identifier">at</span><span class="plain">, </span><span class="identifier">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="identifier">Produce::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="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">E</span><span class="plain">);</span>
<span class="identifier">Produce::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="identifier">Produce::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="identifier">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter</span><span class="plain">(</span><span class="identifier">Kinds::Behaviour::package</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">));</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">owner_kind</span><span class="plain"> = </span><span class="identifier">Produce::kind_to_symbol</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::DefaultValue::new</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()),</span>
<span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">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="identifier">Produce::kind_to_symbol</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::PropertyValue::new</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()),</span>
<span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">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="identifier">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="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::PropertyValue::new</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()),</span>
<span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">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">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter_home_of</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">ID</span><span class="plain"> = </span><span class="identifier">Inter::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::Tree::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())));</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::Warehouse::get_text</span><span class="plain">(</span><span class="identifier">Inter::Tree::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::define_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_textual</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</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</span><span class="plain">(</span><span class="identifier">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">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter_home_of</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">inst_name</span><span class="plain"> = </span><span class="identifier">Produce::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="identifier">Produce::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="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Instance::new</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</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::named_generic_constant_xiname</span><span class="plain">(</span><span class="identifier">package_request</span><span class="plain"> *</span><span class="identifier">PR</span><span class="plain">, </span><span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">xiname</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::Symbols::to_data</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">Packaging::incarnate</span><span class="plain">(</span><span class="identifier">PR</span><span class="plain">), </span><span class="identifier">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">xiname</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::named_generic_constant</span><span class="plain">(</span><span class="identifier">name</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::named_generic_constant</span><span class="plain">(</span><span class="identifier">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">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter_home_of</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">con_name</span><span class="plain"> = </span><span class="identifier">Produce::define_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">save</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">inter_name</span><span class="plain"> *</span><span class="functiontext">Emit::named_numeric_constant</span><span class="plain">(</span><span class="identifier">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">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter_home_of</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">con_name</span><span class="plain"> = </span><span class="identifier">Produce::define_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">save</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="identifier">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="identifier">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">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">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter_home_of</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">con_name</span><span class="plain"> = </span><span class="identifier">Produce::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="identifier">Produce::text_value</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</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::named_pseudo_numeric_constant</span><span class="plain">(</span><span class="identifier">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">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter_home_of</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">con_name</span><span class="plain"> = </span><span class="identifier">Produce::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="identifier">Produce::kind_to_symbol</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</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::ds_named_pseudo_numeric_constant</span><span class="plain">(</span><span class="identifier">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">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter_home_of</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">con_name</span><span class="plain"> = </span><span class="identifier">Produce::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="identifier">Produce::kind_to_symbol</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">);</span>
<span class="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">save</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">packaging_state</span><span class="plain"> </span><span class="functiontext">Emit::named_late_array_begin</span><span class="plain">(</span><span class="identifier">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">packaging_state</span><span class="plain"> </span><span class="identifier">save</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">Produce::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="reserved">return</span><span class="plain"> </span><span class="identifier">save</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">packaging_state</span><span class="plain"> </span><span class="functiontext">Emit::named_byte_array_begin</span><span class="plain">(</span><span class="identifier">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">packaging_state</span><span class="plain"> </span><span class="identifier">save</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">Produce::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="reserved">return</span><span class="plain"> </span><span class="identifier">save</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">packaging_state</span><span class="plain"> </span><span class="functiontext">Emit::named_table_array_begin</span><span class="plain">(</span><span class="identifier">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">packaging_state</span><span class="plain"> </span><span class="identifier">save</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">Produce::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="reserved">return</span><span class="plain"> </span><span class="identifier">save</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">packaging_state</span><span class="plain"> </span><span class="functiontext">Emit::named_string_array_begin</span><span class="plain">(</span><span class="identifier">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">packaging_state</span><span class="plain"> </span><span class="identifier">save</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">Produce::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="reserved">return</span><span class="plain"> </span><span class="identifier">save</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">packaging_state</span><span class="plain"> </span><span class="functiontext">Emit::named_verb_array_begin</span><span class="plain">(</span><span class="identifier">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">packaging_state</span><span class="plain"> </span><span class="identifier">save</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">Produce::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="identifier">Produce::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="reserved">return</span><span class="plain"> </span><span class="identifier">save</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">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="identifier">packaging_state</span><span class="plain"> </span><span class="functiontext">Emit::sum_constant_begin</span><span class="plain">(</span><span class="identifier">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">packaging_state</span><span class="plain"> </span><span class="identifier">save</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">save</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">packaging_state</span><span class="plain"> </span><span class="functiontext">Emit::named_array_begin</span><span class="plain">(</span><span class="identifier">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">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter_home_of</span><span class="plain">(</span><span class="identifier">N</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">Produce::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="reserved">return</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::array_iname_entry</span><span class="plain">(</span><span class="identifier">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="identifier">Site::veneer_symbol</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">NOTHING_VSYMB</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="identifier">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_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</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">Inter::Bookmarks::tree</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">IBM</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>
<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>
<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>
<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>
<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="identifier">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_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</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">Inter::Bookmarks::tree</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">IBM</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="identifier">Produce::text_value</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::dword_value</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::plural_dword_value</span><span class="plain">(</span><span class="functiontext">Emit::tree</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::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::Tree::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())));</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::Warehouse::get_text</span><span class="plain">(</span><span class="identifier">Inter::Tree::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</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_bookmark</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_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</span><span class="plain"> = </span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">IBM</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="identifier">packaging_state</span><span class="plain"> </span><span class="identifier">save</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_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</span><span class="plain"> = </span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::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="identifier">Produce::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">IBM</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">IBM</span><span class="plain">, </span><span class="identifier">unchecked_interk</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">inter_tree_node</span><span class="plain"> *</span><span class="identifier">array_in_progress</span><span class="plain"> =</span>
<span class="identifier">Inter::Node::fill_3</span><span class="plain">(</span><span class="identifier">IBM</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">IBM</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">IBM</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">-&gt;</span><span class="identifier">W</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::Node::extend</span><span class="plain">(</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">-&gt;</span><span class="identifier">W</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">-&gt;</span><span class="identifier">W</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="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Defn::verify_construct</span><span class="plain">(</span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">array_in_progress</span><span class="plain">));</span>
<span class="identifier">Inter::Bookmarks::insert</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">array_in_progress</span><span class="plain">);</span>
<span class="functiontext">Emit::pull_array</span><span class="plain">();</span>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">save</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">inter_name</span><span class="plain"> *</span><span class="functiontext">Emit::named_iname_constant</span><span class="plain">(</span><span class="identifier">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_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
<span class="identifier">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter_home_of</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">con_name</span><span class="plain"> = </span><span class="identifier">Produce::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="identifier">Produce::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="identifier">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="identifier">Site::veneer_symbol</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">NOTHING_VSYMB</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">Inter::Bookmarks::tree</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">save</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_name</span><span class="plain"> *</span><span class="functiontext">Emit::named_numeric_constant_hex</span><span class="plain">(</span><span class="identifier">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">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter_home_of</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">con_name</span><span class="plain"> = </span><span class="identifier">Produce::define_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">Produce::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="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">save</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_name</span><span class="plain"> *</span><span class="functiontext">Emit::named_unchecked_constant_hex</span><span class="plain">(</span><span class="identifier">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">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter_home_of</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">con_name</span><span class="plain"> = </span><span class="identifier">Produce::define_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">Produce::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="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">save</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_name</span><span class="plain"> *</span><span class="functiontext">Emit::named_numeric_constant_signed</span><span class="plain">(</span><span class="identifier">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">packaging_state</span><span class="plain"> </span><span class="identifier">save</span><span class="plain"> = </span><span class="identifier">Packaging::enter_home_of</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">con_name</span><span class="plain"> = </span><span class="identifier">Produce::define_symbol</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">Produce::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="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_numerical</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())), </span><span class="identifier">NULL</span><span class="plain">));</span>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">save</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="comment">inter_bookmark current_inter_bookmark;</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">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::Warehouse::get_text</span><span class="plain">(</span><span class="identifier">Inter::Tree::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Comment::new</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="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">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::Warehouse::get_text</span><span class="plain">(</span><span class="identifier">Inter::Tree::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Comment::new</span><span class="plain">(</span><span class="identifier">Produce::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), (</span><span class="identifier">inter_t</span><span class="plain">) </span><span class="identifier">Produce::level</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::routine</span><span class="plain">(</span><span class="identifier">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_package</span><span class="plain"> *</span><span class="identifier">block</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::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="identifier">Produce::define_symbol</span><span class="plain">(</span><span class="identifier">rname</span><span class="plain">);</span>
<span class="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Constant::new_function</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()),</span>
<span class="identifier">Inter::SymbolsTables::id_from_IRS_and_symbol</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">AB_symbol</span><span class="plain">),</span>
<span class="identifier">block</span><span class="plain">,</span>
<span class="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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::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">Site::get_cir</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::new_local_symbol</span><span class="plain">(</span><span class="identifier">Site::get_cir</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::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::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">Inter::Tree::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">()), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())));</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::Warehouse::get_text</span><span class="plain">(</span><span class="identifier">Inter::Tree::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::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="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Local::new</span><span class="plain">(</span><span class="identifier">Produce::locals_bookmark</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Produce::locals_bookmark</span><span class="plain">(</span><span class="functiontext">Emit::tree</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::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="identifier">Produce::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="identifier">Produce::kind_to_symbol</span><span class="plain">(</span><span class="identifier">T</span><span class="plain">);</span>
<span class="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Cast::new</span><span class="plain">(</span><span class="identifier">Produce::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::level</span><span class="plain">(</span><span class="functiontext">Emit::tree</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::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_warehouse</span><span class="plain"> *</span><span class="identifier">warehouse</span><span class="plain"> = </span><span class="identifier">Inter::Tree::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</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::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())));</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::Warehouse::get_text</span><span class="plain">(</span><span class="identifier">Inter::Tree::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</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::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())));</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::Warehouse::get_text</span><span class="plain">(</span><span class="identifier">Inter::Tree::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</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::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())));</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::Warehouse::get_text</span><span class="plain">(</span><span class="identifier">Inter::Tree::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</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::Warehouse::create_text</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())));</span>
<span class="identifier">Str::copy</span><span class="plain">(</span><span class="identifier">Inter::Warehouse::get_text</span><span class="plain">(</span><span class="identifier">Inter::Tree::warehouse</span><span class="plain">(</span><span class="functiontext">Emit::tree</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::Warehouse::create_ref</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">);</span>
<span class="identifier">Inter::Warehouse::set_ref</span><span class="plain">(</span><span class="identifier">warehouse</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="identifier">Inter::Warehouse::attribute_resource</span><span class="plain">(</span><span class="identifier">warehouse</span><span class="plain">, </span><span class="identifier">ref</span><span class="plain">, </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">())));</span>
<span class="identifier">Produce::guard</span><span class="plain">(</span><span class="identifier">Inter::Link::new</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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="identifier">Produce::baseline</span><span class="plain">(</span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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::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::main_render_unique is used in 13/rsfk (<a href="13-rsfk.html#SP24">&#167;24</a>).</p>
<p class="endnote">The function Emit::holding_symbol is used in 13/rsfk (<a href="13-rsfk.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function Emit::kind is used in 13/rsfk (<a href="13-rsfk.html#SP22">&#167;22</a>, <a href="13-rsfk.html#SP24">&#167;24</a>).</p>
<p class="endnote">The function Emit::kind_inner is used in <a href="#SP2">&#167;2</a>.</p>
<p class="endnote">The function Emit::variable is used in 5/nv (<a href="5-nv.html#SP16">&#167;16</a>).</p>
<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/fc (<a href="26-fc.html#SP2">&#167;2</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_xiname is used in 21/rl (<a href="21-rl.html#SP9">&#167;9</a>).</p>
<p class="endnote">The function Emit::named_generic_constant appears nowhere else.</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#SP24">&#167;24</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/fc (<a href="26-fc.html#SP1">&#167;1</a>), 26/uo (<a href="26-uo.html#SP21">&#167;21</a>, <a href="26-uo.html#SP23">&#167;23</a>).</p>
<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>
<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>
<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>
<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>
<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>), 21/fao (<a href="21-fao.html#SP10">&#167;10</a>).</p>
<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/fc (<a href="26-fc.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Emit::named_unchecked_constant_hex is used in 26/fc (<a href="26-fc.html#SP1">&#167;1</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/fc (<a href="26-fc.html#SP1">&#167;1</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#SP24_1">&#167;24.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>
<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::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::cast is used in 13/rsfk (<a href="13-rsfk.html#SP24_4_1">&#167;24.4.1</a>, <a href="13-rsfk.html#SP24_4_2">&#167;24.4.2</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 dval_written is private to this section.</p>
<p class="endnote">The structure nascent_array is accessed in 5/lp, 5/un, 7/ns, 7/oaf, 7/rs, 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="SP4"></a><b>&#167;4. </b></p>
<pre class="display">
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="functiontext">Emit::to_text</span><span class="plain">(</span><span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">)-&gt;</span><span class="identifier">symbol_name</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::holster</span><span class="plain">(</span><span class="identifier">value_holster</span><span class="plain"> *</span><span class="identifier">VH</span><span class="plain">, </span><span class="identifier">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">Holsters::data_acceptable</span><span class="plain">(</span><span class="identifier">VH</span><span class="plain">)) {</span>
<span class="identifier">inter_t</span><span class="plain"> </span><span class="identifier">v1</span><span class="plain"> = 0, </span><span class="identifier">v2</span><span class="plain"> = 0;</span>
<span class="functiontext">Emit::to_ival</span><span class="plain">(&amp;</span><span class="identifier">v1</span><span class="plain">, &amp;</span><span class="identifier">v2</span><span class="plain">, </span><span class="identifier">iname</span><span class="plain">);</span>
<span class="identifier">Holsters::holster_pair</span><span class="plain">(</span><span class="identifier">VH</span><span class="plain">, </span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">v2</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::symbol_to_ival</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">S</span><span class="plain">) {</span>
<span class="identifier">inter_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</span><span class="plain"> = </span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain">) { </span><span class="identifier">Inter::Symbols::to_data</span><span class="plain">(</span><span class="identifier">Inter::Bookmarks::tree</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">val1</span><span class="plain">, </span><span class="identifier">val2</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="plain">*</span><span class="identifier">val1</span><span class="plain"> = </span><span class="identifier">LITERAL_IVAL</span><span class="plain">; *</span><span class="identifier">val2</span><span class="plain"> = 0;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::to_ival</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_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
<span class="identifier">inter_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</span><span class="plain"> = </span><span class="identifier">Packaging::at</span><span class="plain">(</span><span class="functiontext">Emit::tree</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">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain">) { </span><span class="identifier">Inter::Symbols::to_data</span><span class="plain">(</span><span class="identifier">Inter::Bookmarks::tree</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">val1</span><span class="plain">, </span><span class="identifier">val2</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="plain">*</span><span class="identifier">val1</span><span class="plain"> = </span><span class="identifier">LITERAL_IVAL</span><span class="plain">; *</span><span class="identifier">val2</span><span class="plain"> = 0;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::to_ival_in_context</span><span class="plain">(</span><span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">context</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_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
<span class="identifier">package_request</span><span class="plain"> *</span><span class="identifier">PR</span><span class="plain"> = </span><span class="identifier">InterNames::location</span><span class="plain">(</span><span class="identifier">context</span><span class="plain">);</span>
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="identifier">Packaging::incarnate</span><span class="plain">(</span><span class="identifier">PR</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">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">S</span><span class="plain">) { </span><span class="identifier">Inter::Symbols::to_data</span><span class="plain">(</span><span class="identifier">Inter::Packages::tree</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">), </span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">S</span><span class="plain">, </span><span class="identifier">val1</span><span class="plain">, </span><span class="identifier">val2</span><span class="plain">); </span><span class="reserved">return</span><span class="plain">; }</span>
<span class="plain">*</span><span class="identifier">val1</span><span class="plain"> = </span><span class="identifier">LITERAL_IVAL</span><span class="plain">; *</span><span class="identifier">val2</span><span class="plain"> = 0;</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Emit::defined</span><span class="plain">(</span><span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">iname</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="identifier">inter_symbol</span><span class="plain"> *</span><span class="identifier">S</span><span class="plain"> = </span><span class="identifier">InterNames::to_symbol</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Symbols::is_defined</span><span class="plain">(</span><span class="identifier">S</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">ival_emission</span><span class="plain"> {</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">value_holster</span><span class="plain"> </span><span class="identifier">emission_VH</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">packaging_state</span><span class="plain"> </span><span class="identifier">saved_PS</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">ival_emission</span><span class="plain">;</span>
<span class="reserved">ival_emission</span><span class="plain"> </span><span class="functiontext">Emit::begin_ival_emission</span><span class="plain">(</span><span class="identifier">inter_name</span><span class="plain"> *</span><span class="identifier">iname</span><span class="plain">) {</span>
<span class="reserved">ival_emission</span><span class="plain"> </span><span class="identifier">IE</span><span class="plain">;</span>
<span class="identifier">IE</span><span class="element">.emission_VH</span><span class="plain"> = </span><span class="identifier">Holsters::new</span><span class="plain">(</span><span class="identifier">INTER_DATA_VHMODE</span><span class="plain">);</span>
<span class="identifier">IE</span><span class="element">.saved_PS</span><span class="plain"> = </span><span class="identifier">Packaging::enter_home_of</span><span class="plain">(</span><span class="identifier">iname</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">IE</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="identifier">value_holster</span><span class="plain"> *</span><span class="functiontext">Emit::ival_holster</span><span class="plain">(</span><span class="reserved">ival_emission</span><span class="plain"> *</span><span class="identifier">IE</span><span class="plain">) {</span>
<span class="reserved">return</span><span class="plain"> &amp;(</span><span class="identifier">IE</span><span class="plain">-</span><span class="element">&gt;emission_VH</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Emit::end_ival_emission</span><span class="plain">(</span><span class="reserved">ival_emission</span><span class="plain"> *</span><span class="identifier">IE</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">Holsters::unholster_pair</span><span class="plain">(&amp;(</span><span class="identifier">IE</span><span class="plain">-</span><span class="element">&gt;emission_VH</span><span class="plain">), </span><span class="identifier">v1</span><span class="plain">, </span><span class="identifier">v2</span><span class="plain">);</span>
<span class="identifier">Packaging::exit</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">(), </span><span class="identifier">IE</span><span class="plain">-</span><span class="element">&gt;saved_PS</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">package_request</span><span class="plain"> *</span><span class="functiontext">Emit::current_enclosure</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">Packaging::enclosure</span><span class="plain">(</span><span class="functiontext">Emit::tree</span><span class="plain">());</span>
<span class="plain">}</span>
<span class="identifier">packaging_state</span><span class="plain"> </span><span class="functiontext">Emit::unused_packaging_state</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">Packaging::stateless</span><span class="plain">();</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Emit::to_text is used in 15/vp (<a href="15-vp.html#SP3">&#167;3</a>), 27/hr (<a href="27-hr.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function Emit::holster is used in 13/rsfk (<a href="13-rsfk.html#SP4">&#167;4</a>), 14/rv (<a href="14-rv.html#SP24_2">&#167;24.2</a>, <a href="14-rv.html#SP24_3">&#167;24.3</a>, <a href="14-rv.html#SP24_3_1">&#167;24.3.1</a>), 17/tl (<a href="17-tl.html#SP10">&#167;10</a>, <a href="17-tl.html#SP10_2_1">&#167;10.2.1</a>, <a href="17-tl.html#SP16">&#167;16</a>), 17/ts (<a href="17-ts.html#SP8">&#167;8</a>, <a href="17-ts.html#SP8_1">&#167;8.1</a>), 17/rs (<a href="17-rs.html#SP12">&#167;12</a>).</p>
<p class="endnote">The function Emit::symbol_to_ival is used in 13/rsfk (<a href="13-rsfk.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function Emit::to_ival is used in 13/rsfk (<a href="13-rsfk.html#SP5">&#167;5</a>).</p>
<p class="endnote">The function Emit::to_ival_in_context is used in 17/tl (<a href="17-tl.html#SP13">&#167;13</a>).</p>
<p class="endnote">The function Emit::defined is used in 13/rsfk (<a href="13-rsfk.html#SP24">&#167;24</a>).</p>
<p class="endnote">The function Emit::begin_ival_emission is used in 5/nv (<a href="5-nv.html#SP25">&#167;25</a>).</p>
<p class="endnote">The function Emit::ival_holster is used in 5/nv (<a href="5-nv.html#SP25">&#167;25</a>).</p>
<p class="endnote">The function Emit::end_ival_emission is used in 5/nv (<a href="5-nv.html#SP25">&#167;25</a>).</p>
<p class="endnote">The function Emit::current_enclosure is used in 17/ts (<a href="17-ts.html#SP8">&#167;8</a>, <a href="17-ts.html#SP8_1">&#167;8.1</a>), 18/lc (<a href="18-lc.html#SP5">&#167;5</a>), 25/cii (<a href="25-cii.html#SP8">&#167;8</a>).</p>
<p class="endnote">The function Emit::unused_packaging_state is used in 21/rb (<a href="21-rb.html#SP24_1">&#167;24.1</a>), 26/rt (<a href="26-rt.html#SP3">&#167;3</a>).</p>
<p class="endnote">The structure ival_emission is private to this section.</p>
<hr class="tocbar">
<ul class="toc"><li><a href="27-cm.html">Back to 'Compilation Modules'</a></li><li><i>(This section ends Chapter 27: Bridge to Inter Module.)</i></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>