2019-03-17 14:40:57 +02:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
< html >
< head >
2019-04-17 20:19:03 +03:00
< title > 27/cm< / title >
2019-03-17 14:40:57 +02:00
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" >
< meta http-equiv = "Content-Language" content = "en-gb" >
< link href = "inweb.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< / head >
< body >
<!-- Weave of '27/pc' generated by 7 -->
2019-04-19 16:36:05 +03:00
< ul class = "crumbs" > < li > < a href = "../webs.html" > ★ < / a > < / li > < li > < a href = "index.html" > core< / a > < / li > < li > < a href = "index.html#27" > Chapter 27: Bridge to Inter Module< / a > < / li > < li > < b > Packaging< / b > < / li > < / ul > < p class = "inwebparagraph" > < a id = "SP1" > < / a > < b > § 1. Package requests. < / b > < / p >
2019-03-17 14:40:57 +02:00
< p class = "inwebparagraph" > < / p >
< pre class = "definitions" >
2019-04-13 22:47:15 +03:00
< span class = "definitionkeyword" > define< / span > < span class = "constant" > MAX_PRCS_AT_ONCE< / span > < span class = "plain" > 11< / span >
2019-03-17 14:40:57 +02:00
< / pre >
< pre class = "display" >
< span class = "reserved" > typedef< / span > < span class = "plain" > < / span > < span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > package_request< / span > < span class = "plain" > {< / span >
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > inter_name< / span > < span class = "plain" > *< / span > < span class = "identifier" > eventual_name< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "identifier" > inter_symbol< / span > < span class = "plain" > *< / span > < span class = "identifier" > eventual_type< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "identifier" > inter_package< / span > < span class = "plain" > *< / span > < span class = "identifier" > actual_package< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > parent_request< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "identifier" > inter_reading_state< / span > < span class = "plain" > < / span > < span class = "identifier" > write_position< / span > < span class = "plain" > ;< / span >
2019-04-14 13:46:13 +03:00
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "identifier" > linked_list< / span > < span class = "plain" > *< / span > < span class = "identifier" > counters< / span > < span class = "plain" > ; < / span > < span class = "comment" > of < code class = "display" > < span class = "extract" > submodule_request_counter< / span > < / code > < / span >
2019-03-17 14:40:57 +02:00
< span class = "identifier" > MEMORY_MANAGEMENT< / span >
< span class = "plain" > } < / span > < span class = "reserved" > package_request< / span > < span class = "plain" > ;< / span >
2019-04-14 13:46:13 +03:00
< span class = "reserved" > typedef< / span > < span class = "plain" > < / span > < span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > submodule_request_counter< / span > < span class = "plain" > {< / span >
2019-04-13 22:47:15 +03:00
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > counter_id< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > counter_value< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > MEMORY_MANAGEMENT< / span >
2019-04-14 13:46:13 +03:00
< span class = "plain" > } < / span > < span class = "reserved" > submodule_request_counter< / span > < span class = "plain" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
< p class = "inwebparagraph" > < / p >
2019-04-17 20:19:03 +03:00
< p class = "endnote" > The structure package_request is accessed in 26/iti, 27/hl, 27/ei and here.< / p >
2019-03-17 14:40:57 +02:00
2019-04-14 13:46:13 +03:00
< p class = "endnote" > The structure submodule_request_counter is private to this section.< / p >
2019-04-13 22:47:15 +03:00
2019-04-19 16:36:05 +03:00
< p class = "inwebparagraph" > < a id = "SP2" > < / a > < b > § 2. < / b > < / p >
2019-03-17 14:40:57 +02:00
< pre class = "display" >
2019-04-18 11:51:47 +03:00
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "functiontext" > Packaging::request< / span > < span class = "plain" > (< / span > < span class = "reserved" > inter_name< / span > < span class = "plain" > *< / span > < span class = "identifier" > name< / span > < span class = "plain" > , < / span > < span class = "identifier" > inter_symbol< / span > < span class = "plain" > *< / span > < span class = "identifier" > pt< / span > < span class = "plain" > ) {< / span >
2019-03-17 14:40:57 +02:00
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > R< / span > < span class = "plain" > = < / span > < span class = "identifier" > CREATE< / span > < span class = "plain" > (< / span > < span class = "reserved" > package_request< / span > < span class = "plain" > );< / span >
< span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > eventual_name< / span > < span class = "plain" > = < / span > < span class = "identifier" > name< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > eventual_type< / span > < span class = "plain" > = < / span > < span class = "identifier" > pt< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > actual_package< / span > < span class = "plain" > = < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > ;< / span >
2019-04-18 11:51:47 +03:00
< span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > parent_request< / span > < span class = "plain" > = < / span > < span class = "functiontext" > InterNames::location< / span > < span class = "plain" > (< / span > < span class = "identifier" > name< / span > < span class = "plain" > );< / span >
2019-03-17 14:40:57 +02:00
< span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > write_position< / span > < span class = "plain" > = < / span > < span class = "identifier" > Inter::Bookmarks::new_IRS< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Emit::repository< / span > < span class = "plain" > ());< / span >
2019-04-13 22:47:15 +03:00
< span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > counters< / span > < span class = "plain" > = < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > ;< / span >
2019-03-17 14:40:57 +02:00
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > R< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > Packaging::log< / span > < span class = "plain" > (< / span > < span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > R< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > R< / span > < span class = "plain" > == < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > ) < / span > < span class = "identifier" > LOG< / span > < span class = "plain" > (< / span > < span class = "string" > "< null-package> "< / span > < span class = "plain" > );< / span >
< span class = "reserved" > else< / span > < span class = "plain" > {< / span >
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > c< / span > < span class = "plain" > = 0;< / span >
< span class = "reserved" > while< / span > < span class = "plain" > (< / span > < span class = "identifier" > R< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > c< / span > < span class = "plain" > ++ > 0) < / span > < span class = "identifier" > LOG< / span > < span class = "plain" > (< / span > < span class = "string" > "\< / span > < span class = "plain" > \< / span > < span class = "string" > "< / span > < span class = "plain" > );< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > actual_package< / span > < span class = "plain" > ) < / span > < span class = "identifier" > LOG< / span > < span class = "plain" > (< / span > < span class = "string" > "%S(%d)"< / span > < span class = "plain" > , < / span > < span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > actual_package< / span > < span class = "plain" > -> < / span > < span class = "identifier" > package_name< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > R< / span > < span class = "plain" > -> < / span > < span class = "identifier" > allocation_id< / span > < span class = "plain" > );< / span >
< span class = "reserved" > else< / span > < span class = "plain" > < / span > < span class = "identifier" > LOG< / span > < span class = "plain" > (< / span > < span class = "string" > "--(%d)"< / span > < span class = "plain" > , < / span > < span class = "identifier" > R< / span > < span class = "plain" > -> < / span > < span class = "identifier" > allocation_id< / span > < span class = "plain" > );< / span >
< span class = "identifier" > R< / span > < span class = "plain" > = < / span > < span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > parent_request< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< span class = "plain" > }< / span >
< span class = "plain" > }< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
2019-04-19 16:36:05 +03:00
< p class = "endnote" > The function Packaging::request is used in < a href = "#SP5" > § 5< / a > , < a href = "#SP5_1" > § 5.1< / a > , < a href = "#SP6" > § 6< / a > , 27/hr (< a href = "27-hr.html#SP5" > § 5< / a > ), 27/hl (< a href = "27-hl.html#SP2" > § 2< / a > ).< / p >
2019-03-17 14:40:57 +02:00
< p class = "endnote" > The function Packaging::log is used in 1/cm (< a href = "1-cm.html#SP5" > § 5< / a > , < a href = "1-cm.html#SP6_6" > § 6.6< / a > ).< / p >
2019-04-19 16:36:05 +03:00
< p class = "inwebparagraph" > < a id = "SP3" > < / a > < b > § 3. < / b > < / p >
2019-03-17 14:40:57 +02:00
< pre class = "display" >
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > current_enclosure< / span > < span class = "plain" > = < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > typedef< / span > < span class = "plain" > < / span > < span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > packaging_state< / span > < span class = "plain" > {< / span >
< span class = "identifier" > inter_reading_state< / span > < span class = "plain" > *< / span > < span class = "identifier" > saved_IRS< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > saved_enclosure< / span > < span class = "plain" > ;< / span >
< span class = "plain" > } < / span > < span class = "reserved" > packaging_state< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > packaging_state< / span > < span class = "plain" > < / span > < span class = "functiontext" > Packaging::stateless< / span > < span class = "plain" > (< / span > < span class = "reserved" > void< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > packaging_state< / span > < span class = "plain" > < / span > < span class = "identifier" > PS< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > PS< / span > < span class = "element" > .saved_IRS< / span > < span class = "plain" > = < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > PS< / span > < span class = "element" > .saved_enclosure< / 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" > PS< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
2019-04-09 18:09:53 +03:00
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "functiontext" > Packaging::home_of< / span > < span class = "plain" > (< / span > < span class = "reserved" > inter_name< / span > < span class = "plain" > *< / span > < span class = "identifier" > N< / span > < span class = "plain" > ) {< / span >
2019-04-18 11:51:47 +03:00
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "functiontext" > InterNames::location< / span > < span class = "plain" > (< / span > < span class = "identifier" > N< / span > < span class = "plain" > );< / span >
2019-04-09 18:09:53 +03:00
< span class = "plain" > }< / span >
2019-03-17 14:40:57 +02:00
< span class = "reserved" > packaging_state< / span > < span class = "plain" > < / span > < span class = "functiontext" > Packaging::enter_home_of< / span > < span class = "plain" > (< / span > < span class = "reserved" > inter_name< / span > < span class = "plain" > *< / span > < span class = "identifier" > N< / span > < span class = "plain" > ) {< / span >
2019-04-18 03:53:27 +03:00
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "functiontext" > Packaging::enter< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Packaging::home_of< / span > < span class = "plain" > (< / span > < span class = "identifier" > N< / span > < span class = "plain" > ));< / span >
2019-03-17 14:40:57 +02:00
< span class = "plain" > }< / span >
< span class = "reserved" > packaging_state< / span > < span class = "plain" > < / span > < span class = "functiontext" > Packaging::enter_current_enclosure< / span > < span class = "plain" > (< / span > < span class = "reserved" > void< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "functiontext" > Packaging::enter< / span > < span class = "plain" > (< / span > < span class = "identifier" > current_enclosure< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "functiontext" > Packaging::current_enclosure< / span > < span class = "plain" > (< / span > < span class = "reserved" > void< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > current_enclosure< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
2019-04-19 16:36:05 +03:00
< p class = "endnote" > The function Packaging::stateless is used in 21/rb (< a href = "21-rb.html#SP24_1" > § 24.1< / a > ).< / p >
2019-03-17 14:40:57 +02:00
2019-04-19 16:36:05 +03:00
< p class = "endnote" > The function Packaging::home_of is used in 5/ins (< a href = "5-ins.html#SP34" > § 34< / a > ), 12/cdp (< a href = "12-cdp.html#SP5" > § 5< / a > ), 13/rsfk (< a href = "13-rsfk.html#SP22" > § 22< / a > ), 26/rt (< a href = "26-rt.html#SP3" > § 3< / a > , < a href = "26-rt.html#SP4" > § 4< / a > ), 27/hr (< a href = "27-hr.html#SP3" > § 3< / a > ), 27/hl (< a href = "27-hl.html#SP1" > § 1< / a > ), 27/ei (< a href = "27-ei.html#SP3" > § 3< / a > ).< / p >
2019-04-09 18:09:53 +03:00
2019-04-19 16:36:05 +03:00
< p class = "endnote" > The function Packaging::enter_home_of is used in 5/nv (< a href = "5-nv.html#SP16" > § 16< / a > , < a href = "5-nv.html#SP25" > § 25< / a > ), 13/rsfk (< a href = "13-rsfk.html#SP16_2" > § 16.2< / a > ), 17/tl (< a href = "17-tl.html#SP13" > § 13< / a > ), 21/rl2 (< a href = "21-rl2.html#SP20" > § 20< / a > ), 22/ph (< a href = "22-ph.html#SP12" > § 12< / a > ), 26/rt (< a href = "26-rt.html#SP1" > § 1< / a > ), 27/ei (< a href = "27-ei.html#SP2" > § 2< / a > , < a href = "27-ei.html#SP3" > § 3< / a > ).< / p >
2019-03-17 14:40:57 +02:00
2019-04-16 14:46:46 +03:00
< p class = "endnote" > The function Packaging::enter_current_enclosure appears nowhere else.< / p >
2019-03-17 14:40:57 +02:00
2019-04-16 22:38:10 +03:00
< p class = "endnote" > The function Packaging::current_enclosure is used in 17/ts (< a href = "17-ts.html#SP8" > § 8< / a > , < a href = "17-ts.html#SP8_1" > § 8.1< / a > ), 18/lc (< a href = "18-lc.html#SP5" > § 5< / a > ), 26/iti (< a href = "26-iti.html#SP9" > § 9< / a > ), 27/hr (< a href = "27-hr.html#SP5" > § 5< / a > ).< / p >
2019-03-17 14:40:57 +02:00
< p class = "endnote" > The structure packaging_state is private to this section.< / p >
2019-04-19 16:36:05 +03:00
< p class = "inwebparagraph" > < a id = "SP4" > < / a > < b > § 4. < / b > < / p >
2019-03-17 14:40:57 +02:00
< pre class = "definitions" >
< span class = "definitionkeyword" > define< / span > < span class = "constant" > MAX_PACKAGING_ENTRY_DEPTH< / span > < span class = "plain" > 32< / span >
< / pre >
< pre class = "display" >
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > packaging_entry_sp< / span > < span class = "plain" > = 0;< / span >
< span class = "identifier" > inter_reading_state< / span > < span class = "plain" > < / span > < span class = "identifier" > packaging_entry_stack< / span > < span class = "plain" > [< / span > < span class = "constant" > MAX_PACKAGING_ENTRY_DEPTH< / span > < span class = "plain" > ];< / span >
< span class = "reserved" > packaging_state< / span > < span class = "plain" > < / span > < span class = "functiontext" > Packaging::enter< / span > < span class = "plain" > (< / span > < span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > R< / span > < span class = "plain" > ) {< / span >
< span class = "identifier" > LOGIF< / span > < span class = "plain" > (< / span > < span class = "identifier" > PACKAGING< / span > < span class = "plain" > , < / span > < span class = "string" > "Entering $X\< / span > < span class = "plain" > n< / span > < span class = "string" > "< / span > < span class = "plain" > , < / span > < span class = "identifier" > R< / span > < span class = "plain" > );< / span >
< span class = "identifier" > inter_reading_state< / span > < span class = "plain" > *< / span > < span class = "identifier" > IRS< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Emit::IRS< / span > < span class = "plain" > ();< / span >
< span class = "functiontext" > Packaging::incarnate< / span > < span class = "plain" > (< / span > < span class = "identifier" > R< / span > < span class = "plain" > );< / span >
< span class = "functiontext" > Emit::move_write_position< / span > < span class = "plain" > (& (< / span > < span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > write_position< / span > < span class = "plain" > ));< / span >
2019-04-19 16:36:05 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > packaging_entry_sp< / span > < span class = "plain" > > = < / span > < span class = "constant" > MAX_PACKAGING_ENTRY_DEPTH< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > for< / span > < span class = "plain" > (< / span > < span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > i< / span > < span class = "plain" > =0; < / span > < span class = "identifier" > i< / span > < span class = "plain" > < < / span > < span class = "identifier" > packaging_entry_sp< / span > < span class = "plain" > ; < / span > < span class = "identifier" > i< / span > < span class = "plain" > ++)< / span >
< span class = "identifier" > LOG< / span > < span class = "plain" > (< / span > < span class = "string" > "%d: $6\< / span > < span class = "plain" > n< / span > < span class = "string" > "< / span > < span class = "plain" > , < / span > < span class = "identifier" > i< / span > < span class = "plain" > , < / span > < span class = "identifier" > packaging_entry_stack< / span > < span class = "plain" > [< / span > < span class = "identifier" > i< / span > < span class = "plain" > ].< / span > < span class = "identifier" > current_package< / span > < span class = "plain" > );< / span >
< span class = "identifier" > internal_error< / span > < span class = "plain" > (< / span > < span class = "string" > "packaging entry too deep"< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
2019-03-17 14:40:57 +02:00
< span class = "identifier" > packaging_entry_stack< / span > < span class = "plain" > [< / span > < span class = "identifier" > packaging_entry_sp< / span > < span class = "plain" > ] = < / span > < span class = "functiontext" > Emit::bookmark_bubble< / span > < span class = "plain" > ();< / span >
< span class = "functiontext" > Emit::move_write_position< / span > < span class = "plain" > (& < / span > < span class = "identifier" > packaging_entry_stack< / span > < span class = "plain" > [< / span > < span class = "identifier" > packaging_entry_sp< / span > < span class = "plain" > ]);< / span >
< span class = "identifier" > packaging_entry_sp< / span > < span class = "plain" > ++;< / span >
< span class = "reserved" > packaging_state< / span > < span class = "plain" > < / span > < span class = "identifier" > PS< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > PS< / span > < span class = "element" > .saved_IRS< / span > < span class = "plain" > = < / span > < span class = "identifier" > IRS< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > PS< / span > < span class = "element" > .saved_enclosure< / span > < span class = "plain" > = < / span > < span class = "identifier" > current_enclosure< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > for< / span > < span class = "plain" > (< / span > < span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > S< / span > < span class = "plain" > = < / span > < span class = "identifier" > R< / span > < span class = "plain" > ; < / span > < span class = "identifier" > S< / span > < span class = "plain" > ; < / span > < span class = "identifier" > S< / span > < span class = "plain" > = < / span > < span class = "identifier" > S< / span > < span class = "plain" > -< / span > < span class = "element" > > parent_request< / span > < span class = "plain" > )< / span >
2019-04-13 20:58:43 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > ((< / span > < span class = "identifier" > Inter::Symbols::read_annotation< / span > < span class = "plain" > (< / span > < span class = "identifier" > S< / span > < span class = "plain" > -< / span > < span class = "element" > > eventual_type< / span > < span class = "plain" > , < / span > < span class = "identifier" > ENCLOSING_IANN< / span > < span class = "plain" > ) == 1) ||< / span >
2019-03-17 14:40:57 +02:00
< span class = "plain" > (< / span > < span class = "identifier" > S< / span > < span class = "plain" > -< / span > < span class = "element" > > parent_request< / span > < span class = "plain" > == < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > )) {< / span >
< span class = "identifier" > current_enclosure< / span > < span class = "plain" > = < / span > < span class = "identifier" > S< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > break< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< span class = "identifier" > LOGIF< / span > < span class = "plain" > (< / span > < span class = "identifier" > PACKAGING< / span > < span class = "plain" > , < / span > < span class = "string" > "[%d] Current enclosure is $X\< / span > < span class = "plain" > n< / span > < span class = "string" > "< / span > < span class = "plain" > , < / span > < span class = "identifier" > packaging_entry_sp< / span > < span class = "plain" > , < / span > < span class = "identifier" > current_enclosure< / span > < span class = "plain" > );< / span >
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > PS< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > Packaging::exit< / span > < span class = "plain" > (< / span > < span class = "reserved" > packaging_state< / span > < span class = "plain" > < / span > < span class = "identifier" > PS< / span > < span class = "plain" > ) {< / span >
< span class = "identifier" > current_enclosure< / span > < span class = "plain" > = < / span > < span class = "identifier" > PS< / span > < span class = "element" > .saved_enclosure< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > packaging_entry_sp< / span > < span class = "plain" > --;< / span >
< span class = "identifier" > LOGIF< / span > < span class = "plain" > (< / span > < span class = "identifier" > PACKAGING< / span > < span class = "plain" > , < / span > < span class = "string" > "[%d] Back to $X\< / span > < span class = "plain" > n< / span > < span class = "string" > "< / span > < span class = "plain" > , < / span > < span class = "identifier" > packaging_entry_sp< / span > < span class = "plain" > , < / span > < span class = "identifier" > current_enclosure< / span > < span class = "plain" > );< / span >
< span class = "functiontext" > Emit::move_write_position< / span > < span class = "plain" > (< / span > < span class = "identifier" > PS< / span > < span class = "element" > .saved_IRS< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
< span class = "identifier" > inter_package< / span > < span class = "plain" > *< / span > < span class = "functiontext" > Packaging::incarnate< / span > < span class = "plain" > (< / span > < span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > R< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > R< / span > < span class = "plain" > == < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > ) < / span > < span class = "identifier" > internal_error< / span > < span class = "plain" > (< / span > < span class = "string" > "can't incarnate null request"< / span > < span class = "plain" > );< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > actual_package< / span > < span class = "plain" > == < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > ) {< / span >
< span class = "identifier" > LOGIF< / span > < span class = "plain" > (< / span > < span class = "identifier" > PACKAGING< / span > < span class = "plain" > , < / span > < span class = "string" > "Request to make incarnate $X\< / span > < span class = "plain" > n< / span > < span class = "string" > "< / span > < span class = "plain" > , < / span > < span class = "identifier" > R< / span > < span class = "plain" > );< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > parent_request< / span > < span class = "plain" > ) < / span > < span class = "functiontext" > Packaging::incarnate< / span > < span class = "plain" > (< / span > < span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > parent_request< / span > < span class = "plain" > );< / span >
< span class = "identifier" > inter_reading_state< / span > < span class = "plain" > *< / span > < span class = "identifier" > save_IRS< / 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" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > parent_request< / span > < span class = "plain" > )< / span >
< span class = "identifier" > save_IRS< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Emit::move_write_position< / span > < span class = "plain" > (& (< / span > < span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > parent_request< / span > < span class = "plain" > -< / span > < span class = "element" > > write_position< / span > < span class = "plain" > ));< / span >
< span class = "identifier" > inter_reading_state< / span > < span class = "plain" > < / span > < span class = "identifier" > snapshot< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Emit::bookmark_bubble< / span > < span class = "plain" > ();< / span >
< span class = "identifier" > inter_reading_state< / span > < span class = "plain" > *< / span > < span class = "identifier" > save_save_IRS< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Emit::move_write_position< / span > < span class = "plain" > (& < / span > < span class = "identifier" > snapshot< / span > < span class = "plain" > );< / span >
< span class = "functiontext" > Emit::package< / span > < span class = "plain" > (< / span > < span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > eventual_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > eventual_type< / span > < span class = "plain" > , & (< / span > < span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > actual_package< / span > < span class = "plain" > ));< / span >
< span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > write_position< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Emit::bookmark_bubble< / span > < span class = "plain" > ();< / span >
< span class = "functiontext" > Emit::move_write_position< / span > < span class = "plain" > (< / span > < span class = "identifier" > save_save_IRS< / span > < span class = "plain" > );< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > parent_request< / span > < span class = "plain" > )< / span >
< span class = "functiontext" > Emit::move_write_position< / span > < span class = "plain" > (< / span > < span class = "identifier" > save_IRS< / span > < span class = "plain" > );< / span >
< span class = "identifier" > LOGIF< / span > < span class = "plain" > (< / span > < span class = "identifier" > PACKAGING< / span > < span class = "plain" > , < / span > < span class = "string" > "Made incarnate $X bookmark $5\< / span > < span class = "plain" > n< / span > < span class = "string" > "< / span > < span class = "plain" > , < / span > < span class = "identifier" > R< / span > < span class = "plain" > , & (< / span > < span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > write_position< / span > < span class = "plain" > ));< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > actual_package< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< span class = "identifier" > inter_symbols_table< / span > < span class = "plain" > *< / span > < span class = "functiontext" > Packaging::scope< / span > < span class = "plain" > (< / span > < span class = "identifier" > inter_repository< / span > < span class = "plain" > *< / span > < span class = "identifier" > I< / span > < span class = "plain" > , < / span > < span class = "reserved" > inter_name< / span > < span class = "plain" > *< / span > < span class = "identifier" > N< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > N< / span > < span class = "plain" > == < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > ) < / span > < span class = "identifier" > internal_error< / span > < span class = "plain" > (< / span > < span class = "string" > "can't determine scope of null name"< / span > < span class = "plain" > );< / span >
2019-04-18 11:51:47 +03:00
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > P< / span > < span class = "plain" > = < / span > < span class = "functiontext" > InterNames::location< / span > < span class = "plain" > (< / span > < span class = "identifier" > N< / span > < span class = "plain" > );< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / 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" > Inter::get_global_symbols< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Emit::repository< / span > < span class = "plain" > ());< / span >
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > Inter::Packages::scope< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Packaging::incarnate< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > ));< / span >
2019-03-17 14:40:57 +02:00
< span class = "plain" > }< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
2019-04-19 16:36:05 +03:00
< p class = "endnote" > The function Packaging::enter is used in < a href = "#SP3" > § 3< / a > , 27/ei (< a href = "27-ei.html#SP2" > § 2< / a > , < a href = "27-ei.html#SP3" > § 3< / a > ).< / p >
2019-03-17 14:40:57 +02:00
2019-04-19 16:36:05 +03:00
< p class = "endnote" > The function Packaging::exit is used in 5/nv (< a href = "5-nv.html#SP16" > § 16< / a > , < a href = "5-nv.html#SP25" > § 25< / a > ), 13/rsfk (< a href = "13-rsfk.html#SP16_2" > § 16.2< / a > ), 17/tl (< a href = "17-tl.html#SP13" > § 13< / a > ), 21/rl2 (< a href = "21-rl2.html#SP20" > § 20< / a > ), 22/ph (< a href = "22-ph.html#SP12" > § 12< / a > ), 26/rt (< a href = "26-rt.html#SP4" > § 4< / a > ), 27/ei (< a href = "27-ei.html#SP2" > § 2< / a > , < a href = "27-ei.html#SP3" > § 3< / a > ).< / p >
2019-03-17 14:40:57 +02:00
2019-04-19 16:36:05 +03:00
< p class = "endnote" > The function Packaging::incarnate is used in 21/rl (< a href = "21-rl.html#SP9" > § 9< / a > ), 27/ei (< a href = "27-ei.html#SP2" > § 2< / a > ).< / p >
2019-03-17 14:40:57 +02:00
2019-04-18 03:53:27 +03:00
< p class = "endnote" > The function Packaging::scope is used in 27/in (< a href = "27-in.html#SP8" > § 8< / a > ).< / p >
2019-03-17 14:40:57 +02:00
2019-04-19 16:36:05 +03:00
< p class = "inwebparagraph" > < a id = "SP5" > < / a > < b > § 5. < / b > < / p >
2019-03-17 14:40:57 +02:00
< pre class = "display" >
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > generic_pr< / span > < span class = "plain" > = < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "functiontext" > Packaging::request_generic< / span > < span class = "plain" > (< / span > < span class = "reserved" > void< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > generic_pr< / span > < span class = "plain" > == < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > )< / span >
2019-04-11 22:32:39 +03:00
< span class = "identifier" > generic_pr< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Packaging::request< / span > < span class = "plain" > (< / span >
2019-04-18 03:53:27 +03:00
< span class = "functiontext" > InterNames::explicitly_named< / span > < span class = "plain" > (< / span > < span class = "identifier" > I< / span > < span class = "string" > "generic"< / span > < span class = "plain" > , < / span > < span class = "functiontext" > Hierarchy::resources< / span > < span class = "plain" > ()),< / span >
2019-04-19 16:36:05 +03:00
< span class = "functiontext" > PackageTypes::get< / span > < span class = "plain" > (< / span > < span class = "identifier" > I< / span > < span class = "string" > "_module"< / span > < span class = "plain" > ));< / span >
2019-03-17 14:40:57 +02:00
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > generic_pr< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > synoptic_pr< / span > < span class = "plain" > = < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "functiontext" > Packaging::request_synoptic< / span > < span class = "plain" > (< / span > < span class = "reserved" > void< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > synoptic_pr< / span > < span class = "plain" > == < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > )< / span >
2019-04-11 22:32:39 +03:00
< span class = "identifier" > synoptic_pr< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Packaging::request< / span > < span class = "plain" > (< / span >
2019-04-18 03:53:27 +03:00
< span class = "functiontext" > InterNames::explicitly_named< / span > < span class = "plain" > (< / span > < span class = "identifier" > I< / span > < span class = "string" > "synoptic"< / span > < span class = "plain" > , < / span > < span class = "functiontext" > Hierarchy::resources< / span > < span class = "plain" > ()),< / span >
2019-04-19 16:36:05 +03:00
< span class = "functiontext" > PackageTypes::get< / span > < span class = "plain" > (< / span > < span class = "identifier" > I< / span > < span class = "string" > "_module"< / span > < span class = "plain" > ));< / span >
2019-03-17 14:40:57 +02:00
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > synoptic_pr< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
2019-04-14 13:46:13 +03:00
< span class = "reserved" > typedef< / span > < span class = "plain" > < / span > < span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > submodule_identity< / span > < span class = "plain" > {< / span >
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > submodule_name< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > MEMORY_MANAGEMENT< / span >
< span class = "plain" > } < / span > < span class = "reserved" > submodule_identity< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > submodule_identity< / span > < span class = "plain" > *< / span > < span class = "functiontext" > Packaging::register_submodule< / span > < span class = "plain" > (< / span > < span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > name< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > submodule_identity< / span > < span class = "plain" > *< / span > < span class = "identifier" > sid< / span > < span class = "plain" > = < / span > < span class = "identifier" > CREATE< / span > < span class = "plain" > (< / span > < span class = "reserved" > submodule_identity< / span > < span class = "plain" > );< / span >
< span class = "identifier" > sid< / span > < span class = "plain" > -< / span > < span class = "element" > > submodule_name< / span > < span class = "plain" > = < / span > < span class = "identifier" > Str::duplicate< / span > < span class = "plain" > (< / span > < span class = "identifier" > name< / span > < span class = "plain" > );< / span >
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > sid< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > typedef< / span > < span class = "plain" > < / span > < span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > submodule_request< / span > < span class = "plain" > {< / span >
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > submodule_identity< / span > < span class = "plain" > *< / span > < span class = "identifier" > which_submodule< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > where_found< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > MEMORY_MANAGEMENT< / span >
< span class = "plain" > } < / span > < span class = "reserved" > submodule_request< / span > < span class = "plain" > ;< / span >
2019-03-17 14:40:57 +02:00
2019-04-14 13:46:13 +03:00
< span class = "reserved" > typedef< / span > < span class = "plain" > < / span > < span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > submodule_requests< / span > < span class = "plain" > {< / span >
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "identifier" > linked_list< / span > < span class = "plain" > *< / span > < span class = "identifier" > submodules< / span > < span class = "plain" > ; < / span > < span class = "comment" > of < code class = "display" > < span class = "extract" > submodule_identity< / span > < / code > < / span >
< span class = "plain" > } < / span > < span class = "reserved" > submodule_requests< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "functiontext" > Packaging::resources_for_new_submodule< / span > < span class = "plain" > (< / span > < span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > name< / span > < span class = "plain" > , < / span > < span class = "reserved" > submodule_requests< / span > < span class = "plain" > *< / span > < span class = "identifier" > SR< / span > < span class = "plain" > ) {< / span >
2019-04-18 03:53:27 +03:00
< span class = "reserved" > inter_name< / span > < span class = "plain" > *< / span > < span class = "identifier" > package_iname< / span > < span class = "plain" > = < / span > < span class = "functiontext" > InterNames::explicitly_named< / span > < span class = "plain" > (< / span > < span class = "identifier" > name< / span > < span class = "plain" > , < / span > < span class = "functiontext" > Hierarchy::resources< / span > < span class = "plain" > ());< / span >
2019-04-19 16:36:05 +03:00
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > P< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Packaging::request< / span > < span class = "plain" > (< / span > < span class = "identifier" > package_iname< / span > < span class = "plain" > , < / span > < span class = "functiontext" > PackageTypes::get< / span > < span class = "plain" > (< / span > < span class = "identifier" > I< / span > < span class = "string" > "_module"< / span > < span class = "plain" > ));< / span >
2019-04-14 13:46:13 +03:00
< span class = "functiontext" > Packaging::initialise_submodules< / span > < span class = "plain" > (< / span > < span class = "identifier" > SR< / span > < span class = "plain" > );< / span >
2019-04-13 20:58:43 +03:00
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > P< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
2019-04-14 13:46:13 +03:00
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > Packaging::initialise_submodules< / span > < span class = "plain" > (< / span > < span class = "reserved" > submodule_requests< / span > < span class = "plain" > *< / span > < span class = "identifier" > SR< / span > < span class = "plain" > ) {< / span >
< span class = "identifier" > SR< / span > < span class = "plain" > -< / span > < span class = "element" > > submodules< / span > < span class = "plain" > = < / span > < span class = "identifier" > NEW_LINKED_LIST< / span > < span class = "plain" > (< / span > < span class = "reserved" > submodule_request< / span > < span class = "plain" > );< / span >
2019-03-17 14:40:57 +02:00
< span class = "plain" > }< / span >
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > generic_subpackages_initialised< / span > < span class = "plain" > = < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > ;< / span >
2019-04-14 13:46:13 +03:00
< span class = "reserved" > submodule_requests< / span > < span class = "plain" > < / span > < span class = "identifier" > generic_subpackages< / span > < span class = "plain" > ;< / span >
2019-03-17 14:40:57 +02:00
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > synoptic_subpackages_initialised< / span > < span class = "plain" > = < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > ;< / span >
2019-04-14 13:46:13 +03:00
< span class = "reserved" > submodule_requests< / span > < span class = "plain" > < / span > < span class = "identifier" > synoptic_subpackages< / span > < span class = "plain" > ;< / span >
2019-03-17 14:40:57 +02:00
2019-04-14 13:46:13 +03:00
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "functiontext" > Packaging::request_resource< / span > < span class = "plain" > (< / span > < span class = "reserved" > compilation_module< / span > < span class = "plain" > *< / span > < span class = "identifier" > C< / span > < span class = "plain" > , < / span > < span class = "reserved" > submodule_identity< / span > < span class = "plain" > *< / span > < span class = "identifier" > sid< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > submodule_requests< / span > < span class = "plain" > *< / span > < span class = "identifier" > SR< / span > < span class = "plain" > = < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > ;< / span >
2019-03-17 14:40:57 +02:00
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > parent< / 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" > C< / span > < span class = "plain" > ) {< / span >
< span class = "identifier" > SR< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Modules::subpackages< / span > < span class = "plain" > (< / span > < span class = "identifier" > C< / span > < span class = "plain" > );< / span >
< span class = "identifier" > parent< / span > < span class = "plain" > = < / span > < span class = "identifier" > C< / span > < span class = "plain" > -< / span > < span class = "element" > > resources< / span > < span class = "plain" > ;< / span >
< span class = "plain" > } < / span > < span class = "reserved" > else< / span > < span class = "plain" > {< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > generic_subpackages_initialised< / span > < span class = "plain" > == < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > ) {< / span >
< span class = "identifier" > generic_subpackages_initialised< / span > < span class = "plain" > = < / span > < span class = "identifier" > TRUE< / span > < span class = "plain" > ;< / span >
2019-04-14 13:46:13 +03:00
< span class = "functiontext" > Packaging::initialise_submodules< / span > < span class = "plain" > (& < / span > < span class = "identifier" > generic_subpackages< / span > < span class = "plain" > );< / span >
2019-03-17 14:40:57 +02:00
< span class = "plain" > }< / span >
< span class = "identifier" > SR< / span > < span class = "plain" > = & < / span > < span class = "identifier" > generic_subpackages< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > parent< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Packaging::request_generic< / span > < span class = "plain" > ();< / span >
< span class = "plain" > }< / span >
2019-04-19 16:36:05 +03:00
< < span class = "cwebmacro" > Handle the resource request< / span > < span class = "cwebmacronumber" > 5.1< / span > > < span class = "plain" > ;< / span >
2019-04-12 03:47:23 +03:00
< span class = "plain" > }< / span >
2019-04-14 13:46:13 +03:00
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "functiontext" > Packaging::local_resource< / span > < span class = "plain" > (< / span > < span class = "reserved" > submodule_identity< / span > < span class = "plain" > *< / span > < span class = "identifier" > sid< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "functiontext" > Packaging::request_resource< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Modules::find< / span > < span class = "plain" > (< / span > < span class = "identifier" > current_sentence< / span > < span class = "plain" > ), < / span > < span class = "identifier" > sid< / span > < span class = "plain" > );< / span >
2019-03-17 14:40:57 +02:00
< span class = "plain" > }< / span >
2019-04-14 13:46:13 +03:00
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "functiontext" > Packaging::generic_resource< / span > < span class = "plain" > (< / span > < span class = "reserved" > submodule_identity< / span > < span class = "plain" > *< / span > < span class = "identifier" > sid< / span > < span class = "plain" > ) {< / span >
2019-04-11 22:32:39 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > generic_subpackages_initialised< / span > < span class = "plain" > == < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > ) {< / span >
< span class = "identifier" > generic_subpackages_initialised< / span > < span class = "plain" > = < / span > < span class = "identifier" > TRUE< / span > < span class = "plain" > ;< / span >
2019-04-14 13:46:13 +03:00
< span class = "functiontext" > Packaging::initialise_submodules< / span > < span class = "plain" > (& < / span > < span class = "identifier" > generic_subpackages< / span > < span class = "plain" > );< / span >
2019-04-11 22:32:39 +03:00
< span class = "plain" > }< / span >
2019-04-14 13:46:13 +03:00
< span class = "reserved" > submodule_requests< / span > < span class = "plain" > *< / span > < span class = "identifier" > SR< / span > < span class = "plain" > = & < / span > < span class = "identifier" > generic_subpackages< / span > < span class = "plain" > ;< / span >
2019-04-11 22:32:39 +03:00
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > parent< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Packaging::request_generic< / span > < span class = "plain" > ();< / span >
2019-04-19 16:36:05 +03:00
< < span class = "cwebmacro" > Handle the resource request< / span > < span class = "cwebmacronumber" > 5.1< / span > > < span class = "plain" > ;< / span >
2019-04-11 22:32:39 +03:00
< span class = "plain" > }< / span >
2019-04-14 13:46:13 +03:00
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "functiontext" > Packaging::synoptic_resource< / span > < span class = "plain" > (< / span > < span class = "reserved" > submodule_identity< / span > < span class = "plain" > *< / span > < span class = "identifier" > sid< / span > < span class = "plain" > ) {< / span >
2019-03-17 14:40:57 +02:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > synoptic_subpackages_initialised< / span > < span class = "plain" > == < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > ) {< / span >
< span class = "identifier" > synoptic_subpackages_initialised< / span > < span class = "plain" > = < / span > < span class = "identifier" > TRUE< / span > < span class = "plain" > ;< / span >
2019-04-14 13:46:13 +03:00
< span class = "functiontext" > Packaging::initialise_submodules< / span > < span class = "plain" > (& < / span > < span class = "identifier" > synoptic_subpackages< / span > < span class = "plain" > );< / span >
2019-03-17 14:40:57 +02:00
< span class = "plain" > }< / span >
2019-04-14 13:46:13 +03:00
< span class = "reserved" > submodule_requests< / span > < span class = "plain" > *< / span > < span class = "identifier" > SR< / span > < span class = "plain" > = & < / span > < span class = "identifier" > synoptic_subpackages< / span > < span class = "plain" > ;< / span >
2019-03-17 14:40:57 +02:00
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > parent< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Packaging::request_synoptic< / span > < span class = "plain" > ();< / span >
2019-04-19 16:36:05 +03:00
< < span class = "cwebmacro" > Handle the resource request< / span > < span class = "cwebmacronumber" > 5.1< / span > > < span class = "plain" > ;< / span >
2019-03-17 14:40:57 +02:00
< span class = "plain" > }< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
2019-04-12 03:47:23 +03:00
< p class = "endnote" > The function Packaging::request_generic appears nowhere else.< / p >
< p class = "endnote" > The function Packaging::request_synoptic appears nowhere else.< / p >
2019-04-14 13:46:13 +03:00
< p class = "endnote" > The function Packaging::register_submodule is used in 27/hr (< a href = "27-hr.html#SP1_2" > § 1.2< / a > , < a href = "27-hr.html#SP1_4" > § 1.4< / a > , < a href = "27-hr.html#SP1_6" > § 1.6< / a > , < a href = "27-hr.html#SP1_8" > § 1.8< / a > , < a href = "27-hr.html#SP1_10" > § 1.10< / a > , < a href = "27-hr.html#SP1_12" > § 1.12< / a > , < a href = "27-hr.html#SP1_14" > § 1.14< / a > , < a href = "27-hr.html#SP1_16" > § 1.16< / a > , < a href = "27-hr.html#SP1_18" > § 1.18< / a > , < a href = "27-hr.html#SP1_20" > § 1.20< / a > , < a href = "27-hr.html#SP1_22" > § 1.22< / a > , < a href = "27-hr.html#SP1_24" > § 1.24< / a > , < a href = "27-hr.html#SP1_26" > § 1.26< / a > , < a href = "27-hr.html#SP1_28" > § 1.28< / a > , < a href = "27-hr.html#SP1_30" > § 1.30< / a > , < a href = "27-hr.html#SP1_32" > § 1.32< / a > , < a href = "27-hr.html#SP1_34" > § 1.34< / a > , < a href = "27-hr.html#SP1_36" > § 1.36< / a > , < a href = "27-hr.html#SP1_38" > § 1.38< / a > , < a href = "27-hr.html#SP1_40" > § 1.40< / a > , < a href = "27-hr.html#SP1_42" > § 1.42< / a > , < a href = "27-hr.html#SP1_44" > § 1.44< / a > ).< / p >
2019-04-13 20:58:43 +03:00
< p class = "endnote" > The function Packaging::resources_for_new_submodule is used in 27/cm (< a href = "27-cm.html#SP2" > § 2< / a > ).< / p >
2019-03-17 14:40:57 +02:00
2019-04-14 13:46:13 +03:00
< p class = "endnote" > The function Packaging::initialise_submodules appears nowhere else.< / p >
2019-03-17 14:40:57 +02:00
2019-04-17 20:19:03 +03:00
< p class = "endnote" > The function Packaging::request_resource is used in 27/hl (< a href = "27-hl.html#SP2" > § 2< / a > ).< / p >
2019-03-17 14:40:57 +02:00
2019-04-13 20:58:43 +03:00
< p class = "endnote" > The function Packaging::local_resource appears nowhere else.< / p >
2019-03-17 14:40:57 +02:00
2019-04-14 13:46:13 +03:00
< p class = "endnote" > The function Packaging::generic_resource is used in 27/hl (< a href = "27-hl.html#SP1" > § 1< / a > ).< / p >
< p class = "endnote" > The function Packaging::synoptic_resource is used in 27/hl (< a href = "27-hl.html#SP1" > § 1< / a > ).< / p >
2019-04-13 20:58:43 +03:00
2019-04-14 13:46:13 +03:00
< p class = "endnote" > The structure submodule_identity is private to this section.< / p >
2019-03-17 14:40:57 +02:00
2019-04-14 13:46:13 +03:00
< p class = "endnote" > The structure submodule_request is private to this section.< / p >
< p class = "endnote" > The structure submodule_requests is private to this section.< / p >
2019-03-17 14:40:57 +02:00
2019-04-19 16:36:05 +03:00
< p class = "inwebparagraph" > < a id = "SP5_1" > < / a > < b > § 5.1. < / b > < code class = "display" >
< < span class = "cwebmacrodefn" > Handle the resource request< / span > < span class = "cwebmacronumber" > 5.1< / span > > =
2019-03-17 14:40:57 +02:00
< / code > < / p >
< pre class = "displaydefn" >
2019-04-14 13:46:13 +03:00
< span class = "reserved" > submodule_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > sr< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > LOOP_OVER_LINKED_LIST< / span > < span class = "plain" > (< / span > < span class = "identifier" > sr< / span > < span class = "plain" > , < / span > < span class = "reserved" > submodule_request< / span > < span class = "plain" > , < / span > < span class = "identifier" > SR< / span > < span class = "plain" > -< / span > < span class = "element" > > submodules< / span > < span class = "plain" > )< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > sid< / span > < span class = "plain" > == < / span > < span class = "identifier" > sr< / span > < span class = "plain" > -< / span > < span class = "element" > > which_submodule< / span > < span class = "plain" > )< / span >
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > sr< / span > < span class = "plain" > -< / span > < span class = "element" > > where_found< / span > < span class = "plain" > ;< / span >
2019-04-18 03:53:27 +03:00
< span class = "reserved" > inter_name< / span > < span class = "plain" > *< / span > < span class = "identifier" > iname< / span > < span class = "plain" > = < / span > < span class = "functiontext" > InterNames::explicitly_named< / span > < span class = "plain" > (< / span > < span class = "identifier" > sid< / span > < span class = "plain" > -< / span > < span class = "element" > > submodule_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > parent< / span > < span class = "plain" > );< / span >
2019-04-14 13:46:13 +03:00
< span class = "identifier" > sr< / span > < span class = "plain" > = < / span > < span class = "identifier" > CREATE< / span > < span class = "plain" > (< / span > < span class = "reserved" > submodule_request< / span > < span class = "plain" > );< / span >
< span class = "identifier" > sr< / span > < span class = "plain" > -< / span > < span class = "element" > > which_submodule< / span > < span class = "plain" > = < / span > < span class = "identifier" > sid< / span > < span class = "plain" > ;< / span >
2019-04-19 16:36:05 +03:00
< span class = "identifier" > sr< / span > < span class = "plain" > -< / span > < span class = "element" > > where_found< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Packaging::request< / span > < span class = "plain" > (< / span > < span class = "identifier" > iname< / span > < span class = "plain" > , < / span > < span class = "functiontext" > PackageTypes::get< / span > < span class = "plain" > (< / span > < span class = "identifier" > I< / span > < span class = "string" > "_submodule"< / span > < span class = "plain" > ));< / span >
2019-04-14 13:46:13 +03:00
< span class = "identifier" > ADD_TO_LINKED_LIST< / span > < span class = "plain" > (< / span > < span class = "identifier" > sr< / span > < span class = "plain" > , < / span > < span class = "reserved" > submodule_request< / span > < span class = "plain" > , < / span > < span class = "identifier" > SR< / span > < span class = "plain" > -< / span > < span class = "element" > > submodules< / span > < span class = "plain" > );< / span >
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > sr< / span > < span class = "plain" > -< / span > < span class = "element" > > where_found< / span > < span class = "plain" > ;< / span >
2019-03-17 14:40:57 +02:00
< / pre >
< p class = "inwebparagraph" > < / p >
2019-04-19 16:36:05 +03:00
< p class = "endnote" > This code is used in < a href = "#SP5" > § 5< / a > (three times).< / p >
2019-03-17 14:40:57 +02:00
2019-04-19 16:36:05 +03:00
< p class = "inwebparagraph" > < a id = "SP6" > < / a > < b > § 6. < / b > < / p >
2019-03-17 14:40:57 +02:00
2019-04-13 22:47:15 +03:00
< pre class = "definitions" >
< span class = "definitionkeyword" > define< / span > < span class = "constant" > MAX_PRCS< / span > < span class = "plain" > 500< / span >
< / pre >
2019-03-17 14:40:57 +02:00
< pre class = "display" >
2019-04-13 22:47:15 +03:00
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > no_pr_counters_registered< / span > < span class = "plain" > = 0;< / span >
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > pr_counter_names< / span > < span class = "plain" > [< / span > < span class = "constant" > MAX_PRCS< / span > < span class = "plain" > ];< / span >
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "functiontext" > Packaging::register_counter< / span > < span class = "plain" > (< / span > < span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > name< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > id< / span > < span class = "plain" > = < / span > < span class = "identifier" > no_pr_counters_registered< / span > < span class = "plain" > ++;< / span >
< span class = "reserved" > if< / span > < span class = "plain" > ((< / span > < span class = "identifier" > id< / span > < span class = "plain" > < 0) || (< / span > < span class = "identifier" > id< / span > < span class = "plain" > > = < / span > < span class = "constant" > MAX_PRCS< / span > < span class = "plain" > )) < / span > < span class = "identifier" > internal_error< / span > < span class = "plain" > (< / span > < span class = "string" > "out of range"< / span > < span class = "plain" > );< / span >
< span class = "identifier" > pr_counter_names< / span > < span class = "plain" > [< / span > < span class = "identifier" > id< / span > < span class = "plain" > ] = < / span > < span class = "identifier" > Str::duplicate< / span > < span class = "plain" > (< / span > < span class = "identifier" > name< / span > < span class = "plain" > );< / span >
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > id< / span > < span class = "plain" > ;< / span >
2019-04-13 20:58:43 +03:00
< span class = "plain" > }< / span >
2019-03-17 14:40:57 +02:00
< span class = "reserved" > inter_name< / span > < span class = "plain" > *< / span > < span class = "functiontext" > Packaging::supply_iname< / span > < span class = "plain" > (< / span > < span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > R< / span > < span class = "plain" > , < / span > < span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > what_for< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > R< / span > < span class = "plain" > == < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > ) < / span > < span class = "identifier" > internal_error< / span > < span class = "plain" > (< / span > < span class = "string" > "no request"< / span > < span class = "plain" > );< / span >
2019-04-13 22:47:15 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > ((< / span > < span class = "identifier" > what_for< / span > < span class = "plain" > < 0) || (< / span > < span class = "identifier" > what_for< / span > < span class = "plain" > > = < / span > < span class = "identifier" > no_pr_counters_registered< / span > < span class = "plain" > )) < / span > < span class = "identifier" > internal_error< / span > < span class = "plain" > (< / span > < span class = "string" > "out of range"< / span > < span class = "plain" > );< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > counters< / span > < span class = "plain" > == < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > )< / span >
2019-04-14 13:46:13 +03:00
< span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > counters< / span > < span class = "plain" > = < / span > < span class = "identifier" > NEW_LINKED_LIST< / span > < span class = "plain" > (< / span > < span class = "reserved" > submodule_request_counter< / span > < span class = "plain" > );< / span >
2019-04-13 22:47:15 +03:00
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > N< / span > < span class = "plain" > = -1;< / span >
2019-04-14 13:46:13 +03:00
< span class = "reserved" > submodule_request_counter< / span > < span class = "plain" > *< / span > < span class = "identifier" > src< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > LOOP_OVER_LINKED_LIST< / span > < span class = "plain" > (< / span > < span class = "identifier" > src< / span > < span class = "plain" > , < / span > < span class = "reserved" > submodule_request_counter< / span > < span class = "plain" > , < / span > < span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > counters< / span > < span class = "plain" > )< / span >
2019-04-13 22:47:15 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > src< / span > < span class = "plain" > -< / span > < span class = "element" > > counter_id< / span > < span class = "plain" > == < / span > < span class = "identifier" > what_for< / span > < span class = "plain" > ) {< / span >
< span class = "identifier" > N< / span > < span class = "plain" > = ++(< / span > < span class = "identifier" > src< / span > < span class = "plain" > -< / span > < span class = "element" > > counter_value< / span > < span class = "plain" > ); < / span > < span class = "reserved" > break< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > N< / span > < span class = "plain" > < 0) {< / span >
2019-04-14 13:46:13 +03:00
< span class = "reserved" > submodule_request_counter< / span > < span class = "plain" > *< / span > < span class = "identifier" > src< / span > < span class = "plain" > = < / span > < span class = "identifier" > CREATE< / span > < span class = "plain" > (< / span > < span class = "reserved" > submodule_request_counter< / span > < span class = "plain" > );< / span >
2019-04-13 22:47:15 +03:00
< span class = "identifier" > src< / span > < span class = "plain" > -< / span > < span class = "element" > > counter_id< / span > < span class = "plain" > = < / span > < span class = "identifier" > what_for< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > src< / span > < span class = "plain" > -< / span > < span class = "element" > > counter_value< / span > < span class = "plain" > = 1;< / span >
< span class = "identifier" > N< / span > < span class = "plain" > = 1;< / span >
2019-04-14 13:46:13 +03:00
< span class = "identifier" > ADD_TO_LINKED_LIST< / span > < span class = "plain" > (< / span > < span class = "identifier" > src< / span > < span class = "plain" > , < / span > < span class = "reserved" > submodule_request_counter< / span > < span class = "plain" > , < / span > < span class = "identifier" > R< / span > < span class = "plain" > -< / span > < span class = "element" > > counters< / span > < span class = "plain" > );< / span >
2019-04-13 22:47:15 +03:00
< span class = "plain" > }< / span >
2019-03-17 14:40:57 +02:00
< span class = "identifier" > TEMPORARY_TEXT< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > );< / span >
2019-04-13 22:47:15 +03:00
< span class = "identifier" > WRITE_TO< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > , < / span > < span class = "string" > "%S_%d"< / span > < span class = "plain" > , < / span > < span class = "identifier" > pr_counter_names< / span > < span class = "plain" > [< / span > < span class = "identifier" > what_for< / span > < span class = "plain" > ], < / span > < span class = "identifier" > N< / span > < span class = "plain" > );< / span >
2019-04-18 03:53:27 +03:00
< span class = "reserved" > inter_name< / span > < span class = "plain" > *< / span > < span class = "identifier" > iname< / span > < span class = "plain" > = < / span > < span class = "functiontext" > InterNames::explicitly_named< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > , < / span > < span class = "identifier" > R< / span > < span class = "plain" > );< / span >
2019-03-17 14:40:57 +02:00
< span class = "identifier" > DISCARD_TEXT< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > );< / span >
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > iname< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
2019-04-18 11:51:47 +03:00
< span class = "reserved" > inter_name< / span > < span class = "plain" > *< / span > < span class = "functiontext" > Packaging::function< / span > < span class = "plain" > (< / span > < span class = "reserved" > inter_name< / span > < span class = "plain" > *< / span > < span class = "identifier" > function_iname< / span > < span class = "plain" > , < / span > < span class = "reserved" > inter_name< / span > < span class = "plain" > *< / span > < span class = "identifier" > temp_iname< / span > < span class = "plain" > ) {< / span >
2019-04-19 16:36:05 +03:00
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > P< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Packaging::request< / span > < span class = "plain" > (< / span > < span class = "identifier" > function_iname< / span > < span class = "plain" > , < / span > < span class = "functiontext" > PackageTypes::function< / span > < span class = "plain" > ());< / span >
2019-04-18 11:51:47 +03:00
< span class = "reserved" > inter_name< / span > < span class = "plain" > *< / span > < span class = "identifier" > iname< / span > < span class = "plain" > = < / span > < span class = "functiontext" > InterNames::explicitly_named< / span > < span class = "plain" > (< / span > < span class = "identifier" > I< / span > < span class = "string" > "call"< / span > < span class = "plain" > , < / span > < span class = "identifier" > P< / span > < span class = "plain" > );< / span >
2019-03-17 14:40:57 +02:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > temp_iname< / span > < span class = "plain" > ) {< / span >
< span class = "identifier" > TEMPORARY_TEXT< / span > < span class = "plain" > (< / span > < span class = "identifier" > T< / span > < span class = "plain" > );< / span >
< span class = "identifier" > WRITE_TO< / span > < span class = "plain" > (< / span > < span class = "identifier" > T< / span > < span class = "plain" > , < / span > < span class = "string" > "%n"< / span > < span class = "plain" > , < / span > < span class = "identifier" > temp_iname< / span > < span class = "plain" > );< / span >
2019-04-19 16:36:05 +03:00
< span class = "functiontext" > Emit::change_translation< / span > < span class = "plain" > (< / span > < span class = "identifier" > iname< / span > < span class = "plain" > , < / span > < span class = "identifier" > T< / span > < span class = "plain" > );< / span >
2019-03-17 14:40:57 +02:00
< span class = "identifier" > DISCARD_TEXT< / span > < span class = "plain" > (< / span > < span class = "identifier" > T< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > iname< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
2019-04-18 11:51:47 +03:00
< span class = "reserved" > inter_name< / span > < span class = "plain" > *< / span > < span class = "functiontext" > Packaging::function_text< / span > < span class = "plain" > (< / span > < span class = "reserved" > inter_name< / span > < span class = "plain" > *< / span > < span class = "identifier" > function_iname< / span > < span class = "plain" > , < / span > < span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > translation< / span > < span class = "plain" > ) {< / span >
2019-04-19 16:36:05 +03:00
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > P< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Packaging::request< / span > < span class = "plain" > (< / span > < span class = "identifier" > function_iname< / span > < span class = "plain" > , < / span > < span class = "functiontext" > PackageTypes::function< / span > < span class = "plain" > ());< / span >
2019-04-18 11:51:47 +03:00
< span class = "reserved" > inter_name< / span > < span class = "plain" > *< / span > < span class = "identifier" > iname< / span > < span class = "plain" > = < / span > < span class = "functiontext" > InterNames::explicitly_named< / span > < span class = "plain" > (< / span > < span class = "identifier" > I< / span > < span class = "string" > "call"< / span > < span class = "plain" > , < / span > < span class = "identifier" > P< / span > < span class = "plain" > );< / span >
2019-04-17 20:19:03 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > translation< / span > < span class = "plain" > )< / span >
2019-04-19 16:36:05 +03:00
< span class = "functiontext" > Emit::change_translation< / span > < span class = "plain" > (< / span > < span class = "identifier" > iname< / span > < span class = "plain" > , < / span > < span class = "identifier" > translation< / span > < span class = "plain" > );< / span >
2019-03-17 14:40:57 +02:00
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > iname< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
2019-04-18 11:51:47 +03:00
< span class = "reserved" > inter_name< / span > < span class = "plain" > *< / span > < span class = "functiontext" > Packaging::datum_text< / span > < span class = "plain" > (< / span > < span class = "reserved" > inter_name< / span > < span class = "plain" > *< / span > < span class = "identifier" > function_iname< / span > < span class = "plain" > , < / span > < span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > translation< / span > < span class = "plain" > ) {< / span >
2019-04-19 16:36:05 +03:00
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > P< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Packaging::request< / span > < span class = "plain" > (< / span > < span class = "identifier" > function_iname< / span > < span class = "plain" > , < / span > < span class = "functiontext" > PackageTypes::get< / span > < span class = "plain" > (< / span > < span class = "identifier" > I< / span > < span class = "string" > "_data"< / span > < span class = "plain" > ));< / span >
2019-04-18 11:51:47 +03:00
< span class = "reserved" > inter_name< / span > < span class = "plain" > *< / span > < span class = "identifier" > iname< / span > < span class = "plain" > = < / span > < span class = "functiontext" > InterNames::explicitly_named< / span > < span class = "plain" > (< / span > < span class = "identifier" > translation< / span > < span class = "plain" > , < / span > < span class = "identifier" > P< / span > < span class = "plain" > );< / span >
2019-04-12 03:47:23 +03:00
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > iname< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
2019-04-19 16:36:05 +03:00
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "functiontext" > Packaging::housed_in_function< / span > < span class = "plain" > (< / span > < span class = "reserved" > inter_name< / span > < span class = "plain" > *< / span > < span class = "identifier" > iname< / span > < span class = "plain" > ) {< / span >
2019-03-17 14:40:57 +02:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > iname< / span > < span class = "plain" > == < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > ) < / span > < span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > ;< / span >
2019-04-18 11:51:47 +03:00
< span class = "reserved" > package_request< / span > < span class = "plain" > *< / span > < span class = "identifier" > P< / span > < span class = "plain" > = < / span > < span class = "functiontext" > InterNames::location< / span > < span class = "plain" > (< / span > < span class = "identifier" > iname< / span > < span class = "plain" > );< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > == < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > ) < / span > < span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > ;< / span >
2019-04-19 16:36:05 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > -< / span > < span class = "element" > > eventual_type< / span > < span class = "plain" > == < / span > < span class = "functiontext" > PackageTypes::function< / span > < span class = "plain" > ()) < / span > < span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > TRUE< / span > < span class = "plain" > ;< / span >
2019-03-17 14:40:57 +02:00
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
2019-04-17 20:19:03 +03:00
< p class = "endnote" > The function Packaging::register_counter is used in 27/hr (< a href = "27-hr.html#SP1" > § 1< / a > ), 27/hl (< a href = "27-hl.html#SP2" > § 2< / a > ).< / p >
2019-04-13 20:58:43 +03:00
2019-04-17 20:19:03 +03:00
< p class = "endnote" > The function Packaging::supply_iname is used in 27/hr (< a href = "27-hr.html#SP5" > § 5< / a > ), 27/hl (< a href = "27-hl.html#SP2" > § 2< / a > ).< / p >
2019-03-17 14:40:57 +02:00
2019-04-18 03:53:27 +03:00
< p class = "endnote" > The function Packaging::function is used in 27/hl (< a href = "27-hl.html#SP1" > § 1< / a > , < a href = "27-hl.html#SP1_1" > § 1.1< / a > ).< / p >
2019-03-17 14:40:57 +02:00
2019-04-18 03:53:27 +03:00
< p class = "endnote" > The function Packaging::function_text is used in 27/hl (< a href = "27-hl.html#SP1" > § 1< / a > ).< / p >
2019-03-17 14:40:57 +02:00
2019-04-12 16:47:00 +03:00
< p class = "endnote" > The function Packaging::datum_text is used in 27/hl (< a href = "27-hl.html#SP1" > § 1< / a > ).< / p >
2019-04-12 03:47:23 +03:00
2019-04-19 16:36:05 +03:00
< p class = "endnote" > The function Packaging::housed_in_function is used in 26/rt (< a href = "26-rt.html#SP4" > § 4< / a > ), 27/ei (< a href = "27-ei.html#SP3" > § 3< / a > ).< / p >
2019-03-17 14:40:57 +02:00
< hr class = "tocbar" >
2019-04-19 16:36:05 +03:00
< ul class = "toc" > < li > < a href = "27-cm.html" > Back to 'Compilation Modules'< / a > < / li > < li > < a href = "27-pt.html" > Continue with 'Package Types'< / a > < / li > < / ul > < hr class = "tocbar" >
2019-03-18 02:41:42 +02:00
<!-- End of weave -->
2019-03-17 14:40:57 +02:00
< / body >
< / html >