mirror of
https://github.com/ganelson/inform.git
synced 2024-07-03 07:24:58 +03:00
Clarified connectors
This commit is contained in:
parent
4ad505c3fc
commit
1cf900beea
|
@ -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">§52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">§3.1</a>), 2/pck (<a href="2-pck.html#SP3">§3</a>), 3/rst (<a href="3-rst.html#SP6">§6</a>), 4/am (<a href="4-am.html#SP26_1">§26.1</a>), 8/ef (<a href="8-ef.html#SP26">§26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">§3.2</a>), 10/varc (<a href="10-varc.html#SP14">§14</a>), 19/tb (<a href="19-tb.html#SP27">§27</a>, <a href="19-tb.html#SP27_1">§27.1</a>, <a href="19-tb.html#SP27_1_3">§27.1.3</a>, <a href="19-tb.html#SP29">§29</a>), 21/rl2 (<a href="21-rl2.html#SP23">§23</a>), 26/uo (<a href="26-uo.html#SP11_1">§11.1</a>), 27/hr (<a href="27-hr.html#SP5">§5</a>), 27/cm (<a href="27-cm.html#SP1">§1</a>), 1/ppl (<a href="1-ppl.html#SP5">§5</a>), 2/res (<a href="2-res.html#SP1">§1</a>), 4/fc (<a href="4-fc.html#SP1">§1</a>), 2/hf (<a href="2-hf.html#SP6">§6</a>).</p>
|
||||
<p class="endnote">The function main is used in 2/pt (<a href="2-pt.html#SP52">§52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">§3.1</a>), 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/cnn (<a href="2-cnn.html#SP1">§1</a>), 3/rst (<a href="3-rst.html#SP6">§6</a>), 4/am (<a href="4-am.html#SP26_1">§26.1</a>), 8/ef (<a href="8-ef.html#SP26">§26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">§3.2</a>), 10/varc (<a href="10-varc.html#SP14">§14</a>), 19/tb (<a href="19-tb.html#SP27">§27</a>, <a href="19-tb.html#SP27_1">§27.1</a>, <a href="19-tb.html#SP27_1_3">§27.1.3</a>, <a href="19-tb.html#SP29">§29</a>), 21/rl2 (<a href="21-rl2.html#SP23">§23</a>), 26/uo (<a href="26-uo.html#SP11_1">§11.1</a>), 27/hr (<a href="27-hr.html#SP5">§5</a>), 27/cm (<a href="27-cm.html#SP1">§1</a>), 1/ppl (<a href="1-ppl.html#SP5">§5</a>), 2/res (<a href="2-res.html#SP1">§1</a>), 4/fc (<a href="4-fc.html#SP1">§1</a>), 2/hf (<a href="2-hf.html#SP6">§6</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§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
|
||||
|
|
|
@ -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">§52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">§3.1</a>), 2/pck (<a href="2-pck.html#SP3">§3</a>), 3/rst (<a href="3-rst.html#SP6">§6</a>), 4/am (<a href="4-am.html#SP26_1">§26.1</a>), 8/ef (<a href="8-ef.html#SP26">§26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">§3.2</a>), 10/varc (<a href="10-varc.html#SP14">§14</a>), 19/tb (<a href="19-tb.html#SP27">§27</a>, <a href="19-tb.html#SP27_1">§27.1</a>, <a href="19-tb.html#SP27_1_3">§27.1.3</a>, <a href="19-tb.html#SP29">§29</a>), 21/rl2 (<a href="21-rl2.html#SP23">§23</a>), 26/uo (<a href="26-uo.html#SP11_1">§11.1</a>), 27/hr (<a href="27-hr.html#SP5">§5</a>), 27/cm (<a href="27-cm.html#SP1">§1</a>), 1/ppl (<a href="1-ppl.html#SP5">§5</a>), 2/res (<a href="2-res.html#SP1">§1</a>), 4/fc (<a href="4-fc.html#SP1">§1</a>), 3/sm (<a href="3-sm.html#SP36">§36</a>, <a href="3-sm.html#SP36_1">§36.1</a>, <a href="3-sm.html#SP38">§38</a>), 3/em2 (<a href="3-em2.html#SP24">§24</a>), 4/ap (<a href="4-ap.html#SP2">§2</a>), 2/hf (<a href="2-hf.html#SP6">§6</a>).</p>
|
||||
<p class="endnote">The function main is used in 2/pt (<a href="2-pt.html#SP52">§52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">§3.1</a>), 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/cnn (<a href="2-cnn.html#SP1">§1</a>), 3/rst (<a href="3-rst.html#SP6">§6</a>), 4/am (<a href="4-am.html#SP26_1">§26.1</a>), 8/ef (<a href="8-ef.html#SP26">§26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">§3.2</a>), 10/varc (<a href="10-varc.html#SP14">§14</a>), 19/tb (<a href="19-tb.html#SP27">§27</a>, <a href="19-tb.html#SP27_1">§27.1</a>, <a href="19-tb.html#SP27_1_3">§27.1.3</a>, <a href="19-tb.html#SP29">§29</a>), 21/rl2 (<a href="21-rl2.html#SP23">§23</a>), 26/uo (<a href="26-uo.html#SP11_1">§11.1</a>), 27/hr (<a href="27-hr.html#SP5">§5</a>), 27/cm (<a href="27-cm.html#SP1">§1</a>), 1/ppl (<a href="1-ppl.html#SP5">§5</a>), 2/res (<a href="2-res.html#SP1">§1</a>), 4/fc (<a href="4-fc.html#SP1">§1</a>), 3/sm (<a href="3-sm.html#SP36">§36</a>, <a href="3-sm.html#SP36_1">§36.1</a>, <a href="3-sm.html#SP38">§38</a>), 3/em2 (<a href="3-em2.html#SP24">§24</a>), 4/ap (<a href="4-ap.html#SP2">§2</a>), 2/hf (<a href="2-hf.html#SP6">§6</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§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
|
||||
|
|
|
@ -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">§1</a>), 3/iitf (<a href="3-iitf.html#SP1">§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">§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">§1</a>), 2/trn (<a href="2-trn.html#SP1_1">§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">§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">§4</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Bookmarks::tree is used in 2/in (<a href="2-in.html#SP4">§4</a>), 2/st (<a href="2-st.html#SP8">§8</a>, <a href="2-st.html#SP9">§9</a>), 2/cnn (<a href="2-cnn.html#SP1">§1</a>), 3/dfn (<a href="3-dfn.html#SP4">§4</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Bookmarks::tree is used in 2/in (<a href="2-in.html#SP4">§4</a>), 2/st (<a href="2-st.html#SP8">§8</a>, <a href="2-st.html#SP9">§9</a>), 3/dfn (<a href="3-dfn.html#SP4">§4</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Bookmarks::warehouse is used in 2/trn (<a href="2-trn.html#SP1_2">§1.2</a>), 3/dfn (<a href="3-dfn.html#SP4">§4</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§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">§2</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Bookmarks::package is used in 2/in (<a href="2-in.html#SP4">§4</a>), 2/st (<a href="2-st.html#SP8">§8</a>, <a href="2-st.html#SP9">§9</a>), 2/cnn (<a href="2-cnn.html#SP1">§1</a>), 2/trn (<a href="2-trn.html#SP1_2">§1.2</a>, <a href="2-trn.html#SP2_1_1">§2.1.1</a>), 3/dfn (<a href="3-dfn.html#SP4">§4</a>), 4/tnc (<a href="4-tnc.html#SP1">§1</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Bookmarks::package is used in 2/in (<a href="2-in.html#SP4">§4</a>), 2/st (<a href="2-st.html#SP8">§8</a>, <a href="2-st.html#SP9">§9</a>), 2/trn (<a href="2-trn.html#SP1_2">§1.2</a>, <a href="2-trn.html#SP3_1_1">§3.1.1</a>), 3/dfn (<a href="3-dfn.html#SP4">§4</a>), 4/tnc (<a href="4-tnc.html#SP1">§1</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Bookmarks::insert is used in 2/trn (<a href="2-trn.html#SP1_3">§1.3</a>, <a href="2-trn.html#SP2_1_1">§2.1.1</a>), 3/iibf (<a href="3-iibf.html#SP1_6">§1.6</a>), 4/tnc (<a href="4-tnc.html#SP1">§1</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Bookmarks::insert is used in 2/trn (<a href="2-trn.html#SP1_3">§1.3</a>, <a href="2-trn.html#SP3_1_1">§3.1.1</a>), 3/iibf (<a href="3-iibf.html#SP1_6">§1.6</a>), 4/tnc (<a href="4-tnc.html#SP1">§1</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The structure inter_bookmark is private to this section.</p>
|
||||
|
||||
|
|
|
@ -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">(&</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">(&</span><span class="identifier">IBM</span><span class="plain">)+1, </span><span class="identifier">NULL</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="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">, &(</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">§2.2.1</a>, <a href="2-trn.html#SP3_1_1">§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">§3.2</a>, <a href="2-trn.html#SP4_1">§4.1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Connectors::socket appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -268,7 +268,7 @@
|
|||
|
||||
<p class="endnote">The function Inter::Node::fill_0 is used in 4/tnc (<a href="4-tnc.html#SP1">§1</a>), 4/tcc (<a href="4-tcc.html#SP1">§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">§2.1.1</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§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">§3.1.1</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Node::fill_2 is used in 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§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">§2.1.1</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Node::extend is used in 2/trn (<a href="2-trn.html#SP3_1_1">§3.1.1</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Node::vcount is used in 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>).</p>
|
||||
|
||||
|
|
|
@ -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">>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">>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">>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">>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">>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">>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">>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">>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">>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">§3</a>), 3/iibf (<a href="3-iibf.html#SP1_4">§1.4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Tree::main_package is used in <a href="#SP5">§5</a>, 2/st (<a href="2-st.html#SP4">§4</a>), 2/pck (<a href="2-pck.html#SP3">§3</a>).</p>
|
||||
<p class="endnote">The function Inter::Tree::main_package is used in <a href="#SP5">§5</a>, 2/st (<a href="2-st.html#SP4">§4</a>), 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/cnn (<a href="2-cnn.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Tree::connectors_package is used in 2/cnn (<a href="2-cnn.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Tree::set_main_package is used in 2/pck (<a href="2-pck.html#SP3">§3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Tree::set_connectors_package is used in 2/cnn (<a href="2-cnn.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Tree::warehouse is used in 2/bkm (<a href="2-bkm.html#SP1">§1</a>), 2/in (<a href="2-in.html#SP4">§4</a>), 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/sym (<a href="2-sym.html#SP4">§4</a>), 3/dfn (<a href="3-dfn.html#SP3">§3</a>), 3/iibf (<a href="3-iibf.html#SP1">§1</a>, <a href="3-iibf.html#SP1_1">§1.1</a>), 3/idt (<a href="3-idt.html#SP3">§3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Tree::global_scope is used in 2/bkm (<a href="2-bkm.html#SP1">§1</a>), 2/in (<a href="2-in.html#SP3">§3</a>), 2/st (<a href="2-st.html#SP8">§8</a>, <a href="2-st.html#SP9">§9</a>, <a href="2-st.html#SP11">§11</a>), 2/trn (<a href="2-trn.html#SP1_5">§1.5</a>), 3/iibf (<a href="3-iibf.html#SP1_4">§1.4</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Tree::global_scope is used in 2/bkm (<a href="2-bkm.html#SP1">§1</a>), 2/in (<a href="2-in.html#SP3">§3</a>), 2/st (<a href="2-st.html#SP8">§8</a>, <a href="2-st.html#SP9">§9</a>, <a href="2-st.html#SP11">§11</a>), 2/trn (<a href="2-trn.html#SP3">§3</a>, <a href="2-trn.html#SP3_1">§3.1</a>, <a href="2-trn.html#SP3_1_1">§3.1.1</a>), 3/iibf (<a href="3-iibf.html#SP1_4">§1.4</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Tree::previous is used in <a href="#SP3_1">§3.1</a>, <a href="#SP3_5">§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">§1.1.5</a>), 3/iitf (<a href="3-iitf.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Tree::traverse is used in 2/st (<a href="2-st.html#SP10">§10</a>), 2/trn (<a href="2-trn.html#SP1_5">§1.5</a>, <a href="2-trn.html#SP1_6">§1.6</a>), 3/iibf (<a href="3-iibf.html#SP1_1_5">§1.1.5</a>), 3/iitf (<a href="3-iitf.html#SP1">§1</a>, <a href="3-iitf.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Tree::traverse is used in 2/st (<a href="2-st.html#SP10">§10</a>), 2/trn (<a href="2-trn.html#SP1_4">§1.4</a>, <a href="2-trn.html#SP1_5">§1.5</a>), 3/iibf (<a href="3-iibf.html#SP1_1_5">§1.1.5</a>), 3/iitf (<a href="3-iitf.html#SP1">§1</a>, <a href="3-iitf.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Tree::traverse_r appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -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">>package_head</span><span class="plain">-</span><span class="element">>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">§5</a>), 2/bkm (<a href="2-bkm.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::tree is used in 2/bkm (<a href="2-bkm.html#SP1">§1</a>), 2/st (<a href="2-st.html#SP10">§10</a>), 3/iibf (<a href="3-iibf.html#SP1_1_3">§1.1.3</a>, <a href="3-iibf.html#SP1_1_4">§1.1.4</a>).</p>
|
||||
<p class="endnote">The function Inter::Packages::tree is used in 2/bkm (<a href="2-bkm.html#SP1">§1</a>), 2/st (<a href="2-st.html#SP10">§10</a>), 2/trn (<a href="2-trn.html#SP1">§1</a>), 3/iibf (<a href="3-iibf.html#SP1_1_3">§1.1.3</a>, <a href="3-iibf.html#SP1_1_4">§1.1.4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::name is used in 2/st (<a href="2-st.html#SP11">§11</a>), 2/trn (<a href="2-trn.html#SP1_2">§1.2</a>), 3/dfn (<a href="3-dfn.html#SP4">§4</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§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">§1.4.3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::is_linklike is used in 2/trn (<a href="2-trn.html#SP2">§2</a>, <a href="2-trn.html#SP3">§3</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function Inter::Packages::is_linklike is used in 2/trn (<a href="2-trn.html#SP3">§3</a>, <a href="2-trn.html#SP4">§4</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::make_linklike is used in 2/cnn (<a href="2-cnn.html#SP1">§1</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§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">§2</a>), 3/iibf (<a href="3-iibf.html#SP1_4_3">§1.4.3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::parent is used in 2/st (<a href="2-st.html#SP11">§11</a>), 2/trn (<a href="2-trn.html#SP1">§1</a>, <a href="2-trn.html#SP1_3">§1.3</a>, <a href="2-trn.html#SP2">§2</a>, <a href="2-trn.html#SP3">§3</a>), 3/dfn (<a href="3-dfn.html#SP4">§4</a>), 3/iibf (<a href="3-iibf.html#SP1_1_3_3">§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">§11</a>), 2/trn (<a href="2-trn.html#SP1">§1</a>, <a href="2-trn.html#SP1_3">§1.3</a>, <a href="2-trn.html#SP3">§3</a>, <a href="2-trn.html#SP4">§4</a>), 3/dfn (<a href="3-dfn.html#SP4">§4</a>), 3/iibf (<a href="3-iibf.html#SP1_1_3_3">§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">§4</a>), 3/vi (<a href="3-vi.html#SP1">§1</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::scope is used in 2/it (<a href="2-it.html#SP2">§2</a>), 2/bkm (<a href="2-bkm.html#SP1">§1</a>), 2/st (<a href="2-st.html#SP4">§4</a>, <a href="2-st.html#SP7">§7</a>, <a href="2-st.html#SP8">§8</a>, <a href="2-st.html#SP9">§9</a>, <a href="2-st.html#SP10">§10</a>, <a href="2-st.html#SP11">§11</a>), 2/cnn (<a href="2-cnn.html#SP1">§1</a>), 2/trn (<a href="2-trn.html#SP2">§2</a>, <a href="2-trn.html#SP3">§3</a>), 3/vi (<a href="3-vi.html#SP1">§1</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Packages::scope is used in 2/it (<a href="2-it.html#SP2">§2</a>), 2/bkm (<a href="2-bkm.html#SP1">§1</a>), 2/st (<a href="2-st.html#SP4">§4</a>, <a href="2-st.html#SP7">§7</a>, <a href="2-st.html#SP8">§8</a>, <a href="2-st.html#SP9">§9</a>, <a href="2-st.html#SP10">§10</a>, <a href="2-st.html#SP11">§11</a>), 2/cnn (<a href="2-cnn.html#SP1">§1</a>), 2/trn (<a href="2-trn.html#SP3">§3</a>, <a href="2-trn.html#SP4">§4</a>), 3/vi (<a href="3-vi.html#SP1">§1</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Packages::scope_of is used in 2/st (<a href="2-st.html#SP7">§7</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>).</p>
|
||||
|
||||
|
|
|
@ -223,11 +223,11 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Inter::SymbolsTables::symbol_from_name is used in <a href="#SP5">§5</a>, <a href="#SP11">§11</a>, 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/trn (<a href="2-trn.html#SP2_1">§2.1</a>), 3/iitf (<a href="3-iitf.html#SP1">§1</a>), 3/idt (<a href="3-idt.html#SP3">§3</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::SymbolsTables::symbol_from_name is used in <a href="#SP5">§5</a>, <a href="#SP11">§11</a>, 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/trn (<a href="2-trn.html#SP3_1">§3.1</a>), 3/iitf (<a href="3-iitf.html#SP1">§1</a>), 3/idt (<a href="3-idt.html#SP3">§3</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§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">§5</a>, 2/trn (<a href="2-trn.html#SP2_1_1">§2.1.1</a>), 3/iitf (<a href="3-iitf.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function Inter::SymbolsTables::symbol_from_name_creating is used in <a href="#SP5">§5</a>, 2/trn (<a href="2-trn.html#SP3_1_1">§3.1.1</a>), 3/iitf (<a href="3-iitf.html#SP1">§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">§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">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::SymbolsTables::symbol_from_id is used in <a href="#SP7">§7</a>, 2/sym (<a href="2-sym.html#SP4">§4</a>), 2/trn (<a href="2-trn.html#SP2">§2</a>), 3/iibf (<a href="3-iibf.html#SP1_5">§1.5</a>), 3/vi (<a href="3-vi.html#SP1">§1</a>), 3/idt (<a href="3-idt.html#SP2">§2</a>, <a href="3-idt.html#SP3">§3</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::SymbolsTables::symbol_from_id is used in <a href="#SP7">§7</a>, 2/sym (<a href="2-sym.html#SP4">§4</a>), 2/trn (<a href="2-trn.html#SP3">§3</a>), 3/iibf (<a href="3-iibf.html#SP1_5">§1.5</a>), 3/vi (<a href="3-vi.html#SP1">§1</a>), 3/idt (<a href="3-idt.html#SP2">§2</a>, <a href="3-idt.html#SP3">§3</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP7"></a><b>§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">§2.1</a>, <a href="2-trn.html#SP2_1_1">§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">§3.1</a>, <a href="2-trn.html#SP3_1_1">§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">§3</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§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">§10</a>, 2/cnn (<a href="2-cnn.html#SP1">§1</a>), 2/trn (<a href="2-trn.html#SP2_2">§2.2</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function Inter::SymbolsTables::url_name_to_symbol is used in <a href="#SP10">§10</a>, 2/cnn (<a href="2-cnn.html#SP1">§1</a>), 2/trn (<a href="2-trn.html#SP3_2">§3.2</a>), 4/tsc (<a href="4-tsc.html#SP1">§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">§2</a>, <a href="2-sym.html#SP4">§4</a>), 2/trn (<a href="2-trn.html#SP2_2">§2.2</a>, <a href="2-trn.html#SP3_1_1">§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">§2</a>, <a href="2-sym.html#SP4">§4</a>), 2/trn (<a href="2-trn.html#SP3_2">§3.2</a>, <a href="2-trn.html#SP4_1">§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">
|
||||
|
|
|
@ -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>
|
||||
<<span class="cwebmacro">Create these bookmarks</span> <span class="cwebmacronumber">1.1</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Mark the insertion and deletion points with comments</span> <span class="cwebmacronumber">1.2</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Physically move the subtree to its new home</span> <span class="cwebmacronumber">1.3</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Correct any references from the migrant to the origin</span> <span class="cwebmacronumber">1.5</span>><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">tidy_origin</span><span class="plain">) </span><<span class="cwebmacro">Correct any references from the origin to the migrant</span> <span class="cwebmacronumber">1.6</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Correct any references from the migrant to the origin</span> <span class="cwebmacronumber">1.4</span>><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">tidy_origin</span><span class="plain">) </span><<span class="cwebmacro">Correct any references from the origin to the migrant</span> <span class="cwebmacronumber">1.5</span>><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">§2.1</a>, <a href="#SP2_2">§2.2</a>, <a href="#SP3_1">§3.1</a>.</p>
|
||||
<p class="endnote">The function Inter::Transmigration::cache is used in <a href="#SP3_1">§3.1</a>, <a href="#SP3_2">§3.2</a>, <a href="#SP4_1">§4.1</a>.</p>
|
||||
|
||||
<p class="endnote">The function Inter::Transmigration::cached_equivalent is used in <a href="#SP2_1">§2.1</a>, <a href="#SP2_2">§2.2</a>, <a href="#SP3_1">§3.1</a>.</p>
|
||||
<p class="endnote">The function Inter::Transmigration::cached_equivalent is used in <a href="#SP3_1">§3.1</a>, <a href="#SP3_2">§3.2</a>, <a href="#SP4_1">§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">>package_head</span><span class="plain">-</span><span class="element">>tree</span><span class="plain">, </span><span class="identifier">migrant</span><span class="plain">-</span><span class="element">>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">>package_head</span><span class="plain">-</span><span class="element">>tree</span><span class="plain">-</span><span class="element">>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">>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">§1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1_4"></a><b>§1.4. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§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>§1.5. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Correct any references from the migrant to the origin</span> <span class="cwebmacronumber">1.5</span>> =
|
||||
<p class="inwebparagraph"><a id="SP_1"></a><b>§.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Initialise the IPCT state</span> <span class="cwebmacronumber">.1</span>> =
|
||||
</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">>package_head</span><span class="plain">-</span><span class="element">>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">>package_head</span><span class="plain">-</span><span class="element">>tree</span><span class="plain">);</span>
|
||||
<span class="identifier">ipct</span><span class="element">.linkage_point</span><span class="plain"> = &</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"> = &</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">§1.4</a>, <a href="#SP1_5">§1.5</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1_4"></a><b>§1.4. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Correct any references from the migrant to the origin</span> <span class="cwebmacronumber">1.4</span>> =
|
||||
</code></p>
|
||||
|
||||
|
||||
<pre class="displaydefn">
|
||||
<span class="reserved">ipct_state</span><span class="plain"> </span><span class="identifier">ipct</span><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Initialise the IPCT state</span> <span class="cwebmacronumber">.1</span>><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">>package_head</span><span class="plain">-</span><span class="element">>tree</span><span class="plain">,</span>
|
||||
<span class="functiontext">Inter::Transmigration::correct_migrant</span><span class="plain">, &</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">§1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b></p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
|
@ -156,8 +166,8 @@
|
|||
<span class="identifier">P</span><span class="plain">-</span><span class="element">>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">>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">) && (</span><span class="identifier">P</span><span class="plain">-</span><span class="element">>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">>origin_globals</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">-</span><span class="element">>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><<span class="cwebmacro">Correct the reference to this primitive</span> <span class="cwebmacronumber">2.1</span>><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">>origin_tree</span><span class="plain">), </span><span class="identifier">P</span><span class="plain">-</span><span class="element">>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><<span class="cwebmacro">Correct the reference to this primitive</span> <span class="cwebmacronumber">3.1</span>><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">>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">>migrant</span><span class="plain">)</span>
|
||||
<<span class="cwebmacro">Correct the reference to this symbol</span> <span class="cwebmacronumber">2.2</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Correct the reference to this symbol</span> <span class="cwebmacronumber">3.2</span>><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">§1.5</a>.</p>
|
||||
<p class="endnote">The function Inter::Transmigration::correct_migrant is used in <a href="#SP1_4">§1.4</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2_1"></a><b>§2.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Correct the reference to this primitive</span> <span class="cwebmacronumber">2.1</span>> =
|
||||
<p class="inwebparagraph"><a id="SP3_1"></a><b>§3.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Correct the reference to this primitive</span> <span class="cwebmacronumber">3.1</span>> =
|
||||
</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">>destination_globals</span><span class="plain">, </span><span class="identifier">primitive</span><span class="plain">-</span><span class="element">>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><<span class="cwebmacro">Duplicate this primitive</span> <span class="cwebmacronumber">2.1.1</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="functiontext">Inter::Tree::global_scope</span><span class="plain">(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">>destination_tree</span><span class="plain">), </span><span class="identifier">primitive</span><span class="plain">-</span><span class="element">>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><<span class="cwebmacro">Duplicate this primitive</span> <span class="cwebmacronumber">3.1.1</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="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">>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">>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">>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">>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">§2</a>.</p>
|
||||
<p class="endnote">This code is used in <a href="#SP3">§3</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2_1_1"></a><b>§2.1.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Duplicate this primitive</span> <span class="cwebmacronumber">2.1.1</span>> =
|
||||
<p class="inwebparagraph"><a id="SP3_1_1"></a><b>§3.1.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Duplicate this primitive</span> <span class="cwebmacronumber">3.1.1</span>> =
|
||||
</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">>destination_globals</span><span class="plain">, </span><span class="identifier">primitive</span><span class="plain">-</span><span class="element">>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">>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">>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">>destination_tree</span><span class="plain">), </span><span class="identifier">primitive</span><span class="plain">-</span><span class="element">>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">>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">>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">>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"><</span><span class="identifier">old_D</span><span class="plain">-</span><span class="element">>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">§2.1</a>.</p>
|
||||
<p class="endnote">This code is used in <a href="#SP3_1">§3.1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2_2"></a><b>§2.2. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Correct the reference to this symbol</span> <span class="cwebmacronumber">2.2</span>> =
|
||||
<p class="inwebparagraph"><a id="SP3_2"></a><b>§3.2. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Correct the reference to this symbol</span> <span class="cwebmacronumber">3.2</span>> =
|
||||
</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">>destination</span><span class="plain">-</span><span class="element">>package_head</span><span class="plain">-</span><span class="element">>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>
|
||||
<<span class="cwebmacro">Create a link symbol to represent the unavailability of this symbol</span> <span class="cwebmacronumber">2.2.1</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">>destination_tree</span><span class="plain">, </span><span class="identifier">target</span><span class="plain">-</span><span class="element">>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">§2</a>.</p>
|
||||
<p class="endnote">This code is used in <a href="#SP3">§3</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2_2_1"></a><b>§2.2.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Create a link symbol to represent the unavailability of this symbol</span> <span class="cwebmacronumber">2.2.1</span>> =
|
||||
<p class="inwebparagraph"><a id="SP1_5"></a><b>§1.5. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Correct any references from the origin to the migrant</span> <span class="cwebmacronumber">1.5</span>> =
|
||||
</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">>linkage_point</span><span class="plain">, </span><span class="identifier">target</span><span class="plain">-</span><span class="element">>symbol_name</span><span class="plain">, </span><span class="identifier">URL</span><span class="plain">, &(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">>links</span><span class="plain">));</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">This code is used in <a href="#SP2_2">§2.2</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1_6"></a><b>§1.6. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Correct any references from the origin to the migrant</span> <span class="cwebmacronumber">1.6</span>> =
|
||||
</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"> = &</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>
|
||||
<<span class="cwebmacro">Initialise the IPCT state</span> <span class="cwebmacronumber">.1</span>><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">>package_head</span><span class="plain">-</span><span class="element">>tree</span><span class="plain">,</span>
|
||||
<span class="functiontext">Inter::Transmigration::correct_origin</span><span class="plain">, &</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">§1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§3. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§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">>migrant</span><span class="plain">)</span>
|
||||
<<span class="cwebmacro">Correct the origin reference to this migrant symbol</span> <span class="cwebmacronumber">3.1</span>><span class="plain">;</span>
|
||||
<<span class="cwebmacro">Correct the origin reference to this migrant symbol</span> <span class="cwebmacronumber">4.1</span>><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">§1.6</a>.</p>
|
||||
<p class="endnote">The function Inter::Transmigration::correct_origin is used in <a href="#SP1_5">§1.5</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3_1"></a><b>§3.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Correct the origin reference to this migrant symbol</span> <span class="cwebmacronumber">3.1</span>> =
|
||||
<p class="inwebparagraph"><a id="SP4_1"></a><b>§4.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Correct the origin reference to this migrant symbol</span> <span class="cwebmacronumber">4.1</span>> =
|
||||
</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>
|
||||
<<span class="cwebmacro">Create a link symbol in the origin</span> <span class="cwebmacronumber">3.1.1</span>><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">>origin_tree</span><span class="plain">, </span><span class="identifier">target</span><span class="plain">-</span><span class="element">>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">>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">§3</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3_1_1"></a><b>§3.1.1. </b><code class="display">
|
||||
<<span class="cwebmacrodefn">Create a link symbol in the origin</span> <span class="cwebmacronumber">3.1.1</span>> =
|
||||
</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">>linkage_point</span><span class="plain">, </span><span class="identifier">target</span><span class="plain">-</span><span class="element">>symbol_name</span><span class="plain">, </span><span class="identifier">URL</span><span class="plain">, &(</span><span class="identifier">ipct</span><span class="plain">-</span><span class="element">>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">§3.1</a>.</p>
|
||||
<p class="endnote">This code is used in <a href="#SP4">§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">
|
||||
|
|
|
@ -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">§2.1.1</a>), 3/iibf (<a href="3-iibf.html#SP1_6">§1.6</a>), 4/tnc (<a href="4-tnc.html#SP1">§1</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§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">§3.1.1</a>), 3/iibf (<a href="3-iibf.html#SP1_6">§1.6</a>), 4/tnc (<a href="4-tnc.html#SP1">§1</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tmc (<a href="4-tmc.html#SP2">§2</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tpc3 (<a href="4-tpc3.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tdc (<a href="4-tdc.html#SP2">§2</a>), 4/tvc2 (<a href="4-tvc2.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc4 (<a href="4-tpc4.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Defn::transpose_construct is used in 3/iibf (<a href="3-iibf.html#SP1_6">§1.6</a>).</p>
|
||||
|
||||
|
|
|
@ -107,7 +107,7 @@
|
|||
|
||||
<p class="endnote">The function Inter::Errors::plain is used in 3/dfn (<a href="3-dfn.html#SP3">§3</a>, <a href="3-dfn.html#SP4">§4</a>), 3/iibf (<a href="3-iibf.html#SP3">§3</a>), 4/tcc (<a href="4-tcc.html#SP1">§1</a>), 4/tsc (<a href="4-tsc.html#SP1">§1</a>), 4/tvc (<a href="4-tvc.html#SP2">§2</a>), 4/tpc (<a href="4-tpc.html#SP2">§2</a>), 4/tlc (<a href="4-tlc.html#SP2">§2</a>), 4/tac (<a href="4-tac.html#SP2">§2</a>), 4/tpc2 (<a href="4-tpc2.html#SP2">§2</a>), 4/tkc (<a href="4-tkc.html#SP2">§2</a>), 4/tcc2 (<a href="4-tcc2.html#SP2">§2</a>), 4/trc (<a href="4-trc.html#SP2">§2</a>), 4/tic (<a href="4-tic.html#SP2">§2</a>), 4/tpc5 (<a href="4-tpc5.html#SP2">§2</a>), 4/tpc6 (<a href="4-tpc6.html#SP2">§2</a>), 4/tpc7 (<a href="4-tpc7.html#SP2">§2</a>), 5/tlc (<a href="5-tlc.html#SP2">§2</a>), 5/tlc2 (<a href="5-tlc2.html#SP2">§2</a>), 5/tic (<a href="5-tic.html#SP2">§2</a>), 5/trc (<a href="5-trc.html#SP2">§2</a>), 5/tvc (<a href="5-tvc.html#SP2">§2</a>), 5/tlc3 (<a href="5-tlc3.html#SP2">§2</a>), 5/tcc (<a href="5-tcc.html#SP2">§2</a>), 5/tec (<a href="5-tec.html#SP2">§2</a>), 5/trc2 (<a href="5-trc2.html#SP2">§2</a>), 5/tcc2 (<a href="5-tcc2.html#SP2">§2</a>), 5/tsc (<a href="5-tsc.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Errors::issue is used in 2/st (<a href="2-st.html#SP10">§10</a>), 2/trn (<a href="2-trn.html#SP2_1_1">§2.1.1</a>), 3/iibf (<a href="3-iibf.html#SP1_6">§1.6</a>, <a href="3-iibf.html#SP3">§3</a>), 3/iitf (<a href="3-iitf.html#SP1">§1</a>, <a href="3-iitf.html#SP2">§2</a>).</p>
|
||||
<p class="endnote">The function Inter::Errors::issue is used in 2/st (<a href="2-st.html#SP10">§10</a>), 2/trn (<a href="2-trn.html#SP3_1_1">§3.1.1</a>), 3/iibf (<a href="3-iibf.html#SP1_6">§1.6</a>, <a href="3-iibf.html#SP3">§3</a>), 3/iitf (<a href="3-iitf.html#SP1">§1</a>, <a href="3-iitf.html#SP2">§2</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Errors::issue_to appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -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">§1</a>), 2/st (<a href="2-st.html#SP10">§10</a>), 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/trn (<a href="2-trn.html#SP2">§2</a>, <a href="2-trn.html#SP3">§3</a>).</p>
|
||||
<p class="endnote">The function Inter::Package::defined_by_frame is used in 2/bkm (<a href="2-bkm.html#SP1">§1</a>), 2/st (<a href="2-st.html#SP10">§10</a>), 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/trn (<a href="2-trn.html#SP3">§3</a>, <a href="2-trn.html#SP4">§4</a>).</p>
|
||||
|
||||
<p class="endnote">The function Inter::Package::type is used in 2/pck (<a href="2-pck.html#SP3">§3</a>).</p>
|
||||
|
||||
|
|
|
@ -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">§3</a>), 1/ppl (<a href="1-ppl.html#SP5">§5</a>), 2/res (<a href="2-res.html#SP1">§1</a>), 4/fc (<a href="4-fc.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function main is used in 2/pck (<a href="2-pck.html#SP3">§3</a>), 2/cnn (<a href="2-cnn.html#SP1">§1</a>), 1/ppl (<a href="1-ppl.html#SP5">§5</a>), 2/res (<a href="2-res.html#SP1">§1</a>), 4/fc (<a href="4-fc.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b></p>
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue