2019-03-17 14:40:57 +02:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
< html >
< head >
< title > 22/tp< / title >
2020-03-19 02:11:25 +02:00
< meta name = "viewport" content = "width=device-width initial-scale=1" >
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" >
2020-03-19 02:11:25 +02:00
< link href = "../inweb.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
2019-03-17 14:40:57 +02:00
< / head >
< body >
2020-03-19 02:11:25 +02:00
< nav role = "navigation" >
< h1 > < a href = "../webs.html" > Sources< / a > < / h1 >
< ul >
2020-03-28 21:42:53 +02:00
< li > < a href = "../compiler.html" > < b > compiler tools< / b > < / a > < / li >
2020-03-19 02:11:25 +02:00
< li > < a href = "../other.html" > other tools< / a > < / li >
< li > < a href = "../extensions.html" > extensions and kits< / a > < / li >
< li > < a href = "../units.html" > unit test tools< / a > < / li >
< / ul >
< h2 > Compiler Webs< / h2 >
< ul >
< li > < a href = "../inbuild/index.html" > inbuild< / a > < / li >
< li > < a href = "../inform7/index.html" > inform7< / a > < / li >
< li > < a href = "../inter/index.html" > inter< / a > < / li >
< / ul >
< h2 > Inbuild Modules< / h2 >
< ul >
< li > < a href = "../inbuild-module/index.html" > inbuild< / a > < / li >
< li > < a href = "../arch-module/index.html" > arch< / a > < / li >
< li > < a href = "../words-module/index.html" > words< / a > < / li >
< li > < a href = "../syntax-module/index.html" > syntax< / a > < / li >
< li > < a href = "../html-module/index.html" > html< / a > < / li >
< / ul >
< h2 > Inform7 Modules< / h2 >
< ul >
< li > < a href = "../core-module/index.html" > core< / a > < / li >
< li > < a href = "../problems-module/index.html" > problems< / a > < / li >
< li > < a href = "../inflections-module/index.html" > inflections< / a > < / li >
< li > < a href = "../linguistics-module/index.html" > linguistics< / a > < / li >
< li > < a href = "../kinds-module/index.html" > kinds< / a > < / li >
< li > < a href = "../if-module/index.html" > if< / a > < / li >
< li > < a href = "../multimedia-module/index.html" > multimedia< / a > < / li >
< li > < a href = "../index-module/index.html" > index< / a > < / li >
< / ul >
< h2 > Inter Modules< / h2 >
< ul >
< li > < a href = "../inter-module/index.html" > inter< / a > < / li >
< li > < a href = "../building-module/index.html" > building< / a > < / li >
< li > < a href = "../codegen-module/index.html" > codegen< / a > < / li >
< / ul >
< h2 > Foundation< / h2 >
< ul >
< li > < a href = "../../../inweb/docs/foundation-module/index.html" > foundation< / a > < / li >
< / ul >
< / nav >
< main role = "main" >
2019-03-17 14:40:57 +02:00
<!-- Weave of '22/tp2' generated by 7 -->
2020-03-22 12:50:19 +02:00
< ul class = "crumbs" > < li > < a href = "../webs.html" > Source< / a > < / li > < li > < a href = "../compiler.html" > Compiler Modules< / a > < / li > < li > < a href = "index.html" > core< / a > < / li > < li > < a href = "index.html#22" > Chapter 22: Phrases< / a > < / li > < li > < b > Timed Phrases< / b > < / li > < / ul > < p class = "purpose" > Another way phrases can be invoked is as timed events, which need no special Inform data structure and are simply compiled into a pair of timetable I6 arrays to be processed at run-time.< / p >
2019-03-17 14:40:57 +02:00
< ul class = "toc" > < li > < a href = "#SP1" > § 1. Definitions< / a > < / li > < / ul > < hr class = "tocbar" >
< p class = "inwebparagraph" > < a id = "SP1" > < / a > < b > § 1. Definitions. < / b > < / p >
< p class = "inwebparagraph" > < a id = "SP2" > < / a > < b > § 2. < / b > The timing of an event records the time at which a phrase should
spontaneously happen. This is ordinarily a time value, in minutes from 12
midnight, for a phrase happening at a specific time — for instance, one
defined as "At 9:00 AM: ..." But two values are special:
< / p >
< pre class = "definitions" >
2020-04-07 03:06:09 +03:00
< span class = "definitionkeyword" > define< / span > < span class = "constant" > NOT_A_TIMED_EVENT< / span > < span class = "plain" > -1 < / span > < span class = "comment" > as for the vast majority of phrases< / span >
< span class = "definitionkeyword" > define< / span > < span class = "constant" > NO_FIXED_TIME< / span > < span class = "plain" > -2 < / span > < span class = "comment" > for phrases like "When the clock strikes: ..."< / span >
< span class = "definitionkeyword" > define< / span > < span class = "constant" > NOT_AN_EVENT< / span > < span class = "plain" > -3 < / span > < span class = "comment" > not even syntactically< / span >
2019-03-17 14:40:57 +02:00
< / pre >
< p class = "inwebparagraph" > < a id = "SP3" > < / a > < b > § 3. < / b > And here we record where events are used:
< / 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" > use_as_event< / span > < span class = "plain" > {< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "identifier" > parse_node< / span > < span class = "plain" > *< / span > < span class = "identifier" > where_triggered< / span > < span class = "plain" > ; < / span > < span class = "comment" > sentence which specifies when this occurs< / span >
2019-03-17 14:40:57 +02:00
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > use_as_event< / span > < span class = "plain" > *< / span > < span class = "identifier" > next< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > MEMORY_MANAGEMENT< / span >
< span class = "plain" > } < / span > < span class = "reserved" > use_as_event< / span > < span class = "plain" > ;< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
2020-03-11 02:21:09 +02:00
< p class = "endnote" > The structure use_as_event is accessed in 3/pd, 5/lp, 5/ut, 5/un, 5/ins, 6/rlt, 6/nv, 7/ns, 7/oaf, 7/rs, 9/tfa, 9/tbath, 9/rpt, 9/tc, 9/ma, 9/rk, 9/ass, 9/imp, 9/pd, 10/teav, 10/cap, 11/ap, 11/pr, 11/bas, 11/tc, 11/sm, 12/dtd, 12/cdp, 14/rv, 14/lv, 14/cn, 14/ds, 14/ds2, 15/cp, 16/is, 16/in, 19/tb, 19/rsft, 19/tod, 20/eq, 21/rl, 21/rl2, 21/fao, 21/rps, 21/sv, 21/ac, 22/ph, 22/tp, 23/ad, 24/lv, 24/sf, 25/in, 25/pi, 25/cii, 25/cp, 26/uo, 26/tti, 26/pc, 26/ts, 27/cm and here.< / p >
2019-03-17 14:40:57 +02:00
< p class = "inwebparagraph" > < a id = "SP4" > < / a > < b > § 4. < / b > Timed events are stored in two simple arrays, processed by run-time code.
< / p >
< pre class = "display" >
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > Phrases::Timed::TimedEventsTable< / span > < span class = "plain" > (< / span > < span class = "reserved" > void< / span > < span class = "plain" > ) {< / span >
2019-08-24 13:21:48 +03:00
< span class = "identifier" > inter_name< / span > < span class = "plain" > *< / span > < span class = "identifier" > iname< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Hierarchy::find< / span > < span class = "plain" > (< / span > < span class = "constant" > TIMEDEVENTSTABLE_HL< / span > < span class = "plain" > );< / span >
< span class = "identifier" > packaging_state< / span > < span class = "plain" > < / span > < span class = "identifier" > save< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Emit::named_table_array_begin< / span > < span class = "plain" > (< / span > < span class = "identifier" > iname< / span > < span class = "plain" > , < / span > < span class = "identifier" > K_value< / span > < span class = "plain" > );< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > when_count< / span > < span class = "plain" > = < / span > < span class = "constant" > 0< / span > < span class = "plain" > ;< / span >
2019-03-17 14:40:57 +02:00
< span class = "reserved" > phrase< / span > < span class = "plain" > *< / span > < span class = "identifier" > ph< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > LOOP_OVER< / span > < span class = "plain" > (< / span > < span class = "identifier" > ph< / span > < span class = "plain" > , < / span > < span class = "reserved" > phrase< / span > < span class = "plain" > ) {< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > t< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Phrases::Usage::get_timing_of_event< / span > < span class = "plain" > (& (< / span > < span class = "identifier" > ph< / span > < span class = "plain" > -> < / span > < span class = "element" > usage_data< / 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" > t< / span > < span class = "plain" > == < / span > < span class = "constant" > NOT_A_TIMED_EVENT< / span > < span class = "plain" > ) < / span > < span class = "reserved" > continue< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > t< / span > < span class = "plain" > == < / span > < span class = "constant" > NO_FIXED_TIME< / span > < span class = "plain" > ) < / span > < span class = "identifier" > when_count< / span > < span class = "plain" > ++;< / span >
< span class = "reserved" > else< / span > < span class = "plain" > < / span > < span class = "functiontext" > Emit::array_iname_entry< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Phrases::iname< / span > < span class = "plain" > (< / span > < span class = "identifier" > ph< / span > < span class = "plain" > ));< / 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" > when_count< / span > < span class = "plain" > +1; < / span > < span class = "identifier" > i< / span > < span class = "plain" > ++) {< / span >
< span class = "functiontext" > Emit::array_numeric_entry< / span > < span class = "plain" > (0);< / span >
< span class = "functiontext" > Emit::array_numeric_entry< / span > < span class = "plain" > (0);< / span >
< span class = "plain" > }< / span >
2019-04-19 16:36:05 +03:00
< span class = "functiontext" > Emit::array_end< / span > < span class = "plain" > (< / span > < span class = "identifier" > save< / span > < span class = "plain" > );< / span >
2019-09-01 13:50:12 +03:00
< span class = "functiontext" > Hierarchy::make_available< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Emit::tree< / span > < span class = "plain" > (), < / span > < span class = "identifier" > iname< / span > < span class = "plain" > );< / span >
2019-03-17 14:40:57 +02:00
< span class = "plain" > }< / span >
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > Phrases::Timed::TimedEventTimesTable< / span > < span class = "plain" > (< / span > < span class = "reserved" > void< / span > < span class = "plain" > ) {< / span >
2019-08-24 13:21:48 +03:00
< span class = "identifier" > inter_name< / span > < span class = "plain" > *< / span > < span class = "identifier" > iname< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Hierarchy::find< / span > < span class = "plain" > (< / span > < span class = "constant" > TIMEDEVENTTIMESTABLE_HL< / span > < span class = "plain" > );< / span >
< span class = "identifier" > packaging_state< / span > < span class = "plain" > < / span > < span class = "identifier" > save< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Emit::named_table_array_begin< / span > < span class = "plain" > (< / span > < span class = "identifier" > iname< / span > < span class = "plain" > , < / span > < span class = "identifier" > K_number< / span > < span class = "plain" > );< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > when_count< / span > < span class = "plain" > = < / span > < span class = "constant" > 0< / span > < span class = "plain" > ;< / span >
2019-03-17 14:40:57 +02:00
< span class = "reserved" > phrase< / span > < span class = "plain" > *< / span > < span class = "identifier" > ph< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > LOOP_OVER< / span > < span class = "plain" > (< / span > < span class = "identifier" > ph< / span > < span class = "plain" > , < / span > < span class = "reserved" > phrase< / span > < span class = "plain" > ) {< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > t< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Phrases::Usage::get_timing_of_event< / span > < span class = "plain" > (& (< / span > < span class = "identifier" > ph< / span > < span class = "plain" > -> < / span > < span class = "element" > usage_data< / 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" > t< / span > < span class = "plain" > == < / span > < span class = "constant" > NOT_A_TIMED_EVENT< / span > < span class = "plain" > ) < / span > < span class = "reserved" > continue< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > t< / span > < span class = "plain" > == < / span > < span class = "constant" > NO_FIXED_TIME< / span > < span class = "plain" > ) < / span > < span class = "identifier" > when_count< / span > < span class = "plain" > ++;< / span >
< span class = "reserved" > else< / span > < span class = "plain" > < / span > < span class = "functiontext" > Emit::array_numeric_entry< / span > < span class = "plain" > ((< / span > < span class = "identifier" > inter_t< / span > < span class = "plain" > ) < / span > < span class = "identifier" > t< / span > < span class = "plain" > );< / 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" > when_count< / span > < span class = "plain" > +1; < / span > < span class = "identifier" > i< / span > < span class = "plain" > ++) {< / span >
< span class = "functiontext" > Emit::array_numeric_entry< / span > < span class = "plain" > (0);< / span >
< span class = "functiontext" > Emit::array_numeric_entry< / span > < span class = "plain" > (0);< / span >
< span class = "plain" > }< / span >
2019-04-19 16:36:05 +03:00
< span class = "functiontext" > Emit::array_end< / span > < span class = "plain" > (< / span > < span class = "identifier" > save< / span > < span class = "plain" > );< / span >
2019-09-01 13:50:12 +03:00
< span class = "functiontext" > Hierarchy::make_available< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Emit::tree< / span > < span class = "plain" > (), < / span > < span class = "identifier" > iname< / span > < span class = "plain" > );< / span >
2019-03-17 14:40:57 +02:00
< span class = "plain" > }< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
2020-03-11 02:21:09 +02:00
< p class = "endnote" > The function Phrases::Timed::TimedEventsTable is used in 1/htc (< a href = "1-htc.html#SP2_8" > § 2.8< / a > ), 22/cs (< a href = "22-cs.html#SP11" > § 11< / a > ).< / p >
2019-03-17 14:40:57 +02:00
2020-03-11 02:21:09 +02:00
< p class = "endnote" > The function Phrases::Timed::TimedEventTimesTable is used in 1/htc (< a href = "1-htc.html#SP2_8" > § 2.8< / a > ), 22/cs (< a href = "22-cs.html#SP11" > § 11< / a > ).< / p >
2019-03-17 14:40:57 +02:00
< p class = "inwebparagraph" > < a id = "SP5" > < / a > < b > § 5. < / b > That's it, really: everything else is just indexing.
< / p >
< pre class = "display" >
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > Phrases::Timed::note_usage< / span > < span class = "plain" > (< / span > < span class = "reserved" > phrase< / span > < span class = "plain" > *< / span > < span class = "identifier" > ph< / span > < span class = "plain" > , < / span > < span class = "identifier" > parse_node< / span > < span class = "plain" > *< / span > < span class = "identifier" > at< / span > < span class = "plain" > ) {< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > t< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Phrases::Usage::get_timing_of_event< / span > < span class = "plain" > (& (< / span > < span class = "identifier" > ph< / span > < span class = "plain" > -> < / span > < span class = "element" > usage_data< / 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" > t< / span > < span class = "plain" > == < / span > < span class = "constant" > NO_FIXED_TIME< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > use_as_event< / span > < span class = "plain" > *< / span > < span class = "identifier" > uae< / span > < span class = "plain" > = < / span > < span class = "identifier" > CREATE< / span > < span class = "plain" > (< / span > < span class = "reserved" > use_as_event< / span > < span class = "plain" > );< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > uae< / span > < span class = "plain" > -> < / span > < span class = "element" > where_triggered< / span > < span class = "plain" > = < / span > < span class = "identifier" > at< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > uae< / span > < span class = "plain" > -> < / span > < span class = "element" > next< / span > < span class = "plain" > = < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > use_as_event< / span > < span class = "plain" > *< / span > < span class = "identifier" > prev< / span > < span class = "plain" > = < / span > < span class = "identifier" > ph< / span > < span class = "plain" > -> < / span > < span class = "element" > usage_data< / span > < span class = "plain" > .< / span > < span class = "element" > uses_as_event< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > prev< / span > < span class = "plain" > == < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > ) < / span > < span class = "identifier" > ph< / span > < span class = "plain" > -> < / span > < span class = "element" > usage_data< / span > < span class = "plain" > .< / span > < span class = "identifier" > uses_as_event< / span > < span class = "plain" > = < / span > < span class = "identifier" > uae< / span > < span class = "plain" > ;< / span >
2019-03-17 14:40:57 +02:00
< span class = "reserved" > else< / span > < span class = "plain" > {< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > while< / span > < span class = "plain" > ((< / span > < span class = "identifier" > prev< / span > < span class = "plain" > ) & & (< / span > < span class = "identifier" > prev< / span > < span class = "plain" > -> < / span > < span class = "element" > next< / span > < span class = "plain" > )) < / span > < span class = "identifier" > prev< / span > < span class = "plain" > = < / span > < span class = "identifier" > prev< / span > < span class = "plain" > -> < / span > < span class = "element" > next< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > prev< / span > < span class = "plain" > -> < / span > < span class = "element" > next< / span > < span class = "plain" > = < / span > < span class = "identifier" > uae< / span > < span class = "plain" > ;< / span >
2019-03-17 14:40:57 +02:00
< span class = "plain" > }< / span >
< span class = "plain" > }< / span >
< span class = "plain" > }< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
2019-04-10 04:13:29 +03:00
< p class = "endnote" > The function Phrases::Timed::note_usage is used in 25/cii (< a href = "25-cii.html#SP3_1_1_4_12" > § 3.1.1.4.12< / a > ).< / p >
2019-03-17 14:40:57 +02:00
< p class = "inwebparagraph" > < a id = "SP6" > < / a > < b > § 6. < / b > An interesting case where the Problem is arguably only a warning and
arguably shouldn't block compilation. Then again...
< / p >
< pre class = "display" >
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > Phrases::Timed::check_for_unused< / span > < span class = "plain" > (< / span > < span class = "reserved" > void< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > phrase< / span > < span class = "plain" > *< / span > < span class = "identifier" > ph< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > LOOP_OVER< / span > < span class = "plain" > (< / span > < span class = "identifier" > ph< / span > < span class = "plain" > , < / span > < span class = "reserved" > phrase< / span > < span class = "plain" > )< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Phrases::Usage::get_timing_of_event< / span > < span class = "plain" > (& (< / span > < span class = "identifier" > ph< / span > < span class = "plain" > -> < / span > < span class = "element" > usage_data< / span > < span class = "plain" > )) == < / span > < span class = "constant" > NO_FIXED_TIME< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > ph< / span > < span class = "plain" > -> < / span > < span class = "element" > usage_data< / span > < span class = "plain" > .< / span > < span class = "element" > uses_as_event< / span > < span class = "plain" > == < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > ) {< / span >
< span class = "identifier" > current_sentence< / span > < span class = "plain" > = < / span > < span class = "identifier" > ph< / span > < span class = "plain" > -> < / span > < span class = "element" > declaration_node< / span > < span class = "plain" > ;< / span >
2020-03-11 02:21:09 +02:00
< span class = "identifier" > Problems::Issue::sentence_problem< / span > < span class = "plain" > (< / span > < span class = "functiontext" > Task::syntax_tree< / span > < span class = "plain" > (), < / span > < span class = "identifier" > _p_< / span > < span class = "plain" > (< / span > < span class = "identifier" > PM_UnusedTimedEvent< / span > < span class = "plain" > ),< / span >
2019-03-17 14:40:57 +02:00
< span class = "string" > "this sets up a timed event which is never used"< / span > < span class = "plain" > ,< / span >
< span class = "string" > "since you never use any of the phrases which could cause it. "< / span >
< span class = "string" > "(A timed event is just a name, and it needs other instructions "< / span >
< span class = "string" > "elsewhere before it can have any effect.)"< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
< span class = "plain" > }< / span >
< span class = "plain" > }< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
2020-03-11 02:21:09 +02:00
< p class = "endnote" > The function Phrases::Timed::check_for_unused is used in 1/htc (< a href = "1-htc.html#SP2_8" > § 2.8< / a > ).< / p >
2019-03-17 14:40:57 +02:00
< p class = "inwebparagraph" > < a id = "SP7" > < / a > < b > § 7. < / b > And here's the actual index segment.
< / p >
< pre class = "display" >
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > Phrases::Timed::index< / span > < span class = "plain" > (< / span > < span class = "identifier" > OUTPUT_STREAM< / span > < span class = "plain" > ) {< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > when_count< / span > < span class = "plain" > = < / span > < span class = "constant" > 0< / span > < span class = "plain" > , < / span > < span class = "identifier" > tt_count< / span > < span class = "plain" > = < / span > < span class = "constant" > 0< / span > < span class = "plain" > ;< / span >
2019-03-17 14:40:57 +02:00
< < span class = "cwebmacro" > Index events with no specific time< / span > < span class = "cwebmacronumber" > 7.1< / span > > < span class = "plain" > ;< / span >
< < span class = "cwebmacro" > Index timetabled events< / span > < span class = "cwebmacronumber" > 7.2< / span > > < span class = "plain" > ;< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > ((< / span > < span class = "identifier" > when_count< / span > < span class = "plain" > == < / span > < span class = "constant" > 0< / span > < span class = "plain" > ) & & (< / span > < span class = "identifier" > tt_count< / span > < span class = "plain" > == < / span > < span class = "constant" > 0< / span > < span class = "plain" > )) {< / span >
2019-03-17 14:40:57 +02:00
< span class = "identifier" > HTML_OPEN< / span > < span class = "plain" > (< / span > < span class = "string" > "p"< / span > < span class = "plain" > ); < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "< i> None.< /i> "< / span > < span class = "plain" > ); < / span > < span class = "identifier" > HTML_CLOSE< / span > < span class = "plain" > (< / span > < span class = "string" > "p"< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
< span class = "plain" > }< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
< p class = "endnote" > The function Phrases::Timed::index appears nowhere else.< / p >
< p class = "inwebparagraph" > < a id = "SP7_1" > < / a > < b > § 7.1. < / b > < code class = "display" >
< < span class = "cwebmacrodefn" > Index events with no specific time< / span > < span class = "cwebmacronumber" > 7.1< / span > > =
< / code > < / p >
< pre class = "displaydefn" >
< span class = "reserved" > phrase< / span > < span class = "plain" > *< / span > < span class = "identifier" > ph< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > LOOP_OVER< / span > < span class = "plain" > (< / span > < span class = "identifier" > ph< / span > < span class = "plain" > , < / span > < span class = "reserved" > phrase< / span > < span class = "plain" > ) {< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > t< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Phrases::Usage::get_timing_of_event< / span > < span class = "plain" > (& (< / span > < span class = "identifier" > ph< / span > < span class = "plain" > -> < / span > < span class = "element" > usage_data< / 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" > t< / span > < span class = "plain" > == < / span > < span class = "constant" > NO_FIXED_TIME< / span > < span class = "plain" > ) {< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > when_count< / span > < span class = "plain" > == < / span > < span class = "constant" > 0< / span > < span class = "plain" > ) {< / span >
2019-03-17 14:40:57 +02:00
< span class = "identifier" > HTML_OPEN< / span > < span class = "plain" > (< / span > < span class = "string" > "p"< / span > < span class = "plain" > );< / span >
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "< i> Events with no specific time< /i> "< / span > < span class = "plain" > );< / span >
< span class = "identifier" > HTML_CLOSE< / span > < span class = "plain" > (< / span > < span class = "string" > "p"< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
< span class = "identifier" > when_count< / span > < span class = "plain" > ++;< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > HTML_OPEN_WITH< / span > < span class = "plain" > (< / span > < span class = "string" > "p"< / span > < span class = "plain" > , < / span > < span class = "string" > "class=\"tightin2\""< / span > < span class = "plain" > );< / span >
< span class = "functiontext" > Phrases::Usage::index_preamble< / span > < span class = "plain" > (< / span > < span class = "identifier" > OUT< / span > < span class = "plain" > , & (< / span > < span class = "identifier" > ph< / span > < span class = "plain" > -> < / span > < span class = "element" > usage_data< / span > < span class = "plain" > ));< / span >
< span class = "reserved" > if< / span > < span class = "plain" > ((< / span > < span class = "identifier" > ph< / span > < span class = "plain" > -> < / span > < span class = "element" > declaration_node< / span > < span class = "plain" > ) & & < / span >
< span class = "plain" > (< / span > < span class = "identifier" > Wordings::nonempty< / span > < span class = "plain" > (< / span > < span class = "identifier" > ParseTree::get_text< / span > < span class = "plain" > (< / span > < span class = "identifier" > ph< / span > < span class = "plain" > -> < / span > < span class = "element" > declaration_node< / span > < span class = "plain" > ))))< / span >
< span class = "identifier" > Index::link< / span > < span class = "plain" > (< / span > < span class = "identifier" > OUT< / span > < span class = "plain" > , < / span > < span class = "identifier" > Wordings::first_wn< / span > < span class = "plain" > (< / span > < span class = "identifier" > ParseTree::get_text< / span > < span class = "plain" > (< / span > < span class = "identifier" > ph< / span > < span class = "plain" > -> < / span > < span class = "element" > declaration_node< / span > < span class = "plain" > )));< / span >
2019-03-17 14:40:57 +02:00
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > " (where triggered: "< / span > < span class = "plain" > );< / span >
< span class = "reserved" > use_as_event< / span > < span class = "plain" > *< / span > < span class = "identifier" > uae< / span > < span class = "plain" > ;< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > for< / span > < span class = "plain" > (< / span > < span class = "identifier" > uae< / span > < span class = "plain" > = < / span > < span class = "identifier" > ph< / span > < span class = "plain" > -> < / span > < span class = "element" > usage_data< / span > < span class = "plain" > .< / span > < span class = "element" > uses_as_event< / span > < span class = "plain" > ; < / span > < span class = "identifier" > uae< / span > < span class = "plain" > ; < / span > < span class = "identifier" > uae< / span > < span class = "plain" > =< / span > < span class = "identifier" > uae< / span > < span class = "plain" > -> < / span > < span class = "element" > next< / span > < span class = "plain" > )< / span >
< span class = "identifier" > Index::link< / span > < span class = "plain" > (< / span > < span class = "identifier" > OUT< / span > < span class = "plain" > , < / span > < span class = "identifier" > Wordings::first_wn< / span > < span class = "plain" > (< / span > < span class = "identifier" > ParseTree::get_text< / span > < span class = "plain" > (< / span > < span class = "identifier" > uae< / span > < span class = "plain" > -> < / span > < span class = "element" > where_triggered< / span > < span class = "plain" > )));< / span >
2019-03-17 14:40:57 +02:00
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > ")"< / span > < span class = "plain" > );< / span >
< span class = "identifier" > HTML_CLOSE< / span > < span class = "plain" > (< / span > < span class = "string" > "p"< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
< span class = "plain" > }< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
< p class = "endnote" > This code is used in < a href = "#SP7" > § 7< / a > .< / p >
< p class = "inwebparagraph" > < a id = "SP7_2" > < / a > < b > § 7.2. < / b > < code class = "display" >
< < span class = "cwebmacrodefn" > Index timetabled events< / span > < span class = "cwebmacronumber" > 7.2< / span > > =
< / code > < / p >
< pre class = "displaydefn" >
< span class = "reserved" > phrase< / span > < span class = "plain" > *< / span > < span class = "identifier" > ph< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > LOOP_OVER< / span > < span class = "plain" > (< / span > < span class = "identifier" > ph< / span > < span class = "plain" > , < / span > < span class = "reserved" > phrase< / span > < span class = "plain" > ) {< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > t< / span > < span class = "plain" > = < / span > < span class = "functiontext" > Phrases::Usage::get_timing_of_event< / span > < span class = "plain" > (& (< / span > < span class = "identifier" > ph< / span > < span class = "plain" > -> < / span > < span class = "element" > usage_data< / span > < span class = "plain" > ));< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > t< / span > < span class = "plain" > > = < / span > < span class = "constant" > 0< / span > < span class = "plain" > ) { < / span > < span class = "comment" > i.e., an actual time of day in minutes since midnight< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > tt_count< / span > < span class = "plain" > == < / span > < span class = "constant" > 0< / span > < span class = "plain" > ) {< / span >
2019-03-17 14:40:57 +02:00
< span class = "identifier" > HTML_OPEN< / span > < span class = "plain" > (< / span > < span class = "string" > "p"< / span > < span class = "plain" > );< / span >
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "< i> Timetable< /i> "< / span > < span class = "plain" > );< / span >
< span class = "identifier" > HTML_CLOSE< / span > < span class = "plain" > (< / span > < span class = "string" > "p"< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
< span class = "identifier" > tt_count< / span > < span class = "plain" > ++;< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > HTML_OPEN_WITH< / span > < span class = "plain" > (< / span > < span class = "string" > "p"< / span > < span class = "plain" > , < / span > < span class = "string" > "class=\"in2\""< / span > < span class = "plain" > );< / span >
< span class = "functiontext" > Phrases::Usage::index_preamble< / span > < span class = "plain" > (< / span > < span class = "identifier" > OUT< / span > < span class = "plain" > , & (< / span > < span class = "identifier" > ph< / span > < span class = "plain" > -> < / span > < span class = "element" > usage_data< / span > < span class = "plain" > ));< / span >
< span class = "reserved" > if< / span > < span class = "plain" > ((< / span > < span class = "identifier" > ph< / span > < span class = "plain" > -> < / span > < span class = "element" > declaration_node< / span > < span class = "plain" > ) & & < / span >
< span class = "plain" > (< / span > < span class = "identifier" > Wordings::nonempty< / span > < span class = "plain" > (< / span > < span class = "identifier" > ParseTree::get_text< / span > < span class = "plain" > (< / span > < span class = "identifier" > ph< / span > < span class = "plain" > -> < / span > < span class = "element" > declaration_node< / span > < span class = "plain" > ))))< / span >
< span class = "identifier" > Index::link< / span > < span class = "plain" > (< / span > < span class = "identifier" > OUT< / span > < span class = "plain" > , < / span > < span class = "identifier" > Wordings::first_wn< / span > < span class = "plain" > (< / span > < span class = "identifier" > ParseTree::get_text< / span > < span class = "plain" > (< / span > < span class = "identifier" > ph< / span > < span class = "plain" > -> < / span > < span class = "element" > declaration_node< / span > < span class = "plain" > )));< / span >
2019-03-17 14:40:57 +02:00
< span class = "identifier" > HTML_CLOSE< / span > < span class = "plain" > (< / span > < span class = "string" > "p"< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
< span class = "plain" > }< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
< p class = "endnote" > This code is used in < a href = "#SP7" > § 7< / a > .< / p >
< hr class = "tocbar" >
< ul class = "toc" > < li > < a href = "22-tp.html" > Back to 'To Phrases'< / a > < / li > < li > < a href = "22-pi.html" > Continue with 'Phrasebook Index'< / a > < / li > < / ul > < hr class = "tocbar" >
2019-04-22 17:42:10 +03:00
<!-- End of weave -->
2020-03-19 02:11:25 +02:00
< / main >
2019-03-17 14:40:57 +02:00
< / body >
< / html >