1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-07-03 07:24:58 +03:00

Clarified connectors

This commit is contained in:
Graham Nelson 2019-08-04 13:04:42 +01:00
parent 4ad505c3fc
commit 1cf900beea
19 changed files with 193 additions and 187 deletions

View file

@ -36,7 +36,7 @@ but on others it's compiled into the body of an application. So:
<p class="inwebparagraph"></p>
<p class="endnote">The function main is used in 2/pt (<a href="2-pt.html#SP52">&#167;52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">&#167;3.1</a>), 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 3/rst (<a href="3-rst.html#SP6">&#167;6</a>), 4/am (<a href="4-am.html#SP26_1">&#167;26.1</a>), 8/ef (<a href="8-ef.html#SP26">&#167;26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">&#167;3.2</a>), 10/varc (<a href="10-varc.html#SP14">&#167;14</a>), 19/tb (<a href="19-tb.html#SP27">&#167;27</a>, <a href="19-tb.html#SP27_1">&#167;27.1</a>, <a href="19-tb.html#SP27_1_3">&#167;27.1.3</a>, <a href="19-tb.html#SP29">&#167;29</a>), 21/rl2 (<a href="21-rl2.html#SP23">&#167;23</a>), 26/uo (<a href="26-uo.html#SP11_1">&#167;11.1</a>), 27/hr (<a href="27-hr.html#SP5">&#167;5</a>), 27/cm (<a href="27-cm.html#SP1">&#167;1</a>), 1/ppl (<a href="1-ppl.html#SP5">&#167;5</a>), 2/res (<a href="2-res.html#SP1">&#167;1</a>), 4/fc (<a href="4-fc.html#SP1">&#167;1</a>), 2/hf (<a href="2-hf.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function main is used in 2/pt (<a href="2-pt.html#SP52">&#167;52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">&#167;3.1</a>), 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 2/cnn (<a href="2-cnn.html#SP1">&#167;1</a>), 3/rst (<a href="3-rst.html#SP6">&#167;6</a>), 4/am (<a href="4-am.html#SP26_1">&#167;26.1</a>), 8/ef (<a href="8-ef.html#SP26">&#167;26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">&#167;3.2</a>), 10/varc (<a href="10-varc.html#SP14">&#167;14</a>), 19/tb (<a href="19-tb.html#SP27">&#167;27</a>, <a href="19-tb.html#SP27_1">&#167;27.1</a>, <a href="19-tb.html#SP27_1_3">&#167;27.1.3</a>, <a href="19-tb.html#SP29">&#167;29</a>), 21/rl2 (<a href="21-rl2.html#SP23">&#167;23</a>), 26/uo (<a href="26-uo.html#SP11_1">&#167;11.1</a>), 27/hr (<a href="27-hr.html#SP5">&#167;5</a>), 27/cm (<a href="27-cm.html#SP1">&#167;1</a>), 1/ppl (<a href="1-ppl.html#SP5">&#167;5</a>), 2/res (<a href="2-res.html#SP1">&#167;1</a>), 4/fc (<a href="4-fc.html#SP1">&#167;1</a>), 2/hf (<a href="2-hf.html#SP6">&#167;6</a>).</p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>As a matter of policy, no module is allowed to start or stop the foundation
module, not even the mighty core; so we take care of that with one more

View file

@ -43,7 +43,7 @@ when they want I7 to run.
<p class="inwebparagraph"></p>
<p class="endnote">The function main is used in 2/pt (<a href="2-pt.html#SP52">&#167;52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">&#167;3.1</a>), 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 3/rst (<a href="3-rst.html#SP6">&#167;6</a>), 4/am (<a href="4-am.html#SP26_1">&#167;26.1</a>), 8/ef (<a href="8-ef.html#SP26">&#167;26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">&#167;3.2</a>), 10/varc (<a href="10-varc.html#SP14">&#167;14</a>), 19/tb (<a href="19-tb.html#SP27">&#167;27</a>, <a href="19-tb.html#SP27_1">&#167;27.1</a>, <a href="19-tb.html#SP27_1_3">&#167;27.1.3</a>, <a href="19-tb.html#SP29">&#167;29</a>), 21/rl2 (<a href="21-rl2.html#SP23">&#167;23</a>), 26/uo (<a href="26-uo.html#SP11_1">&#167;11.1</a>), 27/hr (<a href="27-hr.html#SP5">&#167;5</a>), 27/cm (<a href="27-cm.html#SP1">&#167;1</a>), 1/ppl (<a href="1-ppl.html#SP5">&#167;5</a>), 2/res (<a href="2-res.html#SP1">&#167;1</a>), 4/fc (<a href="4-fc.html#SP1">&#167;1</a>), 3/sm (<a href="3-sm.html#SP36">&#167;36</a>, <a href="3-sm.html#SP36_1">&#167;36.1</a>, <a href="3-sm.html#SP38">&#167;38</a>), 3/em2 (<a href="3-em2.html#SP24">&#167;24</a>), 4/ap (<a href="4-ap.html#SP2">&#167;2</a>), 2/hf (<a href="2-hf.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function main is used in 2/pt (<a href="2-pt.html#SP52">&#167;52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">&#167;3.1</a>), 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 2/cnn (<a href="2-cnn.html#SP1">&#167;1</a>), 3/rst (<a href="3-rst.html#SP6">&#167;6</a>), 4/am (<a href="4-am.html#SP26_1">&#167;26.1</a>), 8/ef (<a href="8-ef.html#SP26">&#167;26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">&#167;3.2</a>), 10/varc (<a href="10-varc.html#SP14">&#167;14</a>), 19/tb (<a href="19-tb.html#SP27">&#167;27</a>, <a href="19-tb.html#SP27_1">&#167;27.1</a>, <a href="19-tb.html#SP27_1_3">&#167;27.1.3</a>, <a href="19-tb.html#SP29">&#167;29</a>), 21/rl2 (<a href="21-rl2.html#SP23">&#167;23</a>), 26/uo (<a href="26-uo.html#SP11_1">&#167;11.1</a>), 27/hr (<a href="27-hr.html#SP5">&#167;5</a>), 27/cm (<a href="27-cm.html#SP1">&#167;1</a>), 1/ppl (<a href="1-ppl.html#SP5">&#167;5</a>), 2/res (<a href="2-res.html#SP1">&#167;1</a>), 4/fc (<a href="4-fc.html#SP1">&#167;1</a>), 3/sm (<a href="3-sm.html#SP36">&#167;36</a>, <a href="3-sm.html#SP36_1">&#167;36.1</a>, <a href="3-sm.html#SP38">&#167;38</a>), 3/em2 (<a href="3-em2.html#SP24">&#167;24</a>), 4/ap (<a href="4-ap.html#SP2">&#167;2</a>), 2/hf (<a href="2-hf.html#SP6">&#167;6</a>).</p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>Either way, that brings us here. All our modules have to be started up and
shut down, so we take care of that with one more intermediary. These modules

View file

@ -193,13 +193,13 @@
<p class="endnote">The function Inter::Bookmarks::at_start_of_this_repository is used in 3/iibf (<a href="3-iibf.html#SP1">&#167;1</a>), 3/iitf (<a href="3-iitf.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Inter::Bookmarks::at_end_of_this_package is used in 2/trn (<a href="2-trn.html#SP1_1">&#167;1.1</a>).</p>
<p class="endnote">The function Inter::Bookmarks::at_end_of_this_package is used in 2/cnn (<a href="2-cnn.html#SP1">&#167;1</a>), 2/trn (<a href="2-trn.html#SP1_1">&#167;1.1</a>).</p>
<p class="endnote">The function Inter::Bookmarks::after_this_node is used in 2/trn (<a href="2-trn.html#SP1_1">&#167;1.1</a>).</p>
<p class="endnote">The function Inter::Bookmarks::set_current_package is used in 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Bookmarks::tree is used in 2/in (<a href="2-in.html#SP4">&#167;4</a>), 2/st (<a href="2-st.html#SP8">&#167;8</a>, <a href="2-st.html#SP9">&#167;9</a>), 2/cnn (<a href="2-cnn.html#SP1">&#167;1</a>), 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Bookmarks::tree is used in 2/in (<a href="2-in.html#SP4">&#167;4</a>), 2/st (<a href="2-st.html#SP8">&#167;8</a>, <a href="2-st.html#SP9">&#167;9</a>), 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Bookmarks::warehouse is used in 2/trn (<a href="2-trn.html#SP1_2">&#167;1.2</a>), 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
@ -219,9 +219,9 @@
<p class="endnote">The function Inter::Bookmarks::scope is used in 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Bookmarks::package is used in 2/in (<a href="2-in.html#SP4">&#167;4</a>), 2/st (<a href="2-st.html#SP8">&#167;8</a>, <a href="2-st.html#SP9">&#167;9</a>), 2/cnn (<a href="2-cnn.html#SP1">&#167;1</a>), 2/trn (<a href="2-trn.html#SP1_2">&#167;1.2</a>, <a href="2-trn.html#SP2_1_1">&#167;2.1.1</a>), 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>), 4/tnc (<a href="4-tnc.html#SP1">&#167;1</a>), 4/tcc (<a href="4-tcc.html#SP1">&#167;1</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Bookmarks::package is used in 2/in (<a href="2-in.html#SP4">&#167;4</a>), 2/st (<a href="2-st.html#SP8">&#167;8</a>, <a href="2-st.html#SP9">&#167;9</a>), 2/trn (<a href="2-trn.html#SP1_2">&#167;1.2</a>, <a href="2-trn.html#SP3_1_1">&#167;3.1.1</a>), 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>), 4/tnc (<a href="4-tnc.html#SP1">&#167;1</a>), 4/tcc (<a href="4-tcc.html#SP1">&#167;1</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Bookmarks::insert is used in 2/trn (<a href="2-trn.html#SP1_3">&#167;1.3</a>, <a href="2-trn.html#SP2_1_1">&#167;2.1.1</a>), 3/iibf (<a href="3-iibf.html#SP1_6">&#167;1.6</a>), 4/tnc (<a href="4-tnc.html#SP1">&#167;1</a>), 4/tcc (<a href="4-tcc.html#SP1">&#167;1</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Bookmarks::insert is used in 2/trn (<a href="2-trn.html#SP1_3">&#167;1.3</a>, <a href="2-trn.html#SP3_1_1">&#167;3.1.1</a>), 3/iibf (<a href="3-iibf.html#SP1_6">&#167;1.6</a>), 4/tnc (<a href="4-tnc.html#SP1">&#167;1</a>), 4/tcc (<a href="4-tcc.html#SP1">&#167;1</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The structure inter_bookmark is private to this section.</p>

View file

@ -15,41 +15,47 @@
<pre class="display">
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Inter::Connectors::plug</span><span class="plain">(</span><span class="reserved">inter_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">plug_name</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">wanted</span><span class="plain">, </span><span class="reserved">inter_package</span><span class="plain"> **</span><span class="identifier">package_cache</span><span class="plain">) {</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">connectors</span><span class="plain"> = </span><span class="functiontext">Inter::Connectors::connectors_package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="identifier">package_cache</span><span class="plain">);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">plug</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::create_with_unique_name</span><span class="plain">(</span><span class="functiontext">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">connectors</span><span class="plain">), </span><span class="identifier">plug_name</span><span class="plain">);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Inter::Connectors::plug</span><span class="plain">(</span><span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">plug_name</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">wanted</span><span class="plain">) {</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">connectors</span><span class="plain"> = </span><span class="functiontext">Inter::Connectors::connectors_package</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">plug</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::create_with_unique_name</span><span class="plain">(</span>
<span class="functiontext">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">connectors</span><span class="plain">), </span><span class="identifier">plug_name</span><span class="plain">);</span>
<span class="functiontext">Inter::SymbolsTables::make_plug</span><span class="plain">(</span><span class="identifier">plug</span><span class="plain">, </span><span class="identifier">wanted</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">plug</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Inter::Connectors::socket</span><span class="plain">(</span><span class="reserved">inter_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">socket_name</span><span class="plain">, </span><span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">wired_from</span><span class="plain">, </span><span class="reserved">inter_package</span><span class="plain"> **</span><span class="identifier">package_cache</span><span class="plain">) {</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">connectors</span><span class="plain"> = </span><span class="functiontext">Inter::Connectors::connectors_package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="identifier">package_cache</span><span class="plain">);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">socket</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::create_with_unique_name</span><span class="plain">(</span><span class="functiontext">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">connectors</span><span class="plain">), </span><span class="identifier">socket_name</span><span class="plain">);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="functiontext">Inter::Connectors::socket</span><span class="plain">(</span><span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">socket_name</span><span class="plain">, </span><span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">wired_from</span><span class="plain">) {</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">connectors</span><span class="plain"> = </span><span class="functiontext">Inter::Connectors::connectors_package</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">);</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">socket</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::create_with_unique_name</span><span class="plain">(</span>
<span class="functiontext">Inter::Packages::scope</span><span class="plain">(</span><span class="identifier">connectors</span><span class="plain">), </span><span class="identifier">socket_name</span><span class="plain">);</span>
<span class="functiontext">Inter::SymbolsTables::make_socket</span><span class="plain">(</span><span class="identifier">socket</span><span class="plain">, </span><span class="identifier">wired_from</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">socket</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="functiontext">Inter::Connectors::connectors_package</span><span class="plain">(</span><span class="reserved">inter_bookmark</span><span class="plain"> *</span><span class="identifier">IBM</span><span class="plain">, </span><span class="reserved">inter_package</span><span class="plain"> **</span><span class="identifier">package_cache</span><span class="plain">) {</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">connectors</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">package_cache</span><span class="plain">) </span><span class="identifier">connectors</span><span class="plain"> = *</span><span class="identifier">package_cache</span><span class="plain">;</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="functiontext">Inter::Connectors::connectors_package</span><span class="plain">(</span><span class="reserved">inter_tree</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">I</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 tree for connectors"</span><span class="plain">);</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">connectors</span><span class="plain"> = </span><span class="functiontext">Inter::Tree::connectors_package</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">connectors</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="identifier">connectors</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::by_name</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">I</span><span class="string">"connectors"</span><span class="plain">);</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">main_package</span><span class="plain"> = </span><span class="functiontext">Inter::Tree::main_package</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">main_package</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">"tree without main"</span><span class="plain">);</span>
<span class="identifier">connectors</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::by_name</span><span class="plain">(</span><span class="identifier">main_package</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"connectors"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">connectors</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">linkage</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::url_name_to_symbol</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">I</span><span class="string">"/_linkage"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">linkage</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 linkage ptype"</span><span class="plain">);</span>
<span class="reserved">inter_bookmark</span><span class="plain"> </span><span class="identifier">IBM</span><span class="plain"> = </span><span class="functiontext">Inter::Bookmarks::at_end_of_this_package</span><span class="plain">(</span><span class="identifier">main_package</span><span class="plain">);</span>
<span class="functiontext">Inter::Package::new_package</span><span class="plain">(&amp;</span><span class="identifier">IBM</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"connectors"</span><span class="plain">, </span><span class="identifier">linkage</span><span class="plain">,</span>
<span class="plain">(</span><span class="constant">inter_t</span><span class="plain">) </span><span class="functiontext">Inter::Bookmarks::baseline</span><span class="plain">(&amp;</span><span class="identifier">IBM</span><span class="plain">)+1, </span><span class="identifier">NULL</span><span class="plain">, &amp;(</span><span class="identifier">connectors</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">connectors</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">"unable to create connector package"</span><span class="plain">);</span>
<span class="functiontext">Inter::Tree::set_connectors_package</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">, </span><span class="identifier">connectors</span><span class="plain">);</span>
<span class="functiontext">Inter::Packages::make_linklike</span><span class="plain">(</span><span class="identifier">connectors</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">connectors</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">linkage</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::url_name_to_symbol</span><span class="plain">(</span><span class="functiontext">Inter::Bookmarks::tree</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"/_linkage"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">linkage</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 linkage ptype"</span><span class="plain">);</span>
<span class="functiontext">Inter::Package::new_package</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"connectors"</span><span class="plain">, </span><span class="identifier">linkage</span><span class="plain">, (</span><span class="constant">inter_t</span><span class="plain">) </span><span class="functiontext">Inter::Bookmarks::baseline</span><span class="plain">(</span><span class="identifier">IBM</span><span class="plain">)+1, </span><span class="identifier">NULL</span><span class="plain">, &amp;(</span><span class="identifier">connectors</span><span class="plain">));</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">connectors</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">"unable to create connector package"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">package_cache</span><span class="plain">) *</span><span class="identifier">package_cache</span><span class="plain"> = </span><span class="identifier">connectors</span><span class="plain">;</span>
<span class="functiontext">Inter::Packages::make_linklike</span><span class="plain">(</span><span class="identifier">connectors</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">connectors</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::Connectors::plug is used in 2/trn (<a href="2-trn.html#SP2_2_1">&#167;2.2.1</a>, <a href="2-trn.html#SP3_1_1">&#167;3.1.1</a>).</p>
<p class="endnote">The function Inter::Connectors::plug is used in 2/trn (<a href="2-trn.html#SP3_2">&#167;3.2</a>, <a href="2-trn.html#SP4_1">&#167;4.1</a>).</p>
<p class="endnote">The function Inter::Connectors::socket appears nowhere else.</p>

View file

@ -268,7 +268,7 @@
<p class="endnote">The function Inter::Node::fill_0 is used in 4/tnc (<a href="4-tnc.html#SP1">&#167;1</a>), 4/tcc (<a href="4-tcc.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Inter::Node::fill_1 is used in 2/trn (<a href="2-trn.html#SP2_1_1">&#167;2.1.1</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Node::fill_1 is used in 2/trn (<a href="2-trn.html#SP3_1_1">&#167;3.1.1</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Node::fill_2 is used in 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>).</p>
@ -345,7 +345,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::Node::extend is used in 2/trn (<a href="2-trn.html#SP2_1_1">&#167;2.1.1</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Node::extend is used in 2/trn (<a href="2-trn.html#SP3_1_1">&#167;3.1.1</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Node::vcount is used in 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>).</p>

View file

@ -20,6 +20,7 @@
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">root_node</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">root_package</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">main_package</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">connectors_package</span><span class="plain">;</span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">inter_tree</span><span class="plain">;</span>
</pre>
@ -35,6 +36,7 @@
<span class="reserved">inter_tree</span><span class="plain"> *</span><span class="functiontext">Inter::Tree::new</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inter_tree</span><span class="plain">);</span>
<span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;main_package</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;connectors_package</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;housed</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::new</span><span class="plain">();</span>
<span class="constant">inter_t</span><span class="plain"> </span><span class="identifier">N</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::create_symbols_table</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;housed</span><span class="plain">);</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">globals</span><span class="plain"> = </span><span class="functiontext">Inter::Warehouse::get_symbols_table</span><span class="plain">(</span><span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;housed</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">);</span>
@ -59,11 +61,21 @@
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="functiontext">Inter::Tree::connectors_package</span><span class="plain">(</span><span class="reserved">inter_tree</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">I</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;connectors_package</span><span class="plain">;</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Tree::set_main_package</span><span class="plain">(</span><span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">, </span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">M</span><span class="plain">) {</span>
<span class="reserved">if</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">internal_error</span><span class="plain">(</span><span class="string">"no tree"</span><span class="plain">);</span>
<span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;main_package</span><span class="plain"> = </span><span class="identifier">M</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Tree::set_connectors_package</span><span class="plain">(</span><span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">, </span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">M</span><span class="plain">) {</span>
<span class="reserved">if</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">internal_error</span><span class="plain">(</span><span class="string">"no tree"</span><span class="plain">);</span>
<span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;connectors_package</span><span class="plain"> = </span><span class="identifier">M</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inter_warehouse</span><span class="plain"> *</span><span class="functiontext">Inter::Tree::warehouse</span><span class="plain">(</span><span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">I</span><span class="plain">) {</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">I</span><span class="plain">-</span><span class="element">&gt;housed</span><span class="plain">;</span>
<span class="plain">}</span>
@ -159,13 +171,17 @@
<p class="endnote">The function Inter::Tree::root_package is used in 3/dfn (<a href="3-dfn.html#SP3">&#167;3</a>), 3/iibf (<a href="3-iibf.html#SP1_4">&#167;1.4</a>).</p>
<p class="endnote">The function Inter::Tree::main_package is used in <a href="#SP5">&#167;5</a>, 2/st (<a href="2-st.html#SP4">&#167;4</a>), 2/pck (<a href="2-pck.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function Inter::Tree::main_package is used in <a href="#SP5">&#167;5</a>, 2/st (<a href="2-st.html#SP4">&#167;4</a>), 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 2/cnn (<a href="2-cnn.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Inter::Tree::connectors_package is used in 2/cnn (<a href="2-cnn.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Inter::Tree::set_main_package is used in 2/pck (<a href="2-pck.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function Inter::Tree::set_connectors_package is used in 2/cnn (<a href="2-cnn.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Inter::Tree::warehouse is used in 2/bkm (<a href="2-bkm.html#SP1">&#167;1</a>), 2/in (<a href="2-in.html#SP4">&#167;4</a>), 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 2/sym (<a href="2-sym.html#SP4">&#167;4</a>), 3/dfn (<a href="3-dfn.html#SP3">&#167;3</a>), 3/iibf (<a href="3-iibf.html#SP1">&#167;1</a>, <a href="3-iibf.html#SP1_1">&#167;1.1</a>), 3/idt (<a href="3-idt.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function Inter::Tree::global_scope is used in 2/bkm (<a href="2-bkm.html#SP1">&#167;1</a>), 2/in (<a href="2-in.html#SP3">&#167;3</a>), 2/st (<a href="2-st.html#SP8">&#167;8</a>, <a href="2-st.html#SP9">&#167;9</a>, <a href="2-st.html#SP11">&#167;11</a>), 2/trn (<a href="2-trn.html#SP1_5">&#167;1.5</a>), 3/iibf (<a href="3-iibf.html#SP1_4">&#167;1.4</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Tree::global_scope is used in 2/bkm (<a href="2-bkm.html#SP1">&#167;1</a>), 2/in (<a href="2-in.html#SP3">&#167;3</a>), 2/st (<a href="2-st.html#SP8">&#167;8</a>, <a href="2-st.html#SP9">&#167;9</a>, <a href="2-st.html#SP11">&#167;11</a>), 2/trn (<a href="2-trn.html#SP3">&#167;3</a>, <a href="2-trn.html#SP3_1">&#167;3.1</a>, <a href="2-trn.html#SP3_1_1">&#167;3.1.1</a>), 3/iibf (<a href="3-iibf.html#SP1_4">&#167;1.4</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Tree::previous is used in <a href="#SP3_1">&#167;3.1</a>, <a href="#SP3_5">&#167;3.5</a>.</p>
@ -433,7 +449,7 @@
<p class="endnote">The function Inter::Tree::traverse_root_only is used in 3/iibf (<a href="3-iibf.html#SP1_1_5">&#167;1.1.5</a>), 3/iitf (<a href="3-iitf.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Tree::traverse is used in 2/st (<a href="2-st.html#SP10">&#167;10</a>), 2/trn (<a href="2-trn.html#SP1_5">&#167;1.5</a>, <a href="2-trn.html#SP1_6">&#167;1.6</a>), 3/iibf (<a href="3-iibf.html#SP1_1_5">&#167;1.1.5</a>), 3/iitf (<a href="3-iitf.html#SP1">&#167;1</a>, <a href="3-iitf.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Tree::traverse is used in 2/st (<a href="2-st.html#SP10">&#167;10</a>), 2/trn (<a href="2-trn.html#SP1_4">&#167;1.4</a>, <a href="2-trn.html#SP1_5">&#167;1.5</a>), 3/iibf (<a href="3-iibf.html#SP1_1_5">&#167;1.1.5</a>), 3/iitf (<a href="3-iitf.html#SP1">&#167;1</a>, <a href="3-iitf.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Tree::traverse_r appears nowhere else.</p>

View file

@ -67,6 +67,7 @@
<span class="reserved">inter_tree</span><span class="plain"> *</span><span class="functiontext">Inter::Packages::tree</span><span class="plain">(</span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain">) {</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">default_ptree</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">default_ptree</span><span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pack</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">pack</span><span class="plain">-</span><span class="element">&gt;package_head</span><span class="plain">-</span><span class="element">&gt;tree</span><span class="plain">;</span>
<span class="plain">}</span>
@ -316,7 +317,7 @@
<p class="endnote">The function Inter::Packages::definition is used in 2/it (<a href="2-it.html#SP5">&#167;5</a>), 2/bkm (<a href="2-bkm.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Inter::Packages::tree is used in 2/bkm (<a href="2-bkm.html#SP1">&#167;1</a>), 2/st (<a href="2-st.html#SP10">&#167;10</a>), 3/iibf (<a href="3-iibf.html#SP1_1_3">&#167;1.1.3</a>, <a href="3-iibf.html#SP1_1_4">&#167;1.1.4</a>).</p>
<p class="endnote">The function Inter::Packages::tree is used in 2/bkm (<a href="2-bkm.html#SP1">&#167;1</a>), 2/st (<a href="2-st.html#SP10">&#167;10</a>), 2/trn (<a href="2-trn.html#SP1">&#167;1</a>), 3/iibf (<a href="3-iibf.html#SP1_1_3">&#167;1.1.3</a>, <a href="3-iibf.html#SP1_1_4">&#167;1.1.4</a>).</p>
<p class="endnote">The function Inter::Packages::name is used in 2/st (<a href="2-st.html#SP11">&#167;11</a>), 2/trn (<a href="2-trn.html#SP1_2">&#167;1.2</a>), 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>).</p>
@ -324,7 +325,7 @@
<p class="endnote">The function Inter::Packages::make_codelike is used in 3/iibf (<a href="3-iibf.html#SP1_4_3">&#167;1.4.3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Packages::is_linklike is used in 2/trn (<a href="2-trn.html#SP2">&#167;2</a>, <a href="2-trn.html#SP3">&#167;3</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Inter::Packages::is_linklike is used in 2/trn (<a href="2-trn.html#SP3">&#167;3</a>, <a href="2-trn.html#SP4">&#167;4</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Inter::Packages::make_linklike is used in 2/cnn (<a href="2-cnn.html#SP1">&#167;1</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>).</p>
@ -332,7 +333,7 @@
<p class="endnote">The function Inter::Packages::make_rootlike is used in 2/it (<a href="2-it.html#SP2">&#167;2</a>), 3/iibf (<a href="3-iibf.html#SP1_4_3">&#167;1.4.3</a>).</p>
<p class="endnote">The function Inter::Packages::parent is used in 2/st (<a href="2-st.html#SP11">&#167;11</a>), 2/trn (<a href="2-trn.html#SP1">&#167;1</a>, <a href="2-trn.html#SP1_3">&#167;1.3</a>, <a href="2-trn.html#SP2">&#167;2</a>, <a href="2-trn.html#SP3">&#167;3</a>), 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>), 3/iibf (<a href="3-iibf.html#SP1_1_3_3">&#167;1.1.3.3</a>).</p>
<p class="endnote">The function Inter::Packages::parent is used in 2/st (<a href="2-st.html#SP11">&#167;11</a>), 2/trn (<a href="2-trn.html#SP1">&#167;1</a>, <a href="2-trn.html#SP1_3">&#167;1.3</a>, <a href="2-trn.html#SP3">&#167;3</a>, <a href="2-trn.html#SP4">&#167;4</a>), 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>), 3/iibf (<a href="3-iibf.html#SP1_1_3_3">&#167;1.1.3.3</a>).</p>
<p class="endnote">The function Inter::Packages::unmark_all appears nowhere else.</p>
@ -362,7 +363,7 @@
<p class="endnote">The function Inter::Packages::container is used in 3/dfn (<a href="3-dfn.html#SP4">&#167;4</a>), 3/vi (<a href="3-vi.html#SP1">&#167;1</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Packages::scope is used in 2/it (<a href="2-it.html#SP2">&#167;2</a>), 2/bkm (<a href="2-bkm.html#SP1">&#167;1</a>), 2/st (<a href="2-st.html#SP4">&#167;4</a>, <a href="2-st.html#SP7">&#167;7</a>, <a href="2-st.html#SP8">&#167;8</a>, <a href="2-st.html#SP9">&#167;9</a>, <a href="2-st.html#SP10">&#167;10</a>, <a href="2-st.html#SP11">&#167;11</a>), 2/cnn (<a href="2-cnn.html#SP1">&#167;1</a>), 2/trn (<a href="2-trn.html#SP2">&#167;2</a>, <a href="2-trn.html#SP3">&#167;3</a>), 3/vi (<a href="3-vi.html#SP1">&#167;1</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Packages::scope is used in 2/it (<a href="2-it.html#SP2">&#167;2</a>), 2/bkm (<a href="2-bkm.html#SP1">&#167;1</a>), 2/st (<a href="2-st.html#SP4">&#167;4</a>, <a href="2-st.html#SP7">&#167;7</a>, <a href="2-st.html#SP8">&#167;8</a>, <a href="2-st.html#SP9">&#167;9</a>, <a href="2-st.html#SP10">&#167;10</a>, <a href="2-st.html#SP11">&#167;11</a>), 2/cnn (<a href="2-cnn.html#SP1">&#167;1</a>), 2/trn (<a href="2-trn.html#SP3">&#167;3</a>, <a href="2-trn.html#SP4">&#167;4</a>), 3/vi (<a href="3-vi.html#SP1">&#167;1</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Packages::scope_of is used in 2/st (<a href="2-st.html#SP7">&#167;7</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>).</p>

View file

@ -223,11 +223,11 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::SymbolsTables::symbol_from_name is used in <a href="#SP5">&#167;5</a>, <a href="#SP11">&#167;11</a>, 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 2/trn (<a href="2-trn.html#SP2_1">&#167;2.1</a>), 3/iitf (<a href="3-iitf.html#SP1">&#167;1</a>), 3/idt (<a href="3-idt.html#SP3">&#167;3</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::symbol_from_name is used in <a href="#SP5">&#167;5</a>, <a href="#SP11">&#167;11</a>, 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 2/trn (<a href="2-trn.html#SP3_1">&#167;3.1</a>), 3/iitf (<a href="3-iitf.html#SP1">&#167;1</a>), 3/idt (<a href="3-idt.html#SP3">&#167;3</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::symbol_from_name_not_equating appears nowhere else.</p>
<p class="endnote">The function Inter::SymbolsTables::symbol_from_name_creating is used in <a href="#SP5">&#167;5</a>, 2/trn (<a href="2-trn.html#SP2_1_1">&#167;2.1.1</a>), 3/iitf (<a href="3-iitf.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::symbol_from_name_creating is used in <a href="#SP5">&#167;5</a>, 2/trn (<a href="2-trn.html#SP3_1_1">&#167;3.1.1</a>), 3/iitf (<a href="3-iitf.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::symbol_from_name_creating_at_ID is used in 3/iibf (<a href="3-iibf.html#SP1_4_2">&#167;1.4.2</a>).</p>
@ -298,7 +298,7 @@ to access this: one following equations, the other not.
<p class="endnote">The function Inter::SymbolsTables::unequated_symbol_from_id is used in 3/vi (<a href="3-vi.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::symbol_from_id is used in <a href="#SP7">&#167;7</a>, 2/sym (<a href="2-sym.html#SP4">&#167;4</a>), 2/trn (<a href="2-trn.html#SP2">&#167;2</a>), 3/iibf (<a href="3-iibf.html#SP1_5">&#167;1.5</a>), 3/vi (<a href="3-vi.html#SP1">&#167;1</a>), 3/idt (<a href="3-idt.html#SP2">&#167;2</a>, <a href="3-idt.html#SP3">&#167;3</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::symbol_from_id is used in <a href="#SP7">&#167;7</a>, 2/sym (<a href="2-sym.html#SP4">&#167;4</a>), 2/trn (<a href="2-trn.html#SP3">&#167;3</a>), 3/iibf (<a href="3-iibf.html#SP1_5">&#167;1.5</a>), 3/vi (<a href="3-vi.html#SP1">&#167;1</a>), 3/idt (<a href="3-idt.html#SP2">&#167;2</a>, <a href="3-idt.html#SP3">&#167;3</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>).</p>
<p class="inwebparagraph"><a id="SP7"></a><b>&#167;7. </b>It's convenient to have some abbreviations for common ways to access the above.
</p>
@ -433,7 +433,7 @@ a global symbol in any non-global context.
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::SymbolsTables::id_from_symbol_inner is used in 2/trn (<a href="2-trn.html#SP2_1">&#167;2.1</a>, <a href="2-trn.html#SP2_1_1">&#167;2.1.1</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::id_from_symbol_inner is used in 2/trn (<a href="2-trn.html#SP3_1">&#167;3.1</a>, <a href="2-trn.html#SP3_1_1">&#167;3.1.1</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::id_from_symbol is used in 2/sym (<a href="2-sym.html#SP3">&#167;3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>).</p>
@ -571,9 +571,9 @@ a global symbol in any non-global context.
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::SymbolsTables::url_name_to_symbol is used in <a href="#SP10">&#167;10</a>, 2/cnn (<a href="2-cnn.html#SP1">&#167;1</a>), 2/trn (<a href="2-trn.html#SP2_2">&#167;2.2</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::url_name_to_symbol is used in <a href="#SP10">&#167;10</a>, 2/cnn (<a href="2-cnn.html#SP1">&#167;1</a>), 2/trn (<a href="2-trn.html#SP3_2">&#167;3.2</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::symbol_to_url_name is used in 2/sym (<a href="2-sym.html#SP2">&#167;2</a>, <a href="2-sym.html#SP4">&#167;4</a>), 2/trn (<a href="2-trn.html#SP2_2">&#167;2.2</a>, <a href="2-trn.html#SP3_1_1">&#167;3.1.1</a>).</p>
<p class="endnote">The function Inter::SymbolsTables::symbol_to_url_name is used in 2/sym (<a href="2-sym.html#SP2">&#167;2</a>, <a href="2-sym.html#SP4">&#167;4</a>), 2/trn (<a href="2-trn.html#SP3_2">&#167;3.2</a>, <a href="2-trn.html#SP4_1">&#167;4.1</a>).</p>
<hr class="tocbar">
<ul class="toc"><li><a href="2-inl.html">Back to 'Inter Node Lists'</a></li><li><a href="2-pck.html">Continue with 'Packages'</a></li></ul><hr class="tocbar">

View file

@ -28,21 +28,23 @@
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Inter::Transmigration::move</span><span class="plain">(</span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">migrant</span><span class="plain">, </span><span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">destination</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">tidy_origin</span><span class="plain">) {</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Move $5 to $5\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">migrant</span><span class="plain">, </span><span class="identifier">destination</span><span class="plain">);</span>
<span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">origin_tree</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::tree</span><span class="plain">(</span><span class="identifier">migrant</span><span class="plain">);</span>
<span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">destination_tree</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::tree</span><span class="plain">(</span><span class="identifier">destination</span><span class="plain">);</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">origin</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::parent</span><span class="plain">(</span><span class="identifier">migrant</span><span class="plain">);</span>
<span class="reserved">inter_bookmark</span><span class="plain"> </span><span class="identifier">deletion_point</span><span class="plain">, </span><span class="identifier">insertion_point</span><span class="plain">, </span><span class="identifier">linkage_point</span><span class="plain">, </span><span class="identifier">primitives_point</span><span class="plain">;</span>
<span class="reserved">inter_bookmark</span><span class="plain"> </span><span class="identifier">deletion_point</span><span class="plain">, </span><span class="identifier">insertion_point</span><span class="plain">, </span><span class="identifier">primitives_point</span><span class="plain">;</span>
&lt;<span class="cwebmacro">Create these bookmarks</span> <span class="cwebmacronumber">1.1</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Mark the insertion and deletion points with comments</span> <span class="cwebmacronumber">1.2</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Physically move the subtree to its new home</span> <span class="cwebmacronumber">1.3</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Correct any references from the migrant to the origin</span> <span class="cwebmacronumber">1.5</span>&gt;<span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">tidy_origin</span><span class="plain">) </span>&lt;<span class="cwebmacro">Correct any references from the origin to the migrant</span> <span class="cwebmacronumber">1.6</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Correct any references from the migrant to the origin</span> <span class="cwebmacronumber">1.4</span>&gt;<span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">tidy_origin</span><span class="plain">) </span>&lt;<span class="cwebmacro">Correct any references from the origin to the migrant</span> <span class="cwebmacronumber">1.5</span>&gt;<span class="plain">;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::Transmigration::cache is used in <a href="#SP2_1">&#167;2.1</a>, <a href="#SP2_2">&#167;2.2</a>, <a href="#SP3_1">&#167;3.1</a>.</p>
<p class="endnote">The function Inter::Transmigration::cache is used in <a href="#SP3_1">&#167;3.1</a>, <a href="#SP3_2">&#167;3.2</a>, <a href="#SP4_1">&#167;4.1</a>.</p>
<p class="endnote">The function Inter::Transmigration::cached_equivalent is used in <a href="#SP2_1">&#167;2.1</a>, <a href="#SP2_2">&#167;2.2</a>, <a href="#SP3_1">&#167;3.1</a>.</p>
<p class="endnote">The function Inter::Transmigration::cached_equivalent is used in <a href="#SP3_1">&#167;3.1</a>, <a href="#SP3_2">&#167;3.2</a>, <a href="#SP4_1">&#167;4.1</a>.</p>
<p class="endnote">The function Inter::Transmigration::move appears nowhere else.</p>
@ -56,7 +58,6 @@
<span class="functiontext">Inter::Bookmarks::after_this_node</span><span class="plain">(</span><span class="identifier">migrant</span><span class="plain">-</span><span class="element">&gt;package_head</span><span class="plain">-</span><span class="element">&gt;tree</span><span class="plain">, </span><span class="identifier">migrant</span><span class="plain">-</span><span class="element">&gt;package_head</span><span class="plain">);</span>
<span class="identifier">insertion_point</span><span class="plain"> =</span>
<span class="functiontext">Inter::Bookmarks::at_end_of_this_package</span><span class="plain">(</span><span class="identifier">destination</span><span class="plain">);</span>
<span class="identifier">linkage_point</span><span class="plain"> = </span><span class="functiontext">Inter::Bookmarks::at_end_of_this_package</span><span class="plain">(</span><span class="identifier">migrant</span><span class="plain">);</span>
<span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">prims</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">LOOP_THROUGH_INTER_CHILDREN</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">destination</span><span class="plain">-</span><span class="element">&gt;package_head</span><span class="plain">-</span><span class="element">&gt;tree</span><span class="plain">-</span><span class="element">&gt;root_node</span><span class="plain">)</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">F</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">ID_IFLD</span><span class="plain">] == </span><span class="constant">PRIMITIVE_IST</span><span class="plain">)</span>
@ -105,18 +106,16 @@
<p class="endnote">This code is used in <a href="#SP1">&#167;1</a>.</p>
<p class="inwebparagraph"><a id="SP1_4"></a><b>&#167;1.4. </b></p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b></p>
<pre class="display">
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">ipct_state</span><span class="plain"> {</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">migrant</span><span class="plain">;</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">destination</span><span class="plain">;</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">links</span><span class="plain">;</span>
<span class="reserved">inter_bookmark</span><span class="plain"> *</span><span class="identifier">linkage_point</span><span class="plain">;</span>
<span class="reserved">inter_bookmark</span><span class="plain"> *</span><span class="identifier">primitives_point</span><span class="plain">;</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">origin_globals</span><span class="plain">;</span>
<span class="reserved">inter_symbols_table</span><span class="plain"> *</span><span class="identifier">destination_globals</span><span class="plain">;</span>
<span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">origin_tree</span><span class="plain">;</span>
<span class="reserved">inter_tree</span><span class="plain"> *</span><span class="identifier">destination_tree</span><span class="plain">;</span>
<span class="plain">} </span><span class="reserved">ipct_state</span><span class="plain">;</span>
</pre>
@ -124,21 +123,32 @@
<p class="endnote">The structure ipct_state is private to this section.</p>
<p class="inwebparagraph"><a id="SP1_5"></a><b>&#167;1.5. </b><code class="display">
&lt;<span class="cwebmacrodefn">Correct any references from the migrant to the origin</span> <span class="cwebmacronumber">1.5</span>&gt; =
<p class="inwebparagraph"><a id="SP_1"></a><b>&#167;.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Initialise the IPCT state</span> <span class="cwebmacronumber">.1</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="identifier">ipct_cache_count</span><span class="plain">++;</span>
<span class="reserved">ipct_state</span><span class="plain"> </span><span class="identifier">ipct</span><span class="plain">;</span>
<span class="identifier">ipct</span><span class="element">.migrant</span><span class="plain"> = </span><span class="identifier">migrant</span><span class="plain">;</span>
<span class="identifier">ipct</span><span class="element">.destination</span><span class="plain"> = </span><span class="identifier">destination</span><span class="plain">;</span>
<span class="identifier">ipct</span><span class="element">.links</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">ipct</span><span class="element">.origin_globals</span><span class="plain"> = </span><span class="functiontext">Inter::Tree::global_scope</span><span class="plain">(</span><span class="identifier">migrant</span><span class="plain">-</span><span class="element">&gt;package_head</span><span class="plain">-</span><span class="element">&gt;tree</span><span class="plain">);</span>
<span class="identifier">ipct</span><span class="element">.destination_globals</span><span class="plain"> = </span><span class="functiontext">Inter::Tree::global_scope</span><span class="plain">(</span><span class="identifier">destination</span><span class="plain">-</span><span class="element">&gt;package_head</span><span class="plain">-</span><span class="element">&gt;tree</span><span class="plain">);</span>
<span class="identifier">ipct</span><span class="element">.linkage_point</span><span class="plain"> = &amp;</span><span class="identifier">linkage_point</span><span class="plain">;</span>
<span class="identifier">ipct</span><span class="element">.origin_tree</span><span class="plain"> = </span><span class="identifier">origin_tree</span><span class="plain">;</span>
<span class="identifier">ipct</span><span class="element">.destination_tree</span><span class="plain"> = </span><span class="identifier">destination_tree</span><span class="plain">;</span>
<span class="identifier">ipct</span><span class="element">.primitives_point</span><span class="plain"> = &amp;</span><span class="identifier">primitives_point</span><span class="plain">;</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP1_4">&#167;1.4</a>, <a href="#SP1_5">&#167;1.5</a>.</p>
<p class="inwebparagraph"><a id="SP1_4"></a><b>&#167;1.4. </b><code class="display">
&lt;<span class="cwebmacrodefn">Correct any references from the migrant to the origin</span> <span class="cwebmacronumber">1.4</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="reserved">ipct_state</span><span class="plain"> </span><span class="identifier">ipct</span><span class="plain">;</span>
&lt;<span class="cwebmacro">Initialise the IPCT state</span> <span class="cwebmacronumber">.1</span>&gt;<span class="plain">;</span>
<span class="functiontext">Inter::Tree::traverse</span><span class="plain">(</span><span class="identifier">destination</span><span class="plain">-</span><span class="element">&gt;package_head</span><span class="plain">-</span><span class="element">&gt;tree</span><span class="plain">,</span>
<span class="functiontext">Inter::Transmigration::correct_migrant</span><span class="plain">, &amp;</span><span class="identifier">ipct</span><span class="plain">, </span><span class="identifier">migrant</span><span class="plain">, 0);</span>
</pre>
@ -147,7 +157,7 @@
<p class="endnote">This code is used in <a href="#SP1">&#167;1</a>.</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b></p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b></p>
<pre class="display">
@ -156,8 +166,8 @@
<span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;tree</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">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">ID_IFLD</span><span class="plain">] == </span><span class="constant">INV_IST</span><span class="plain">) &amp;&amp; (</span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">METHOD_INV_IFLD</span><span class="plain">] == </span><span class="constant">INVOKED_PRIMITIVE</span><span class="plain">)) {</span>
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">primitive</span><span class="plain"> =</span>
<span class="functiontext">Inter::SymbolsTables::symbol_from_id</span><span class="plain">(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;origin_globals</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">INVOKEE_INV_IFLD</span><span class="plain">]);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">primitive</span><span class="plain">) </span>&lt;<span class="cwebmacro">Correct the reference to this primitive</span> <span class="cwebmacronumber">2.1</span>&gt;<span class="plain">;</span>
<span class="functiontext">Inter::SymbolsTables::symbol_from_id</span><span class="plain">(</span><span class="functiontext">Inter::Tree::global_scope</span><span class="plain">(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;origin_tree</span><span class="plain">), </span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">INVOKEE_INV_IFLD</span><span class="plain">]);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">primitive</span><span class="plain">) </span>&lt;<span class="cwebmacro">Correct the reference to this primitive</span> <span class="cwebmacronumber">3.1</span>&gt;<span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">ID_IFLD</span><span class="plain">] == </span><span class="constant">PACKAGE_IST</span><span class="plain">) {</span>
<span class="reserved">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="functiontext">Inter::Package::defined_by_frame</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">);</span>
@ -175,7 +185,7 @@
<span class="identifier">target_package</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::parent</span><span class="plain">(</span><span class="identifier">target_package</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">target_package</span><span class="plain"> != </span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;migrant</span><span class="plain">)</span>
&lt;<span class="cwebmacro">Correct the reference to this symbol</span> <span class="cwebmacronumber">2.2</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Correct the reference to this symbol</span> <span class="cwebmacronumber">3.2</span>&gt;<span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="plain">}</span>
@ -184,36 +194,36 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::Transmigration::correct_migrant is used in <a href="#SP1_5">&#167;1.5</a>.</p>
<p class="endnote">The function Inter::Transmigration::correct_migrant is used in <a href="#SP1_4">&#167;1.4</a>.</p>
<p class="inwebparagraph"><a id="SP2_1"></a><b>&#167;2.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Correct the reference to this primitive</span> <span class="cwebmacronumber">2.1</span>&gt; =
<p class="inwebparagraph"><a id="SP3_1"></a><b>&#167;3.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Correct the reference to this primitive</span> <span class="cwebmacronumber">3.1</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">equivalent_primitive</span><span class="plain"> = </span><span class="functiontext">Inter::Transmigration::cached_equivalent</span><span class="plain">(</span><span class="identifier">primitive</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">equivalent_primitive</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="identifier">equivalent_primitive</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::symbol_from_name</span><span class="plain">(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;destination_globals</span><span class="plain">, </span><span class="identifier">primitive</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">equivalent_primitive</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span>&lt;<span class="cwebmacro">Duplicate this primitive</span> <span class="cwebmacronumber">2.1.1</span>&gt;<span class="plain">;</span>
<span class="identifier">equivalent_primitive</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::symbol_from_name</span><span class="plain">(</span><span class="functiontext">Inter::Tree::global_scope</span><span class="plain">(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;destination_tree</span><span class="plain">), </span><span class="identifier">primitive</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">equivalent_primitive</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span>&lt;<span class="cwebmacro">Duplicate this primitive</span> <span class="cwebmacronumber">3.1.1</span>&gt;<span class="plain">;</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">equivalent_primitive</span><span class="plain">) </span><span class="functiontext">Inter::Transmigration::cache</span><span class="plain">(</span><span class="identifier">primitive</span><span class="plain">, </span><span class="identifier">equivalent_primitive</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">equivalent_primitive</span><span class="plain">)</span>
<span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">INVOKEE_INV_IFLD</span><span class="plain">] = </span><span class="functiontext">Inter::SymbolsTables::id_from_symbol_inner</span><span class="plain">(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;destination_globals</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">equivalent_primitive</span><span class="plain">);</span>
<span class="identifier">P</span><span class="plain">-</span><span class="element">&gt;W.data</span><span class="plain">[</span><span class="constant">INVOKEE_INV_IFLD</span><span class="plain">] = </span><span class="functiontext">Inter::SymbolsTables::id_from_symbol_inner</span><span class="plain">(</span><span class="functiontext">Inter::Tree::global_scope</span><span class="plain">(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;destination_tree</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">equivalent_primitive</span><span class="plain">);</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP2">&#167;2</a>.</p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP2_1_1"></a><b>&#167;2.1.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Duplicate this primitive</span> <span class="cwebmacronumber">2.1.1</span>&gt; =
<p class="inwebparagraph"><a id="SP3_1_1"></a><b>&#167;3.1.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Duplicate this primitive</span> <span class="cwebmacronumber">3.1.1</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="identifier">equivalent_primitive</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::symbol_from_name_creating</span><span class="plain">(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;destination_globals</span><span class="plain">, </span><span class="identifier">primitive</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">);</span>
<span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">D</span><span class="plain"> = </span><span class="functiontext">Inter::Node::fill_1</span><span class="plain">(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;primitives_point</span><span class="plain">, </span><span class="constant">PRIMITIVE_IST</span><span class="plain">, </span><span class="functiontext">Inter::SymbolsTables::id_from_symbol_inner</span><span class="plain">(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;destination_globals</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">equivalent_primitive</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">, 0);</span>
<span class="identifier">equivalent_primitive</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::symbol_from_name_creating</span><span class="plain">(</span><span class="functiontext">Inter::Tree::global_scope</span><span class="plain">(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;destination_tree</span><span class="plain">), </span><span class="identifier">primitive</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">);</span>
<span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">D</span><span class="plain"> = </span><span class="functiontext">Inter::Node::fill_1</span><span class="plain">(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;primitives_point</span><span class="plain">, </span><span class="constant">PRIMITIVE_IST</span><span class="plain">, </span><span class="functiontext">Inter::SymbolsTables::id_from_symbol_inner</span><span class="plain">(</span><span class="functiontext">Inter::Tree::global_scope</span><span class="plain">(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;destination_tree</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">equivalent_primitive</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">, 0);</span>
<span class="reserved">inter_tree_node</span><span class="plain"> *</span><span class="identifier">old_D</span><span class="plain"> = </span><span class="identifier">primitive</span><span class="plain">-</span><span class="element">&gt;definition</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">=</span><span class="constant">CAT_PRIM_IFLD</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">&lt;</span><span class="identifier">old_D</span><span class="plain">-</span><span class="element">&gt;W.extent</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="functiontext">Inter::Node::extend</span><span class="plain">(</span><span class="identifier">D</span><span class="plain">, (</span><span class="constant">inter_t</span><span class="plain">) 1) == </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"</span><span class="plain">);</span>
@ -230,10 +240,10 @@
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP2_1">&#167;2.1</a>.</p>
<p class="endnote">This code is used in <a href="#SP3_1">&#167;3.1</a>.</p>
<p class="inwebparagraph"><a id="SP2_2"></a><b>&#167;2.2. </b><code class="display">
&lt;<span class="cwebmacrodefn">Correct the reference to this symbol</span> <span class="cwebmacronumber">2.2</span>&gt; =
<p class="inwebparagraph"><a id="SP3_2"></a><b>&#167;3.2. </b><code class="display">
&lt;<span class="cwebmacrodefn">Correct the reference to this symbol</span> <span class="cwebmacronumber">3.2</span>&gt; =
</code></p>
@ -244,7 +254,7 @@
<span class="functiontext">Inter::SymbolsTables::symbol_to_url_name</span><span class="plain">(</span><span class="identifier">URL</span><span class="plain">, </span><span class="identifier">target</span><span class="plain">);</span>
<span class="identifier">equivalent</span><span class="plain"> = </span><span class="functiontext">Inter::SymbolsTables::url_name_to_symbol</span><span class="plain">(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;destination</span><span class="plain">-</span><span class="element">&gt;package_head</span><span class="plain">-</span><span class="element">&gt;tree</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">URL</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">equivalent</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">)</span>
&lt;<span class="cwebmacro">Create a link symbol to represent the unavailability of this symbol</span> <span class="cwebmacronumber">2.2.1</span>&gt;<span class="plain">;</span>
<span class="identifier">equivalent</span><span class="plain"> = </span><span class="functiontext">Inter::Connectors::plug</span><span class="plain">(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;destination_tree</span><span class="plain">, </span><span class="identifier">target</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">, </span><span class="identifier">URL</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">URL</span><span class="plain">);</span>
<span class="functiontext">Inter::Transmigration::cache</span><span class="plain">(</span><span class="identifier">target</span><span class="plain">, </span><span class="identifier">equivalent</span><span class="plain">);</span>
<span class="plain">}</span>
@ -253,36 +263,16 @@
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP2">&#167;2</a>.</p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP2_2_1"></a><b>&#167;2.2.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Create a link symbol to represent the unavailability of this symbol</span> <span class="cwebmacronumber">2.2.1</span>&gt; =
<p class="inwebparagraph"><a id="SP1_5"></a><b>&#167;1.5. </b><code class="display">
&lt;<span class="cwebmacrodefn">Correct any references from the origin to the migrant</span> <span class="cwebmacronumber">1.5</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="identifier">equivalent</span><span class="plain"> = </span><span class="functiontext">Inter::Connectors::plug</span><span class="plain">(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;linkage_point</span><span class="plain">, </span><span class="identifier">target</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">, </span><span class="identifier">URL</span><span class="plain">, &amp;(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;links</span><span class="plain">));</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP2_2">&#167;2.2</a>.</p>
<p class="inwebparagraph"><a id="SP1_6"></a><b>&#167;1.6. </b><code class="display">
&lt;<span class="cwebmacrodefn">Correct any references from the origin to the migrant</span> <span class="cwebmacronumber">1.6</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="identifier">ipct_cache_count</span><span class="plain">++;</span>
<span class="reserved">ipct_state</span><span class="plain"> </span><span class="identifier">ipct</span><span class="plain">;</span>
<span class="identifier">ipct</span><span class="element">.migrant</span><span class="plain"> = </span><span class="identifier">migrant</span><span class="plain">;</span>
<span class="identifier">ipct</span><span class="element">.destination</span><span class="plain"> = </span><span class="identifier">destination</span><span class="plain">;</span>
<span class="identifier">ipct</span><span class="element">.links</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">ipct</span><span class="element">.origin_globals</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">ipct</span><span class="element">.destination_globals</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">ipct</span><span class="element">.linkage_point</span><span class="plain"> = &amp;</span><span class="identifier">deletion_point</span><span class="plain">;</span>
<span class="identifier">ipct</span><span class="element">.primitives_point</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
&lt;<span class="cwebmacro">Initialise the IPCT state</span> <span class="cwebmacronumber">.1</span>&gt;<span class="plain">;</span>
<span class="functiontext">Inter::Tree::traverse</span><span class="plain">(</span><span class="identifier">origin</span><span class="plain">-</span><span class="element">&gt;package_head</span><span class="plain">-</span><span class="element">&gt;tree</span><span class="plain">,</span>
<span class="functiontext">Inter::Transmigration::correct_origin</span><span class="plain">, &amp;</span><span class="identifier">ipct</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, 0);</span>
</pre>
@ -291,7 +281,7 @@
<p class="endnote">This code is used in <a href="#SP1">&#167;1</a>.</p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b></p>
<p class="inwebparagraph"><a id="SP4"></a><b>&#167;4. </b></p>
<pre class="display">
@ -313,7 +303,7 @@
<span class="identifier">target_package</span><span class="plain"> = </span><span class="functiontext">Inter::Packages::parent</span><span class="plain">(</span><span class="identifier">target_package</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">target_package</span><span class="plain"> == </span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;migrant</span><span class="plain">)</span>
&lt;<span class="cwebmacro">Correct the origin reference to this migrant symbol</span> <span class="cwebmacronumber">3.1</span>&gt;<span class="plain">;</span>
&lt;<span class="cwebmacro">Correct the origin reference to this migrant symbol</span> <span class="cwebmacronumber">4.1</span>&gt;<span class="plain">;</span>
<span class="plain">}</span>
<span class="plain">}</span>
<span class="plain">}</span>
@ -322,17 +312,20 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::Transmigration::correct_origin is used in <a href="#SP1_6">&#167;1.6</a>.</p>
<p class="endnote">The function Inter::Transmigration::correct_origin is used in <a href="#SP1_5">&#167;1.5</a>.</p>
<p class="inwebparagraph"><a id="SP3_1"></a><b>&#167;3.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Correct the origin reference to this migrant symbol</span> <span class="cwebmacronumber">3.1</span>&gt; =
<p class="inwebparagraph"><a id="SP4_1"></a><b>&#167;4.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Correct the origin reference to this migrant symbol</span> <span class="cwebmacronumber">4.1</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="reserved">inter_symbol</span><span class="plain"> *</span><span class="identifier">equivalent</span><span class="plain"> = </span><span class="functiontext">Inter::Transmigration::cached_equivalent</span><span class="plain">(</span><span class="identifier">target</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">equivalent</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
&lt;<span class="cwebmacro">Create a link symbol in the origin</span> <span class="cwebmacronumber">3.1.1</span>&gt;<span class="plain">;</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">URL</span><span class="plain">);</span>
<span class="functiontext">Inter::SymbolsTables::symbol_to_url_name</span><span class="plain">(</span><span class="identifier">URL</span><span class="plain">, </span><span class="identifier">target</span><span class="plain">);</span>
<span class="identifier">equivalent</span><span class="plain"> = </span><span class="functiontext">Inter::Connectors::plug</span><span class="plain">(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;origin_tree</span><span class="plain">, </span><span class="identifier">target</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">, </span><span class="identifier">URL</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">URL</span><span class="plain">);</span>
<span class="functiontext">Inter::Transmigration::cache</span><span class="plain">(</span><span class="identifier">target</span><span class="plain">, </span><span class="identifier">equivalent</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">symb</span><span class="plain">-</span><span class="element">&gt;equated_to</span><span class="plain"> = </span><span class="identifier">equivalent</span><span class="plain">;</span>
@ -340,23 +333,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3">&#167;3</a>.</p>
<p class="inwebparagraph"><a id="SP3_1_1"></a><b>&#167;3.1.1. </b><code class="display">
&lt;<span class="cwebmacrodefn">Create a link symbol in the origin</span> <span class="cwebmacronumber">3.1.1</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">URL</span><span class="plain">);</span>
<span class="functiontext">Inter::SymbolsTables::symbol_to_url_name</span><span class="plain">(</span><span class="identifier">URL</span><span class="plain">, </span><span class="identifier">target</span><span class="plain">);</span>
<span class="identifier">equivalent</span><span class="plain"> = </span><span class="functiontext">Inter::Connectors::plug</span><span class="plain">(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;linkage_point</span><span class="plain">, </span><span class="identifier">target</span><span class="plain">-</span><span class="element">&gt;symbol_name</span><span class="plain">, </span><span class="identifier">URL</span><span class="plain">, &amp;(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">&gt;links</span><span class="plain">));</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">URL</span><span class="plain">);</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP3_1">&#167;3.1</a>.</p>
<p class="endnote">This code is used in <a href="#SP4">&#167;4</a>.</p>
<hr class="tocbar">
<ul class="toc"><li><a href="2-cnn.html">Back to 'Connectors'</a></li><li><i>(This section ends Chapter 2: Interoperability.)</i></li></ul><hr class="tocbar">

View file

@ -376,7 +376,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function Inter::Defn::verify_construct is used in 2/trn (<a href="2-trn.html#SP2_1_1">&#167;2.1.1</a>), 3/iibf (<a href="3-iibf.html#SP1_6">&#167;1.6</a>), 4/tnc (<a href="4-tnc.html#SP1">&#167;1</a>), 4/tcc (<a href="4-tcc.html#SP1">&#167;1</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Defn::verify_construct is used in 2/trn (<a href="2-trn.html#SP3_1_1">&#167;3.1.1</a>), 3/iibf (<a href="3-iibf.html#SP1_6">&#167;1.6</a>), 4/tnc (<a href="4-tnc.html#SP1">&#167;1</a>), 4/tcc (<a href="4-tcc.html#SP1">&#167;1</a>), 4/tmc (<a href="4-tmc.html#SP2">&#167;2</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tdc (<a href="4-tdc.html#SP2">&#167;2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Defn::transpose_construct is used in 3/iibf (<a href="3-iibf.html#SP1_6">&#167;1.6</a>).</p>

View file

@ -107,7 +107,7 @@
<p class="endnote">The function Inter::Errors::plain is used in 3/dfn (<a href="3-dfn.html#SP3">&#167;3</a>, <a href="3-dfn.html#SP4">&#167;4</a>), 3/iibf (<a href="3-iibf.html#SP3">&#167;3</a>), 4/tcc (<a href="4-tcc.html#SP1">&#167;1</a>), 4/tsc (<a href="4-tsc.html#SP1">&#167;1</a>), 4/tvc (<a href="4-tvc.html#SP2">&#167;2</a>), 4/tpc (<a href="4-tpc.html#SP2">&#167;2</a>), 4/tlc (<a href="4-tlc.html#SP2">&#167;2</a>), 4/tac (<a href="4-tac.html#SP2">&#167;2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">&#167;2</a>), 4/tkc (<a href="4-tkc.html#SP2">&#167;2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">&#167;2</a>), 4/trc (<a href="4-trc.html#SP2">&#167;2</a>), 4/tic (<a href="4-tic.html#SP2">&#167;2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">&#167;2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">&#167;2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">&#167;2</a>), 5/tlc (<a href="5-tlc.html#SP2">&#167;2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">&#167;2</a>), 5/tic (<a href="5-tic.html#SP2">&#167;2</a>), 5/trc (<a href="5-trc.html#SP2">&#167;2</a>), 5/tvc (<a href="5-tvc.html#SP2">&#167;2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">&#167;2</a>), 5/tcc (<a href="5-tcc.html#SP2">&#167;2</a>), 5/tec (<a href="5-tec.html#SP2">&#167;2</a>), 5/trc2 (<a href="5-trc2.html#SP2">&#167;2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">&#167;2</a>), 5/tsc (<a href="5-tsc.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Errors::issue is used in 2/st (<a href="2-st.html#SP10">&#167;10</a>), 2/trn (<a href="2-trn.html#SP2_1_1">&#167;2.1.1</a>), 3/iibf (<a href="3-iibf.html#SP1_6">&#167;1.6</a>, <a href="3-iibf.html#SP3">&#167;3</a>), 3/iitf (<a href="3-iitf.html#SP1">&#167;1</a>, <a href="3-iitf.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Errors::issue is used in 2/st (<a href="2-st.html#SP10">&#167;10</a>), 2/trn (<a href="2-trn.html#SP3_1_1">&#167;3.1.1</a>), 3/iibf (<a href="3-iibf.html#SP1_6">&#167;1.6</a>, <a href="3-iibf.html#SP3">&#167;3</a>), 3/iitf (<a href="3-iitf.html#SP1">&#167;1</a>, <a href="3-iitf.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function Inter::Errors::issue_to appears nowhere else.</p>

View file

@ -214,7 +214,7 @@
<p class="endnote">The function Inter::Package::which appears nowhere else.</p>
<p class="endnote">The function Inter::Package::defined_by_frame is used in 2/bkm (<a href="2-bkm.html#SP1">&#167;1</a>), 2/st (<a href="2-st.html#SP10">&#167;10</a>), 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 2/trn (<a href="2-trn.html#SP2">&#167;2</a>, <a href="2-trn.html#SP3">&#167;3</a>).</p>
<p class="endnote">The function Inter::Package::defined_by_frame is used in 2/bkm (<a href="2-bkm.html#SP1">&#167;1</a>), 2/st (<a href="2-st.html#SP10">&#167;10</a>), 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 2/trn (<a href="2-trn.html#SP3">&#167;3</a>, <a href="2-trn.html#SP4">&#167;4</a>).</p>
<p class="endnote">The function Inter::Package::type is used in 2/pck (<a href="2-pck.html#SP3">&#167;3</a>).</p>

View file

@ -80,7 +80,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function main is used in 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 1/ppl (<a href="1-ppl.html#SP5">&#167;5</a>), 2/res (<a href="2-res.html#SP1">&#167;1</a>), 4/fc (<a href="4-fc.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function main is used in 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 2/cnn (<a href="2-cnn.html#SP1">&#167;1</a>), 1/ppl (<a href="1-ppl.html#SP5">&#167;5</a>), 2/res (<a href="2-res.html#SP1">&#167;1</a>), 4/fc (<a href="4-fc.html#SP1">&#167;1</a>).</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b></p>

View file

@ -14,7 +14,7 @@ package main _plain
kind K_number int32
kind K_func function K_number -> K_number
# Exported my_fn here
package connectors _linkage
symbol plug misc secret --? /main/my_fn/secret
constant awkward K_number = secret
constant troublesome K_number = 12
package connectors _linkage
symbol plug misc secret --? /main/my_fn/secret

View file

@ -175,7 +175,7 @@ package main _plain
symbol private misc x
symbol private label .begin
symbol external misc K_number --> /main/K_number
symbol external misc troublesome --> /main/my_fn/connectors/troublesome
symbol external misc troublesome --> /main/connectors/troublesome
local x K_number __call_parameter
code
.begin
@ -186,5 +186,5 @@ package main _plain
lab .begin
constant R_101 K_func = R_101_B
constant secret K_number = 7
package connectors _linkage
symbol plug misc troublesome --? /main/troublesome
package connectors _linkage
symbol plug misc troublesome --? /main/troublesome

View file

@ -3,33 +3,39 @@
To manage link symbols.
@ =
inter_symbol *Inter::Connectors::plug(inter_bookmark *IBM, text_stream *plug_name, text_stream *wanted, inter_package **package_cache) {
inter_package *connectors = Inter::Connectors::connectors_package(IBM, package_cache);
inter_symbol *plug = Inter::SymbolsTables::create_with_unique_name(Inter::Packages::scope(connectors), plug_name);
inter_symbol *Inter::Connectors::plug(inter_tree *I, text_stream *plug_name, text_stream *wanted) {
inter_package *connectors = Inter::Connectors::connectors_package(I);
inter_symbol *plug = Inter::SymbolsTables::create_with_unique_name(
Inter::Packages::scope(connectors), plug_name);
Inter::SymbolsTables::make_plug(plug, wanted);
return plug;
}
inter_symbol *Inter::Connectors::socket(inter_bookmark *IBM, text_stream *socket_name, inter_symbol *wired_from, inter_package **package_cache) {
inter_package *connectors = Inter::Connectors::connectors_package(IBM, package_cache);
inter_symbol *socket = Inter::SymbolsTables::create_with_unique_name(Inter::Packages::scope(connectors), socket_name);
inter_symbol *Inter::Connectors::socket(inter_tree *I, text_stream *socket_name, inter_symbol *wired_from) {
inter_package *connectors = Inter::Connectors::connectors_package(I);
inter_symbol *socket = Inter::SymbolsTables::create_with_unique_name(
Inter::Packages::scope(connectors), socket_name);
Inter::SymbolsTables::make_socket(socket, wired_from);
return socket;
}
inter_package *Inter::Connectors::connectors_package(inter_bookmark *IBM, inter_package **package_cache) {
inter_package *connectors = NULL;
if (package_cache) connectors = *package_cache;
inter_package *Inter::Connectors::connectors_package(inter_tree *I) {
if (I == NULL) internal_error("no tree for connectors");
inter_package *connectors = Inter::Tree::connectors_package(I);
if (connectors == NULL) {
connectors = Inter::Packages::by_name(Inter::Bookmarks::package(IBM), I"connectors");
inter_package *main_package = Inter::Tree::main_package(I);
if (main_package == NULL) internal_error("tree without main");
connectors = Inter::Packages::by_name(main_package, I"connectors");
if (connectors == NULL) {
inter_symbol *linkage = Inter::SymbolsTables::url_name_to_symbol(I, NULL, I"/_linkage");
if (linkage == NULL) internal_error("no linkage ptype");
inter_bookmark IBM = Inter::Bookmarks::at_end_of_this_package(main_package);
Inter::Package::new_package(&IBM, I"connectors", linkage,
(inter_t) Inter::Bookmarks::baseline(&IBM)+1, NULL, &(connectors));
}
if (connectors == NULL) internal_error("unable to create connector package");
Inter::Tree::set_connectors_package(I, connectors);
Inter::Packages::make_linklike(connectors);
}
if (connectors == NULL) {
inter_symbol *linkage = Inter::SymbolsTables::url_name_to_symbol(Inter::Bookmarks::tree(IBM), NULL, I"/_linkage");
if (linkage == NULL) internal_error("no linkage ptype");
Inter::Package::new_package(IBM, I"connectors", linkage, (inter_t) Inter::Bookmarks::baseline(IBM)+1, NULL, &(connectors));
}
if (connectors == NULL) internal_error("unable to create connector package");
if (package_cache) *package_cache = connectors;
Inter::Packages::make_linklike(connectors);
return connectors;
}

View file

@ -11,6 +11,7 @@ typedef struct inter_tree {
struct inter_tree_node *root_node;
struct inter_package *root_package;
struct inter_package *main_package;
struct inter_package *connectors_package;
MEMORY_MANAGEMENT
} inter_tree;
@ -18,6 +19,7 @@ typedef struct inter_tree {
inter_tree *Inter::Tree::new(void) {
inter_tree *I = CREATE(inter_tree);
I->main_package = NULL;
I->connectors_package = NULL;
I->housed = Inter::Warehouse::new();
inter_t N = Inter::Warehouse::create_symbols_table(I->housed);
inter_symbols_table *globals = Inter::Warehouse::get_symbols_table(I->housed, N);
@ -42,11 +44,21 @@ inter_package *Inter::Tree::main_package(inter_tree *I) {
return NULL;
}
inter_package *Inter::Tree::connectors_package(inter_tree *I) {
if (I) return I->connectors_package;
return NULL;
}
void Inter::Tree::set_main_package(inter_tree *I, inter_package *M) {
if (I == NULL) internal_error("no tree");
I->main_package = M;
}
void Inter::Tree::set_connectors_package(inter_tree *I, inter_package *M) {
if (I == NULL) internal_error("no tree");
I->connectors_package = M;
}
inter_warehouse *Inter::Tree::warehouse(inter_tree *I) {
return I->housed;
}

View file

@ -45,6 +45,7 @@ inter_tree_node *Inter::Packages::definition(inter_package *pack) {
inter_tree *Inter::Packages::tree(inter_package *pack) {
if (default_ptree) return default_ptree;
if (pack == NULL) return NULL;
return pack->package_head->tree;
}

View file

@ -16,8 +16,10 @@ inter_symbol *Inter::Transmigration::cached_equivalent(inter_symbol *S) {
void Inter::Transmigration::move(inter_package *migrant, inter_package *destination, int tidy_origin) {
LOG("Move $5 to $5\n", migrant, destination);
inter_tree *origin_tree = Inter::Packages::tree(migrant);
inter_tree *destination_tree = Inter::Packages::tree(destination);
inter_package *origin = Inter::Packages::parent(migrant);
inter_bookmark deletion_point, insertion_point, linkage_point, primitives_point;
inter_bookmark deletion_point, insertion_point, primitives_point;
@<Create these bookmarks@>;
@<Mark the insertion and deletion points with comments@>;
@<Physically move the subtree to its new home@>;
@ -30,7 +32,6 @@ void Inter::Transmigration::move(inter_package *migrant, inter_package *destinat
Inter::Bookmarks::after_this_node(migrant->package_head->tree, migrant->package_head);
insertion_point =
Inter::Bookmarks::at_end_of_this_package(destination);
linkage_point = Inter::Bookmarks::at_end_of_this_package(migrant);
inter_tree_node *prims = NULL;
LOOP_THROUGH_INTER_CHILDREN(F, destination->package_head->tree->root_node)
if (F->W.data[ID_IFLD] == PRIMITIVE_IST)
@ -58,23 +59,22 @@ void Inter::Transmigration::move(inter_package *migrant, inter_package *destinat
typedef struct ipct_state {
inter_package *migrant;
inter_package *destination;
inter_package *links;
inter_bookmark *linkage_point;
inter_bookmark *primitives_point;
inter_symbols_table *origin_globals;
inter_symbols_table *destination_globals;
inter_tree *origin_tree;
inter_tree *destination_tree;
} ipct_state;
@<Correct any references from the migrant to the origin@> =
@<Initialise the IPCT state@> =
ipct_cache_count++;
ipct_state ipct;
ipct.migrant = migrant;
ipct.destination = destination;
ipct.links = NULL;
ipct.origin_globals = Inter::Tree::global_scope(migrant->package_head->tree);
ipct.destination_globals = Inter::Tree::global_scope(destination->package_head->tree);
ipct.linkage_point = &linkage_point;
ipct.origin_tree = origin_tree;
ipct.destination_tree = destination_tree;
ipct.primitives_point = &primitives_point;
@<Correct any references from the migrant to the origin@> =
ipct_state ipct;
@<Initialise the IPCT state@>;
Inter::Tree::traverse(destination->package_head->tree,
Inter::Transmigration::correct_migrant, &ipct, migrant, 0);
@ -84,7 +84,7 @@ void Inter::Transmigration::correct_migrant(inter_tree *I, inter_tree_node *P, v
P->tree = I;
if ((P->W.data[ID_IFLD] == INV_IST) && (P->W.data[METHOD_INV_IFLD] == INVOKED_PRIMITIVE)) {
inter_symbol *primitive =
Inter::SymbolsTables::symbol_from_id(ipct->origin_globals, P->W.data[INVOKEE_INV_IFLD]);
Inter::SymbolsTables::symbol_from_id(Inter::Tree::global_scope(ipct->origin_tree), P->W.data[INVOKEE_INV_IFLD]);
if (primitive) @<Correct the reference to this primitive@>;
}
if (P->W.data[ID_IFLD] == PACKAGE_IST) {
@ -112,16 +112,16 @@ void Inter::Transmigration::correct_migrant(inter_tree *I, inter_tree_node *P, v
@<Correct the reference to this primitive@> =
inter_symbol *equivalent_primitive = Inter::Transmigration::cached_equivalent(primitive);
if (equivalent_primitive == NULL) {
equivalent_primitive = Inter::SymbolsTables::symbol_from_name(ipct->destination_globals, primitive->symbol_name);
equivalent_primitive = Inter::SymbolsTables::symbol_from_name(Inter::Tree::global_scope(ipct->destination_tree), primitive->symbol_name);
if (equivalent_primitive == NULL) @<Duplicate this primitive@>;
if (equivalent_primitive) Inter::Transmigration::cache(primitive, equivalent_primitive);
}
if (equivalent_primitive)
P->W.data[INVOKEE_INV_IFLD] = Inter::SymbolsTables::id_from_symbol_inner(ipct->destination_globals, NULL, equivalent_primitive);
P->W.data[INVOKEE_INV_IFLD] = Inter::SymbolsTables::id_from_symbol_inner(Inter::Tree::global_scope(ipct->destination_tree), NULL, equivalent_primitive);
@<Duplicate this primitive@> =
equivalent_primitive = Inter::SymbolsTables::symbol_from_name_creating(ipct->destination_globals, primitive->symbol_name);
inter_tree_node *D = Inter::Node::fill_1(ipct->primitives_point, PRIMITIVE_IST, Inter::SymbolsTables::id_from_symbol_inner(ipct->destination_globals, NULL, equivalent_primitive), NULL, 0);
equivalent_primitive = Inter::SymbolsTables::symbol_from_name_creating(Inter::Tree::global_scope(ipct->destination_tree), primitive->symbol_name);
inter_tree_node *D = Inter::Node::fill_1(ipct->primitives_point, PRIMITIVE_IST, Inter::SymbolsTables::id_from_symbol_inner(Inter::Tree::global_scope(ipct->destination_tree), NULL, equivalent_primitive), NULL, 0);
inter_tree_node *old_D = primitive->definition;
for (int i=CAT_PRIM_IFLD; i<old_D->W.extent; i++) {
if (Inter::Node::extend(D, (inter_t) 1) == FALSE) internal_error("can't extend");
@ -142,25 +142,15 @@ void Inter::Transmigration::correct_migrant(inter_tree *I, inter_tree_node *P, v
Inter::SymbolsTables::symbol_to_url_name(URL, target);
equivalent = Inter::SymbolsTables::url_name_to_symbol(ipct->destination->package_head->tree, NULL, URL);
if (equivalent == NULL)
@<Create a link symbol to represent the unavailability of this symbol@>;
equivalent = Inter::Connectors::plug(ipct->destination_tree, target->symbol_name, URL);
DISCARD_TEXT(URL);
Inter::Transmigration::cache(target, equivalent);
}
symb->equated_to = equivalent;
@<Create a link symbol to represent the unavailability of this symbol@> =
equivalent = Inter::Connectors::plug(ipct->linkage_point, target->symbol_name, URL, &(ipct->links));
@<Correct any references from the origin to the migrant@> =
ipct_cache_count++;
ipct_state ipct;
ipct.migrant = migrant;
ipct.destination = destination;
ipct.links = NULL;
ipct.origin_globals = NULL;
ipct.destination_globals = NULL;
ipct.linkage_point = &deletion_point;
ipct.primitives_point = NULL;
@<Initialise the IPCT state@>;
Inter::Tree::traverse(origin->package_head->tree,
Inter::Transmigration::correct_origin, &ipct, NULL, 0);
@ -192,13 +182,10 @@ void Inter::Transmigration::correct_origin(inter_tree *I, inter_tree_node *P, vo
@<Correct the origin reference to this migrant symbol@> =
inter_symbol *equivalent = Inter::Transmigration::cached_equivalent(target);
if (equivalent == NULL) {
@<Create a link symbol in the origin@>;
TEMPORARY_TEXT(URL);
Inter::SymbolsTables::symbol_to_url_name(URL, target);
equivalent = Inter::Connectors::plug(ipct->origin_tree, target->symbol_name, URL);
DISCARD_TEXT(URL);
Inter::Transmigration::cache(target, equivalent);
}
symb->equated_to = equivalent;
@<Create a link symbol in the origin@> =
TEMPORARY_TEXT(URL);
Inter::SymbolsTables::symbol_to_url_name(URL, target);
equivalent = Inter::Connectors::plug(ipct->linkage_point, target->symbol_name, URL, &(ipct->links));
DISCARD_TEXT(URL);