2019-06-28 20:25:50 +03:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
< html >
< head >
2019-08-28 12:35:44 +03:00
< title > 3/fc< / title >
2020-03-19 02:11:25 +02:00
< meta name = "viewport" content = "width=device-width initial-scale=1" >
2019-06-28 20:25:50 +03: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-06-28 20:25:50 +03: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-08-28 12:35:44 +03:00
<!-- Weave of '3/cal' 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" > codegen< / a > < / li > < li > < a href = "index.html#3" > Chapter 3: Inter to Final Code< / a > < / li > < li > < b > Constants and Literals< / b > < / li > < / ul > < p class = "purpose" > To generate final code for constants, including arrays.< / p >
2019-06-28 20:25:50 +03:00
< p class = "inwebparagraph" > < a id = "SP1" > < / a > < b > § 1. < / b > < / p >
2019-06-29 15:17:29 +03:00
< pre class = "display" >
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > the_quartet_found< / span > < span class = "plain" > = < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > box_mode< / span > < span class = "plain" > = < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > , < / span > < span class = "identifier" > printing_mode< / span > < span class = "plain" > = < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > CodeGen::CL::prepare< / span > < span class = "plain" > (< / span > < span class = "reserved" > code_generation< / span > < span class = "plain" > *< / span > < span class = "identifier" > gen< / span > < span class = "plain" > ) {< / span >
< span class = "identifier" > the_quartet_found< / span > < span class = "plain" > = < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > box_mode< / span > < span class = "plain" > = < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > ; < / span > < span class = "identifier" > printing_mode< / span > < span class = "plain" > = < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > ;< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > Inter::Tree::traverse< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > -> < / span > < span class = "element" > from< / span > < span class = "plain" > , < / span > < span class = "functiontext" > CodeGen::CL::quartet_visitor< / span > < span class = "plain" > , < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > , < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > , < / span > < span class = "identifier" > CONSTANT_IST< / span > < span class = "plain" > );< / span >
2020-01-13 13:02:57 +02:00
< span class = "plain" > }< / span >
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > CodeGen::CL::quartet_visitor< / span > < span class = "plain" > (< / span > < span class = "identifier" > inter_tree< / span > < span class = "plain" > *< / span > < span class = "identifier" > I< / span > < span class = "plain" > , < / span > < span class = "identifier" > inter_tree_node< / span > < span class = "plain" > *< / span > < span class = "identifier" > P< / span > < span class = "plain" > , < / span > < span class = "reserved" > void< / span > < span class = "plain" > *< / span > < span class = "identifier" > state< / span > < span class = "plain" > ) {< / span >
< span class = "identifier" > inter_symbol< / span > < span class = "plain" > *< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > = < / span > < span class = "identifier" > Inter::SymbolsTables::symbol_from_frame_data< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > , < / span > < span class = "identifier" > DEFN_CONST_IFLD< / span > < span class = "plain" > );< / span >
< span class = "reserved" > if< / span > < span class = "plain" > ((< / span > < span class = "identifier" > Str::eq< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > I< / span > < span class = "string" > "thedark"< / span > < span class = "plain" > )) ||< / span >
< span class = "plain" > (< / span > < span class = "identifier" > Str::eq< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > I< / span > < span class = "string" > "InformLibrary"< / span > < span class = "plain" > )) ||< / span >
< span class = "plain" > (< / span > < span class = "identifier" > Str::eq< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > I< / span > < span class = "string" > "InformParser"< / span > < span class = "plain" > )) ||< / span >
< span class = "plain" > (< / span > < span class = "identifier" > Str::eq< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > I< / span > < span class = "string" > "Compass"< / span > < span class = "plain" > )))< / span >
< span class = "identifier" > the_quartet_found< / span > < span class = "plain" > = < / span > < span class = "identifier" > TRUE< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "functiontext" > CodeGen::CL::quartet_present< / 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" > the_quartet_found< / span > < span class = "plain" > ;< / span >
2019-06-29 15:17:29 +03:00
< span class = "plain" > }< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
2019-08-28 12:35:44 +03:00
< p class = "endnote" > The function CodeGen::CL::prepare is used in 3/cg (< a href = "3-cg.html#SP8_1" > § 8.1< / a > ).< / p >
2019-06-29 15:17:29 +03:00
2020-01-13 13:02:57 +02:00
< p class = "endnote" > The function CodeGen::CL::quartet_visitor appears nowhere else.< / p >
< p class = "endnote" > The function CodeGen::CL::quartet_present is used in 3/iap (< a href = "3-iap.html#SP1" > § 1< / a > ).< / p >
2019-06-29 15:17:29 +03:00
< p class = "inwebparagraph" > < a id = "SP2" > < / a > < b > § 2. < / b > < / p >
2019-06-28 20:25:50 +03:00
< pre class = "display" >
2019-07-13 19:15:26 +03:00
< span class = "reserved" > typedef< / span > < span class = "plain" > < / span > < span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > response_traverse_state< / span > < span class = "plain" > {< / span >
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > NR< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > code_generation< / span > < span class = "plain" > *< / span > < span class = "identifier" > gen< / span > < span class = "plain" > ;< / span >
< span class = "plain" > } < / span > < span class = "reserved" > response_traverse_state< / span > < span class = "plain" > ;< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > CodeGen::CL::responses< / span > < span class = "plain" > (< / span > < span class = "reserved" > code_generation< / span > < span class = "plain" > *< / span > < span class = "identifier" > gen< / span > < span class = "plain" > ) {< / span >
2019-07-13 19:15:26 +03:00
< span class = "reserved" > response_traverse_state< / span > < span class = "plain" > < / span > < span class = "identifier" > rts< / span > < span class = "plain" > ;< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > rts< / span > < span class = "plain" > .< / span > < span class = "element" > NR< / span > < span class = "plain" > = < / span > < span class = "constant" > 0< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > rts< / span > < span class = "plain" > .< / span > < span class = "element" > gen< / span > < span class = "plain" > = < / span > < span class = "identifier" > gen< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > Inter::Tree::traverse< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > -> < / span > < span class = "element" > from< / span > < span class = "plain" > , < / span > < span class = "functiontext" > CodeGen::CL::response_visitor< / span > < span class = "plain" > , & < / span > < span class = "identifier" > rts< / span > < span class = "plain" > , < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > , < / span > < span class = "identifier" > RESPONSE_IST< / span > < span class = "plain" > );< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > rts< / span > < span class = "plain" > .< / span > < span class = "element" > NR< / span > < span class = "plain" > > < / span > < span class = "constant" > 0< / span > < span class = "plain" > ) {< / span >
2019-06-30 13:38:16 +03:00
< span class = "reserved" > generated_segment< / span > < span class = "plain" > *< / span > < span class = "identifier" > saved< / span > < span class = "plain" > = < / span > < span class = "functiontext" > CodeGen::select< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "functiontext" > CodeGen::Targets::constant_segment< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > ));< / span >
< span class = "functiontext" > CodeGen::Targets::begin_constant< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > I< / span > < span class = "string" > "NO_RESPONSES"< / span > < span class = "plain" > , < / span > < span class = "identifier" > TRUE< / span > < span class = "plain" > );< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > WRITE_TO< / span > < span class = "plain" > (< / span > < span class = "functiontext" > CodeGen::current< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > ), < / span > < span class = "string" > "%d"< / span > < span class = "plain" > , < / span > < span class = "identifier" > rts< / span > < span class = "plain" > .< / span > < span class = "element" > NR< / span > < span class = "plain" > );< / span >
2019-06-30 13:38:16 +03:00
< span class = "functiontext" > CodeGen::Targets::end_constant< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > I< / span > < span class = "string" > "NO_RESPONSES"< / span > < span class = "plain" > );< / span >
< span class = "functiontext" > CodeGen::deselect< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > saved< / span > < span class = "plain" > );< / span >
< span class = "identifier" > saved< / span > < span class = "plain" > = < / span > < span class = "functiontext" > CodeGen::select< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "functiontext" > CodeGen::Targets::default_segment< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > ));< / span >
< span class = "identifier" > WRITE_TO< / span > < span class = "plain" > (< / span > < span class = "functiontext" > CodeGen::current< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > ), < / span > < span class = "string" > "Array ResponseTexts --> "< / span > < span class = "plain" > );< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > Inter::Tree::traverse< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > -> < / span > < span class = "element" > from< / span > < span class = "plain" > , < / span > < span class = "functiontext" > CodeGen::CL::response_revisitor< / span > < span class = "plain" > , < / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > , < / span > < span class = "identifier" > RESPONSE_IST< / span > < span class = "plain" > );< / span >
< span class = "identifier" > WRITE_TO< / span > < span class = "plain" > (< / span > < span class = "functiontext" > CodeGen::current< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > ), < / span > < span class = "string" > "0 0;\n"< / span > < span class = "plain" > );< / span >
2019-06-30 13:38:16 +03:00
< span class = "functiontext" > CodeGen::deselect< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > saved< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
2019-06-28 20:25:50 +03:00
< span class = "plain" > }< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
2019-08-28 12:35:44 +03:00
< p class = "endnote" > The function CodeGen::CL::responses is used in 3/cg (< a href = "3-cg.html#SP8_3" > § 8.3< / a > ).< / p >
2019-06-28 20:25:50 +03:00
2019-07-13 19:15:26 +03:00
< p class = "endnote" > The structure response_traverse_state is private to this section.< / p >
2019-06-30 13:38:16 +03:00
< p class = "inwebparagraph" > < a id = "SP3" > < / a > < b > § 3. < / b > < / p >
2019-06-28 20:25:50 +03:00
2019-06-30 13:38:16 +03:00
< pre class = "display" >
2019-07-24 22:29:29 +03:00
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > CodeGen::CL::response_visitor< / span > < span class = "plain" > (< / span > < span class = "identifier" > inter_tree< / span > < span class = "plain" > *< / span > < span class = "identifier" > I< / span > < span class = "plain" > , < / span > < span class = "identifier" > inter_tree_node< / span > < span class = "plain" > *< / span > < span class = "identifier" > P< / span > < span class = "plain" > , < / span > < span class = "reserved" > void< / span > < span class = "plain" > *< / span > < span class = "identifier" > state< / span > < span class = "plain" > ) {< / span >
2019-07-13 19:15:26 +03:00
< span class = "reserved" > response_traverse_state< / span > < span class = "plain" > *< / span > < span class = "identifier" > rts< / span > < span class = "plain" > = (< / span > < span class = "reserved" > response_traverse_state< / span > < span class = "plain" > *) < / span > < span class = "identifier" > state< / span > < span class = "plain" > ;< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > generated_segment< / span > < span class = "plain" > *< / span > < span class = "identifier" > saved< / span > < span class = "plain" > = < / span > < span class = "functiontext" > CodeGen::select< / span > < span class = "plain" > (< / span > < span class = "identifier" > rts< / span > < span class = "plain" > -> < / span > < span class = "element" > gen< / span > < span class = "plain" > , < / span > < span class = "functiontext" > CodeGen::Targets::general_segment< / span > < span class = "plain" > (< / span > < span class = "identifier" > rts< / span > < span class = "plain" > -> < / span > < span class = "element" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > P< / span > < span class = "plain" > ));< / span >
2019-07-13 19:15:26 +03:00
< span class = "identifier" > inter_symbol< / span > < span class = "plain" > *< / span > < span class = "identifier" > resp_name< / span > < span class = "plain" > = < / span > < span class = "identifier" > Inter::SymbolsTables::symbol_from_frame_data< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > , < / span > < span class = "identifier" > DEFN_RESPONSE_IFLD< / span > < span class = "plain" > );< / span >
2020-04-07 03:06:09 +03:00
< span class = "functiontext" > CodeGen::Targets::begin_constant< / span > < span class = "plain" > (< / span > < span class = "identifier" > rts< / span > < span class = "plain" > -> < / span > < span class = "element" > gen< / span > < span class = "plain" > , < / span > < span class = "functiontext" > CodeGen::CL::name< / span > < span class = "plain" > (< / span > < span class = "identifier" > resp_name< / span > < span class = "plain" > ), < / span > < span class = "identifier" > TRUE< / span > < span class = "plain" > );< / span >
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > OUT< / span > < span class = "plain" > = < / span > < span class = "functiontext" > CodeGen::current< / span > < span class = "plain" > (< / span > < span class = "identifier" > rts< / span > < span class = "plain" > -> < / span > < span class = "element" > gen< / span > < span class = "plain" > );< / span >
< span class = "identifier" > rts< / span > < span class = "plain" > -> < / span > < span class = "element" > NR< / span > < span class = "plain" > = < / span > < span class = "identifier" > rts< / span > < span class = "plain" > -> < / span > < span class = "element" > NR< / span > < span class = "plain" > + < / span > < span class = "constant" > 1< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "%d"< / span > < span class = "plain" > , < / span > < span class = "identifier" > rts< / span > < span class = "plain" > -> < / span > < span class = "element" > NR< / span > < span class = "plain" > );< / span >
< span class = "functiontext" > CodeGen::Targets::end_constant< / span > < span class = "plain" > (< / span > < span class = "identifier" > rts< / span > < span class = "plain" > -> < / span > < span class = "element" > gen< / span > < span class = "plain" > , < / span > < span class = "functiontext" > CodeGen::CL::name< / span > < span class = "plain" > (< / span > < span class = "identifier" > resp_name< / span > < span class = "plain" > ));< / span >
< span class = "functiontext" > CodeGen::deselect< / span > < span class = "plain" > (< / span > < span class = "identifier" > rts< / span > < span class = "plain" > -> < / span > < span class = "element" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > saved< / span > < span class = "plain" > );< / span >
2019-06-30 13:38:16 +03:00
< span class = "plain" > }< / span >
2019-07-24 22:29:29 +03:00
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > CodeGen::CL::response_revisitor< / span > < span class = "plain" > (< / span > < span class = "identifier" > inter_tree< / span > < span class = "plain" > *< / span > < span class = "identifier" > I< / span > < span class = "plain" > , < / span > < span class = "identifier" > inter_tree_node< / span > < span class = "plain" > *< / span > < span class = "identifier" > P< / span > < span class = "plain" > , < / span > < span class = "reserved" > void< / span > < span class = "plain" > *< / span > < span class = "identifier" > state< / span > < span class = "plain" > ) {< / span >
2019-07-13 19:15:26 +03:00
< span class = "reserved" > code_generation< / span > < span class = "plain" > *< / span > < span class = "identifier" > gen< / span > < span class = "plain" > = (< / span > < span class = "reserved" > code_generation< / span > < span class = "plain" > *) < / span > < span class = "identifier" > state< / span > < span class = "plain" > ;< / span >
2019-07-24 22:29:29 +03:00
< span class = "functiontext" > CodeGen::CL::literal< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > , < / span > < span class = "identifier" > Inter::Packages::scope_of< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > ),< / span >
< span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > VAL1_RESPONSE_IFLD< / span > < span class = "plain" > ], < / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > VAL1_RESPONSE_IFLD< / span > < span class = "plain" > +1], < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > );< / span >
2019-07-13 19:15:26 +03:00
< span class = "identifier" > WRITE_TO< / span > < span class = "plain" > (< / span > < span class = "functiontext" > CodeGen::current< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > ), < / span > < span class = "string" > " "< / span > < span class = "plain" > );< / span >
2019-06-30 13:38:16 +03:00
< span class = "plain" > }< / span >
2019-06-28 20:25:50 +03:00
< / pre >
< p class = "inwebparagraph" > < / p >
2019-06-30 13:38:16 +03:00
< p class = "endnote" > The function CodeGen::CL::response_visitor is used in < a href = "#SP2" > § 2< / a > .< / p >
< p class = "endnote" > The function CodeGen::CL::response_revisitor is used in < a href = "#SP2" > § 2< / a > .< / p >
2019-06-28 20:25:50 +03:00
2019-06-30 13:38:16 +03:00
< p class = "inwebparagraph" > < a id = "SP4" > < / a > < b > § 4. < / b > There's a contrivance here to get around an awkward point of I6 syntax:
2019-06-28 20:25:50 +03:00
an array written in the form
< / p >
< pre class = "display" >
2020-04-08 01:02:44 +03:00
< span class = "reserved" > Array< / span > < span class = "plain" > < / span > < span class = "identifier" > X< / span > < span class = "plain" > < / span > < span class = "identifier" > table< / span > < span class = "plain" > < / span > < span class = "constant" > 20< / span > < span class = "plain" > ;< / span >
2019-06-28 20:25:50 +03:00
< / pre >
< p class = "inwebparagraph" > makes a table with 20 entries, not a table with one entry whose initial value
is 20. We instead compile this as
< / p >
< pre class = "display" >
2020-04-08 01:02:44 +03:00
< span class = "reserved" > Array< / span > < span class = "plain" > < / span > < span class = "identifier" > X< / span > < span class = "plain" > --> < / span > < span class = "constant" > 1< / span > < span class = "plain" > < / span > < span class = "constant" > 20< / span > < span class = "plain" > ;< / span >
2019-07-24 22:29:29 +03:00
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > CodeGen::CL::constant< / span > < span class = "plain" > (< / span > < span class = "reserved" > code_generation< / span > < span class = "plain" > *< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > inter_tree_node< / span > < span class = "plain" > *< / span > < span class = "identifier" > P< / span > < span class = "plain" > ) {< / span >
2019-06-28 20:25:50 +03:00
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > OUT< / span > < span class = "plain" > = < / span > < span class = "functiontext" > CodeGen::current< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > );< / span >
< span class = "identifier" > inter_symbol< / span > < span class = "plain" > *< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > = < / span > < span class = "identifier" > Inter::SymbolsTables::symbol_from_frame_data< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > , < / span > < span class = "identifier" > DEFN_CONST_IFLD< / 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" > Inter::Symbols::read_annotation< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > INLINE_ARRAY_IANN< / span > < span class = "plain" > ) == < / span > < span class = "constant" > 1< / span > < span class = "plain" > ) < / span > < span class = "reserved" > return< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > Inter::Symbols::read_annotation< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > ACTION_IANN< / span > < span class = "plain" > ) == < / span > < span class = "constant" > 1< / span > < span class = "plain" > ) < / span > < span class = "reserved" > return< / span > < span class = "plain" > ;< / span >
2019-06-28 20:25:50 +03:00
2020-04-07 03:06:09 +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" > con_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > FAKE_ACTION_IANN< / span > < span class = "plain" > ) == < / span > < span class = "constant" > 1< / span > < span class = "plain" > ) {< / span >
2019-06-28 20:25:50 +03:00
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > fa< / span > < span class = "plain" > = < / span > < span class = "identifier" > Str::duplicate< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > );< / span >
< span class = "identifier" > Str::delete_first_character< / span > < span class = "plain" > (< / span > < span class = "identifier" > fa< / span > < span class = "plain" > );< / span >
< span class = "identifier" > Str::delete_first_character< / span > < span class = "plain" > (< / span > < span class = "identifier" > fa< / span > < span class = "plain" > );< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "Fake_Action %S;\n"< / span > < span class = "plain" > , < / span > < span class = "identifier" > fa< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > return< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > ifndef_me< / span > < span class = "plain" > = < / span > < span class = "identifier" > FALSE< / 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" > Inter::Symbols::read_annotation< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > VENEER_IANN< / span > < span class = "plain" > ) > < / span > < span class = "constant" > 0< / span > < span class = "plain" > ) < / span > < span class = "reserved" > return< / span > < span class = "plain" > ;< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > ((< / span > < span class = "identifier" > Str::eq< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > I< / span > < span class = "string" > "WORDSIZE"< / span > < span class = "plain" > )) ||< / span >
< span class = "plain" > (< / span > < span class = "identifier" > Str::eq< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > I< / span > < span class = "string" > "TARGET_ZCODE"< / span > < span class = "plain" > )) ||< / span >
< span class = "plain" > (< / span > < span class = "identifier" > Str::eq< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > I< / span > < span class = "string" > "INDIV_PROP_START"< / span > < span class = "plain" > )) ||< / span >
< span class = "plain" > (< / span > < span class = "identifier" > Str::eq< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > I< / span > < span class = "string" > "TARGET_GLULX"< / span > < span class = "plain" > )) ||< / span >
< span class = "plain" > (< / span > < span class = "identifier" > Str::eq< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > I< / span > < span class = "string" > "DICT_WORD_SIZE"< / span > < span class = "plain" > )) ||< / span >
2019-09-07 22:43:31 +03:00
< span class = "plain" > (< / span > < span class = "identifier" > Str::eq< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > I< / span > < span class = "string" > "DEBUG"< / span > < span class = "plain" > )) ||< / span >
< span class = "plain" > (< / span > < span class = "identifier" > Str::eq< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > I< / span > < span class = "string" > "cap_short_name"< / span > < span class = "plain" > )))< / span >
2019-06-28 20:25:50 +03:00
< span class = "identifier" > ifndef_me< / span > < span class = "plain" > = < / span > < span class = "identifier" > TRUE< / 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" > Inter::Symbols::read_annotation< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > OBJECT_IANN< / span > < span class = "plain" > ) > < / span > < span class = "constant" > 0< / span > < span class = "plain" > ) < / span > < span class = "reserved" > return< / span > < span class = "plain" > ;< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > Str::eq< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > I< / span > < span class = "string" > "Release"< / span > < span class = "plain" > )) {< / span >
2019-07-24 22:29:29 +03:00
< span class = "identifier" > inter_t< / span > < span class = "plain" > < / span > < span class = "identifier" > val1< / span > < span class = "plain" > = < / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > DATA_CONST_IFLD< / span > < span class = "plain" > ];< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > inter_t< / span > < span class = "plain" > < / span > < span class = "identifier" > val2< / span > < span class = "plain" > = < / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > DATA_CONST_IFLD< / span > < span class = "plain" > + < / span > < span class = "constant" > 1< / span > < span class = "plain" > ];< / span >
2019-06-28 20:25:50 +03:00
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "Release "< / span > < span class = "plain" > );< / span >
< span class = "functiontext" > CodeGen::CL::literal< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > , < / span > < span class = "identifier" > Inter::Packages::scope_of< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > ), < / span > < span class = "identifier" > val1< / span > < span class = "plain" > , < / span > < span class = "identifier" > val2< / span > < span class = "plain" > , < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > );< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > ";\n"< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > return< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > Str::eq< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > I< / span > < span class = "string" > "Story"< / span > < span class = "plain" > )) {< / span >
2019-07-24 22:29:29 +03:00
< span class = "identifier" > inter_t< / span > < span class = "plain" > < / span > < span class = "identifier" > val1< / span > < span class = "plain" > = < / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > DATA_CONST_IFLD< / span > < span class = "plain" > ];< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > inter_t< / span > < span class = "plain" > < / span > < span class = "identifier" > val2< / span > < span class = "plain" > = < / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > DATA_CONST_IFLD< / span > < span class = "plain" > + < / span > < span class = "constant" > 1< / span > < span class = "plain" > ];< / span >
2019-06-28 20:25:50 +03:00
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "Global Story = "< / span > < span class = "plain" > );< / span >
< span class = "functiontext" > CodeGen::CL::literal< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > , < / span > < span class = "identifier" > Inter::Packages::scope_of< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > ), < / span > < span class = "identifier" > val1< / span > < span class = "plain" > , < / span > < span class = "identifier" > val2< / span > < span class = "plain" > , < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > );< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > ";\n"< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > return< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > Str::eq< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > I< / span > < span class = "string" > "Serial"< / span > < span class = "plain" > )) {< / span >
2019-07-24 22:29:29 +03:00
< span class = "identifier" > inter_t< / span > < span class = "plain" > < / span > < span class = "identifier" > val1< / span > < span class = "plain" > = < / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > DATA_CONST_IFLD< / span > < span class = "plain" > ];< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > inter_t< / span > < span class = "plain" > < / span > < span class = "identifier" > val2< / span > < span class = "plain" > = < / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > DATA_CONST_IFLD< / span > < span class = "plain" > + < / span > < span class = "constant" > 1< / span > < span class = "plain" > ];< / span >
2019-06-28 20:25:50 +03:00
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "Serial "< / span > < span class = "plain" > );< / span >
< span class = "functiontext" > CodeGen::CL::literal< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > , < / span > < span class = "identifier" > Inter::Packages::scope_of< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > ), < / span > < span class = "identifier" > val1< / span > < span class = "plain" > , < / span > < span class = "identifier" > val2< / span > < span class = "plain" > , < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > );< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > ";\n"< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > return< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > Str::eq< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > I< / span > < span class = "string" > "UUID_ARRAY"< / span > < span class = "plain" > )) {< / span >
2019-07-24 22:29:29 +03:00
< span class = "identifier" > inter_t< / span > < span class = "plain" > < / span > < span class = "identifier" > ID< / span > < span class = "plain" > = < / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > DATA_CONST_IFLD< / span > < span class = "plain" > ];< / span >
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > S< / span > < span class = "plain" > = < / span > < span class = "identifier" > Inter::Node::ID_to_text< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > , < / span > < span class = "identifier" > ID< / span > < span class = "plain" > );< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "Array UUID_ARRAY string \"UUID:< / span > < span class = "comment" > ");< / span >
< span class = "string" > for (int i=0, L=Str::len(S); i< L; i++) WRITE("< / span > < span class = "plain" > %< / span > < span class = "identifier" > c< / span > < span class = "string" > ", Characters::toupper(Str::get_at(S, i)));< / span >
< span class = "string" > WRITE("< / span > < span class = "comment" > \";\n");< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > return< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > Inter::Constant::is_routine< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > )) {< / span >
2019-07-27 13:16:22 +03:00
< span class = "identifier" > inter_package< / span > < span class = "plain" > *< / span > < span class = "identifier" > code_block< / span > < span class = "plain" > = < / span > < span class = "identifier" > Inter::Constant::code_block< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > );< / span >
2019-07-16 14:53:24 +03:00
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "[ %S"< / span > < span class = "plain" > , < / span > < span class = "functiontext" > CodeGen::CL::name< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > ));< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > void_level< / span > < span class = "plain" > = < / span > < span class = "identifier" > Inter::Defn::get_level< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > ) + < / span > < span class = "constant" > 2< / span > < span class = "plain" > ;< / span >
2019-07-27 13:16:22 +03:00
< span class = "identifier" > inter_tree_node< / span > < span class = "plain" > *< / span > < span class = "identifier" > D< / span > < span class = "plain" > = < / span > < span class = "identifier" > Inter::Packages::definition< / span > < span class = "plain" > (< / span > < span class = "identifier" > code_block< / span > < span class = "plain" > );< / span >
2019-07-16 14:53:24 +03:00
< span class = "functiontext" > CodeGen::FC::frame< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > D< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > return< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
2019-07-24 22:29:29 +03:00
< span class = "reserved" > switch< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > FORMAT_CONST_IFLD< / span > < span class = "plain" > ]) {< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > case< / span > < span class = "plain" > < / span > < span class = "identifier" > CONSTANT_INDIRECT_TEXT:< / span > < span class = "plain" > {< / span >
2019-07-24 22:29:29 +03:00
< span class = "identifier" > inter_t< / span > < span class = "plain" > < / span > < span class = "identifier" > ID< / span > < span class = "plain" > = < / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > DATA_CONST_IFLD< / span > < span class = "plain" > ];< / span >
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > S< / span > < span class = "plain" > = < / span > < span class = "identifier" > Inter::Node::ID_to_text< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > , < / span > < span class = "identifier" > ID< / span > < span class = "plain" > );< / span >
2019-06-29 15:17:29 +03:00
< span class = "functiontext" > CodeGen::Targets::begin_constant< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "functiontext" > CodeGen::CL::name< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > ), < / span > < span class = "identifier" > TRUE< / span > < span class = "plain" > );< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "\"%S\""< / span > < span class = "plain" > , < / span > < span class = "identifier" > S< / span > < span class = "plain" > );< / span >
2019-06-29 15:17:29 +03:00
< span class = "functiontext" > CodeGen::Targets::end_constant< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "functiontext" > CodeGen::CL::name< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > ));< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > break< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > case< / span > < span class = "plain" > < / span > < span class = "identifier" > CONSTANT_INDIRECT_LIST:< / span > < span class = "plain" > {< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > char< / span > < span class = "plain" > *< / span > < span class = "identifier" > format< / span > < span class = "plain" > = < / span > < span class = "string" > "--> "< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > do_not_bracket< / span > < span class = "plain" > = < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > , < / span > < span class = "identifier" > unsub< / span > < span class = "plain" > = < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > ;< / span >
2019-07-24 22:29:29 +03:00
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > X< / span > < span class = "plain" > = (< / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > extent< / span > < span class = "plain" > - < / span > < span class = "identifier" > DATA_CONST_IFLD< / span > < span class = "plain" > )/2;< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > X< / span > < span class = "plain" > == < / span > < span class = "constant" > 1< / span > < span class = "plain" > ) < / span > < span class = "identifier" > do_not_bracket< / span > < span class = "plain" > = < / span > < span class = "identifier" > TRUE< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > Inter::Symbols::read_annotation< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > BYTEARRAY_IANN< / span > < span class = "plain" > ) == < / span > < span class = "constant" > 1< / span > < span class = "plain" > ) < / span > < span class = "identifier" > format< / 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" > Inter::Symbols::read_annotation< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > TABLEARRAY_IANN< / span > < span class = "plain" > ) == < / span > < span class = "constant" > 1< / span > < span class = "plain" > ) {< / span >
2019-06-28 20:25:50 +03:00
< span class = "identifier" > format< / span > < span class = "plain" > = < / span > < span class = "string" > "table"< / 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" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > extent< / span > < span class = "plain" > - < / span > < span class = "identifier" > DATA_CONST_IFLD< / span > < span class = "plain" > == < / span > < span class = "constant" > 2< / span > < span class = "plain" > ) < / span > < span class = "identifier" > format< / span > < span class = "plain" > = < / span > < span class = "string" > "--> 1"< / span > < span class = "plain" > ;< / span >
2019-06-28 20:25:50 +03:00
< span class = "plain" > }< / span >
2020-04-07 03:06:09 +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" > con_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > BUFFERARRAY_IANN< / span > < span class = "plain" > ) == < / span > < span class = "constant" > 1< / span > < span class = "plain" > ) < / span > < span class = "identifier" > format< / span > < span class = "plain" > = < / span > < span class = "string" > "buffer"< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > Inter::Symbols::read_annotation< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > STRINGARRAY_IANN< / span > < span class = "plain" > ) == < / span > < span class = "constant" > 1< / span > < span class = "plain" > ) { < / span > < span class = "identifier" > format< / span > < span class = "plain" > = < / span > < span class = "string" > "string"< / span > < span class = "plain" > ; < / span > < span class = "identifier" > do_not_bracket< / span > < span class = "plain" > = < / span > < span class = "identifier" > TRUE< / span > < span class = "plain" > ; }< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > Inter::Symbols::read_annotation< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > VERBARRAY_IANN< / span > < span class = "plain" > ) == < / span > < span class = "constant" > 1< / span > < span class = "plain" > ) {< / span >
2019-06-28 20:25:50 +03:00
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "Verb "< / span > < span class = "plain" > ); < / span > < span class = "identifier" > do_not_bracket< / span > < span class = "plain" > = < / span > < span class = "identifier" > TRUE< / span > < span class = "plain" > ; < / span > < span class = "identifier" > unsub< / span > < span class = "plain" > = < / span > < span class = "identifier" > TRUE< / 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" > Inter::Symbols::read_annotation< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > METAVERB_IANN< / span > < span class = "plain" > ) == < / span > < span class = "constant" > 1< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "meta "< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< span class = "plain" > } < / span > < span class = "reserved" > else< / span > < span class = "plain" > {< / span >
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "Array %S %s"< / span > < span class = "plain" > , < / span > < span class = "functiontext" > CodeGen::CL::name< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > ), < / span > < span class = "identifier" > format< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
2019-07-24 22:29:29 +03:00
< span class = "reserved" > for< / span > < span class = "plain" > (< / span > < span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > i< / span > < span class = "plain" > =< / span > < span class = "identifier" > DATA_CONST_IFLD< / span > < span class = "plain" > ; < / span > < span class = "identifier" > i< / span > < span class = "plain" > < < / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > extent< / span > < span class = "plain" > ; < / span > < span class = "identifier" > i< / span > < span class = "plain" > =< / span > < span class = "identifier" > i< / span > < span class = "plain" > +2) {< / span >
2019-06-28 20:25:50 +03:00
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > " "< / span > < span class = "plain" > );< / span >
2019-07-24 22:29:29 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > ((< / span > < span class = "identifier" > do_not_bracket< / span > < span class = "plain" > == < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > ) & & (< / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > i< / span > < span class = "plain" > ] != < / span > < span class = "identifier" > DIVIDER_IVAL< / span > < span class = "plain" > )) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "("< / span > < span class = "plain" > );< / span >
< span class = "functiontext" > CodeGen::CL::literal< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > con_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > Inter::Packages::scope_of< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > ), < / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > i< / span > < span class = "plain" > ], < / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > i< / span > < span class = "plain" > +1], < / span > < span class = "identifier" > unsub< / span > < span class = "plain" > );< / span >
< span class = "reserved" > if< / span > < span class = "plain" > ((< / span > < span class = "identifier" > do_not_bracket< / span > < span class = "plain" > == < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > ) & & (< / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > i< / span > < span class = "plain" > ] != < / span > < span class = "identifier" > DIVIDER_IVAL< / span > < span class = "plain" > )) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > ")"< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< span class = "plain" > }< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > ";\n"< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > break< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > case< / span > < span class = "plain" > < / span > < span class = "identifier" > CONSTANT_SUM_LIST:< / span >
< span class = "reserved" > case< / span > < span class = "plain" > < / span > < span class = "identifier" > CONSTANT_PRODUCT_LIST:< / span >
< span class = "reserved" > case< / span > < span class = "plain" > < / span > < span class = "identifier" > CONSTANT_DIFFERENCE_LIST:< / span >
< span class = "reserved" > case< / span > < span class = "plain" > < / span > < span class = "identifier" > CONSTANT_QUOTIENT_LIST:< / span > < span class = "plain" > {< / span >
2020-01-13 13:02:57 +02:00
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > depth< / span > < span class = "plain" > = < / span > < span class = "functiontext" > CodeGen::CL::constant_depth< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / 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" > depth< / span > < span class = "plain" > > < / span > < span class = "constant" > 1< / span > < span class = "plain" > ) {< / span >
2020-01-13 13:02:57 +02:00
< span class = "identifier" > LOGIF< / span > < span class = "plain" > (< / span > < span class = "identifier" > CONSTANT_DEPTH_CALCULATION< / span > < span class = "plain" > ,< / span >
2020-04-07 03:06:09 +03:00
< span class = "string" > "Con %S has depth %d\n"< / span > < span class = "plain" > , < / span > < span class = "identifier" > con_name< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > depth< / span > < span class = "plain" > );< / span >
2020-01-13 13:02:57 +02:00
< span class = "functiontext" > CodeGen::CL::constant_depth< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > );< / span >
2019-09-22 18:43:06 +03:00
< span class = "plain" > }< / span >
< span class = "reserved" > generated_segment< / span > < span class = "plain" > *< / span > < span class = "identifier" > saved< / span > < span class = "plain" > = < / span > < span class = "functiontext" > CodeGen::select< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "functiontext" > CodeGen::Targets::basic_constant_segment< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > depth< / span > < span class = "plain" > ));< / span >
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > OUT< / span > < span class = "plain" > = < / span > < span class = "functiontext" > CodeGen::current< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > );< / span >
2019-06-29 15:17:29 +03:00
< span class = "functiontext" > CodeGen::Targets::begin_constant< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "functiontext" > CodeGen::CL::name< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > ), < / span > < span class = "identifier" > TRUE< / span > < span class = "plain" > );< / span >
2019-07-24 22:29:29 +03:00
< span class = "reserved" > for< / span > < span class = "plain" > (< / span > < span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > i< / span > < span class = "plain" > =< / span > < span class = "identifier" > DATA_CONST_IFLD< / span > < span class = "plain" > ; < / span > < span class = "identifier" > i< / span > < span class = "plain" > < < / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > extent< / span > < span class = "plain" > ; < / span > < span class = "identifier" > i< / span > < span class = "plain" > =< / span > < span class = "identifier" > i< / span > < span class = "plain" > +2) {< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > i< / span > < span class = "plain" > > < / span > < span class = "identifier" > DATA_CONST_IFLD< / span > < span class = "plain" > ) {< / span >
2019-07-24 22:29:29 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > FORMAT_CONST_IFLD< / span > < span class = "plain" > ] == < / span > < span class = "identifier" > CONSTANT_SUM_LIST< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / 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" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > FORMAT_CONST_IFLD< / span > < span class = "plain" > ] == < / span > < span class = "identifier" > CONSTANT_PRODUCT_LIST< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / 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" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > FORMAT_CONST_IFLD< / span > < span class = "plain" > ] == < / span > < span class = "identifier" > CONSTANT_DIFFERENCE_LIST< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / 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" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > FORMAT_CONST_IFLD< / span > < span class = "plain" > ] == < / span > < span class = "identifier" > CONSTANT_QUOTIENT_LIST< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > " / "< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< span class = "plain" > }< / span >
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > bracket< / span > < span class = "plain" > = < / span > < span class = "identifier" > TRUE< / span > < span class = "plain" > ;< / span >
2019-07-24 22:29:29 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > ((< / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > i< / span > < span class = "plain" > ] == < / span > < span class = "identifier" > LITERAL_IVAL< / span > < span class = "plain" > ) || (< / span > < span class = "identifier" > Inter::Symbols::is_stored_in_data< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > i< / span > < span class = "plain" > ], < / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > i< / span > < span class = "plain" > +1]))) < / span > < span class = "identifier" > bracket< / span > < span class = "plain" > = < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > ;< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > bracket< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "("< / span > < span class = "plain" > );< / span >
2019-07-24 22:29:29 +03:00
< span class = "functiontext" > CodeGen::CL::literal< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > con_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > Inter::Packages::scope_of< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > ), < / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > i< / span > < span class = "plain" > ], < / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > i< / span > < span class = "plain" > +1], < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > bracket< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > ")"< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
2019-06-29 15:17:29 +03:00
< span class = "functiontext" > CodeGen::Targets::end_constant< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "functiontext" > CodeGen::CL::name< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > ));< / span >
2019-09-22 18:43:06 +03:00
< span class = "functiontext" > CodeGen::deselect< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > saved< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > break< / span > < span class = "plain" > ;< / span >
2019-09-22 18:43:06 +03:00
< span class = "plain" > }< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > case< / span > < span class = "plain" > < / span > < span class = "identifier" > CONSTANT_DIRECT:< / span > < span class = "plain" > {< / span >
2020-01-13 13:02:57 +02:00
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > depth< / span > < span class = "plain" > = < / span > < span class = "functiontext" > CodeGen::CL::constant_depth< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / 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" > depth< / span > < span class = "plain" > > < / span > < span class = "constant" > 1< / span > < span class = "plain" > ) < / span > < span class = "identifier" > LOGIF< / span > < span class = "plain" > (< / span > < span class = "identifier" > CONSTANT_DEPTH_CALCULATION< / span > < span class = "plain" > ,< / span >
< span class = "string" > "Con %S has depth %d\n"< / span > < span class = "plain" > , < / span > < span class = "identifier" > con_name< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > depth< / span > < span class = "plain" > );< / span >
2019-09-22 18:43:06 +03:00
< span class = "reserved" > generated_segment< / span > < span class = "plain" > *< / span > < span class = "identifier" > saved< / span > < span class = "plain" > = < / span > < span class = "functiontext" > CodeGen::select< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "functiontext" > CodeGen::Targets::basic_constant_segment< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > depth< / span > < span class = "plain" > ));< / span >
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > OUT< / span > < span class = "plain" > = < / span > < span class = "functiontext" > CodeGen::current< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / 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" > ifndef_me< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "#ifndef %S;\n"< / span > < span class = "plain" > , < / span > < span class = "functiontext" > CodeGen::CL::name< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > ));< / span >
2019-06-29 15:17:29 +03:00
< span class = "functiontext" > CodeGen::Targets::begin_constant< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "functiontext" > CodeGen::CL::name< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > ), < / span > < span class = "identifier" > TRUE< / span > < span class = "plain" > );< / span >
2019-09-22 18:43:06 +03:00
< span class = "identifier" > inter_t< / span > < span class = "plain" > < / span > < span class = "identifier" > val1< / span > < span class = "plain" > = < / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > DATA_CONST_IFLD< / span > < span class = "plain" > ];< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > inter_t< / span > < span class = "plain" > < / span > < span class = "identifier" > val2< / span > < span class = "plain" > = < / span > < span class = "identifier" > P< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > DATA_CONST_IFLD< / span > < span class = "plain" > + < / span > < span class = "constant" > 1< / span > < span class = "plain" > ];< / span >
2019-06-28 20:25:50 +03:00
< span class = "functiontext" > CodeGen::CL::literal< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > con_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > Inter::Packages::scope_of< / span > < span class = "plain" > (< / span > < span class = "identifier" > P< / span > < span class = "plain" > ), < / span > < span class = "identifier" > val1< / span > < span class = "plain" > , < / span > < span class = "identifier" > val2< / span > < span class = "plain" > , < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > );< / span >
2019-06-29 15:17:29 +03:00
< span class = "functiontext" > CodeGen::Targets::end_constant< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "functiontext" > CodeGen::CL::name< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / 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" > ifndef_me< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > " #endif;\n"< / span > < span class = "plain" > );< / span >
2019-09-22 18:43:06 +03:00
< span class = "functiontext" > CodeGen::deselect< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > saved< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > break< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > default:< / span > < span class = "plain" > < / span > < span class = "identifier" > internal_error< / span > < span class = "plain" > (< / span > < span class = "string" > "ungenerated constant format"< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< span class = "plain" > }< / span >
< span class = "plain" > }< / span >
2020-01-13 13:02:57 +02:00
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "functiontext" > CodeGen::CL::constant_depth< / span > < span class = "plain" > (< / span > < span class = "identifier" > inter_symbol< / span > < span class = "plain" > *< / span > < span class = "identifier" > con< / span > < span class = "plain" > ) {< / span >
2019-09-22 18:43:06 +03:00
< span class = "identifier" > LOG_INDENT< / span > < span class = "plain" > ;< / span >
2020-01-13 13:02:57 +02:00
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > d< / span > < span class = "plain" > = < / span > < span class = "functiontext" > CodeGen::CL::constant_depth_inner< / span > < span class = "plain" > (< / span > < span class = "identifier" > con< / span > < span class = "plain" > );< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > LOGIF< / span > < span class = "plain" > (< / span > < span class = "identifier" > CONSTANT_DEPTH_CALCULATION< / span > < span class = "plain" > , < / span > < span class = "string" > "%S has depth %d\n"< / span > < span class = "plain" > , < / span > < span class = "identifier" > con< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > d< / span > < span class = "plain" > );< / span >
2019-09-22 18:43:06 +03:00
< span class = "identifier" > LOG_OUTDENT< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > d< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
2020-01-13 13:02:57 +02:00
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "functiontext" > CodeGen::CL::constant_depth_inner< / span > < span class = "plain" > (< / span > < span class = "identifier" > inter_symbol< / span > < span class = "plain" > *< / span > < span class = "identifier" > con< / 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" > con< / 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 = "constant" > 1< / span > < span class = "plain" > ;< / span >
2019-09-22 18:43:06 +03:00
< span class = "identifier" > inter_tree_node< / span > < span class = "plain" > *< / span > < span class = "identifier" > D< / span > < span class = "plain" > = < / span > < span class = "identifier" > Inter::Symbols::definition< / span > < span class = "plain" > (< / span > < span class = "identifier" > con< / 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" > D< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > ID_IFLD< / span > < span class = "plain" > ] != < / span > < span class = "identifier" > CONSTANT_IST< / span > < span class = "plain" > ) < / span > < span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "constant" > 1< / span > < span class = "plain" > ;< / span >
2019-09-22 18:43:06 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > D< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > FORMAT_CONST_IFLD< / span > < span class = "plain" > ] == < / span > < span class = "identifier" > CONSTANT_DIRECT< / span > < span class = "plain" > ) {< / span >
< span class = "identifier" > inter_t< / span > < span class = "plain" > < / span > < span class = "identifier" > val1< / span > < span class = "plain" > = < / span > < span class = "identifier" > D< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > DATA_CONST_IFLD< / span > < span class = "plain" > ];< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > inter_t< / span > < span class = "plain" > < / span > < span class = "identifier" > val2< / span > < span class = "plain" > = < / span > < span class = "identifier" > D< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > DATA_CONST_IFLD< / span > < span class = "plain" > + < / span > < span class = "constant" > 1< / span > < span class = "plain" > ];< / span >
2019-09-22 18:43:06 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > val1< / span > < span class = "plain" > == < / span > < span class = "identifier" > ALIAS_IVAL< / span > < span class = "plain" > ) {< / span >
< span class = "identifier" > inter_symbol< / span > < span class = "plain" > *< / span > < span class = "identifier" > alias< / span > < span class = "plain" > =< / span >
< span class = "identifier" > Inter::SymbolsTables::symbol_from_data_pair_and_table< / span > < span class = "plain" > (< / span >
< span class = "identifier" > val1< / span > < span class = "plain" > , < / span > < span class = "identifier" > val2< / span > < span class = "plain" > , < / span > < span class = "identifier" > Inter::Packages::scope< / span > < span class = "plain" > (< / span > < span class = "identifier" > D< / span > < span class = "plain" > -> < / span > < span class = "identifier" > package< / span > < span class = "plain" > ));< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "functiontext" > CodeGen::CL::constant_depth< / span > < span class = "plain" > (< / span > < span class = "identifier" > alias< / span > < span class = "plain" > ) + < / span > < span class = "constant" > 1< / span > < span class = "plain" > ;< / span >
2019-09-22 18:43:06 +03:00
< span class = "plain" > }< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "constant" > 1< / span > < span class = "plain" > ;< / span >
2019-09-22 18:43:06 +03:00
< span class = "plain" > }< / span >
< span class = "reserved" > if< / span > < span class = "plain" > ((< / span > < span class = "identifier" > D< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > FORMAT_CONST_IFLD< / span > < span class = "plain" > ] == < / span > < span class = "identifier" > CONSTANT_SUM_LIST< / span > < span class = "plain" > ) ||< / span >
< span class = "plain" > (< / span > < span class = "identifier" > D< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > FORMAT_CONST_IFLD< / span > < span class = "plain" > ] == < / span > < span class = "identifier" > CONSTANT_PRODUCT_LIST< / span > < span class = "plain" > ) ||< / span >
< span class = "plain" > (< / span > < span class = "identifier" > D< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > FORMAT_CONST_IFLD< / span > < span class = "plain" > ] == < / span > < span class = "identifier" > CONSTANT_DIFFERENCE_LIST< / span > < span class = "plain" > ) ||< / span >
< span class = "plain" > (< / span > < span class = "identifier" > D< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > FORMAT_CONST_IFLD< / span > < span class = "plain" > ] == < / span > < span class = "identifier" > CONSTANT_QUOTIENT_LIST< / 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" > total< / span > < span class = "plain" > = < / span > < span class = "constant" > 0< / span > < span class = "plain" > ;< / span >
2019-09-22 18:43:06 +03:00
< span class = "reserved" > for< / span > < span class = "plain" > (< / span > < span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > i< / span > < span class = "plain" > =< / span > < span class = "identifier" > DATA_CONST_IFLD< / span > < span class = "plain" > ; < / span > < span class = "identifier" > i< / span > < span class = "plain" > < < / span > < span class = "identifier" > D< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > extent< / span > < span class = "plain" > ; < / span > < span class = "identifier" > i< / span > < span class = "plain" > =< / span > < span class = "identifier" > i< / span > < span class = "plain" > +2) {< / span >
< span class = "identifier" > inter_t< / span > < span class = "plain" > < / span > < span class = "identifier" > val1< / span > < span class = "plain" > = < / span > < span class = "identifier" > D< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > i< / span > < span class = "plain" > ];< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > inter_t< / span > < span class = "plain" > < / span > < span class = "identifier" > val2< / span > < span class = "plain" > = < / span > < span class = "identifier" > D< / span > < span class = "plain" > -> < / span > < span class = "identifier" > W< / span > < span class = "plain" > .< / span > < span class = "identifier" > data< / span > < span class = "plain" > [< / span > < span class = "identifier" > i< / span > < span class = "plain" > + < / span > < span class = "constant" > 1< / span > < span class = "plain" > ];< / span >
2019-09-22 18:43:06 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > val1< / span > < span class = "plain" > == < / span > < span class = "identifier" > ALIAS_IVAL< / span > < span class = "plain" > ) {< / span >
< span class = "identifier" > inter_symbol< / span > < span class = "plain" > *< / span > < span class = "identifier" > alias< / span > < span class = "plain" > =< / span >
< span class = "identifier" > Inter::SymbolsTables::symbol_from_data_pair_and_table< / span > < span class = "plain" > (< / span >
< span class = "identifier" > val1< / span > < span class = "plain" > , < / span > < span class = "identifier" > val2< / span > < span class = "plain" > , < / span > < span class = "identifier" > Inter::Packages::scope< / span > < span class = "plain" > (< / span > < span class = "identifier" > D< / span > < span class = "plain" > -> < / span > < span class = "identifier" > package< / span > < span class = "plain" > ));< / span >
2020-01-13 13:02:57 +02:00
< span class = "identifier" > total< / span > < span class = "plain" > += < / span > < span class = "functiontext" > CodeGen::CL::constant_depth< / span > < span class = "plain" > (< / span > < span class = "identifier" > alias< / span > < span class = "plain" > );< / span >
2019-09-22 18:43:06 +03:00
< span class = "plain" > } < / span > < span class = "reserved" > else< / span > < span class = "plain" > < / span > < span class = "identifier" > total< / span > < span class = "plain" > ++;< / span >
< span class = "plain" > }< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "constant" > 1< / span > < span class = "plain" > + < / span > < span class = "identifier" > total< / span > < span class = "plain" > ;< / span >
2019-09-22 18:43:06 +03:00
< span class = "plain" > }< / span >
2020-04-07 03:06:09 +03:00
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "constant" > 1< / span > < span class = "plain" > ;< / span >
2019-09-22 18:43:06 +03:00
< span class = "plain" > }< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > typedef< / span > < span class = "plain" > < / span > < span class = "reserved" > struct< / span > < span class = "plain" > < / span > < span class = "reserved" > text_literal_holder< / 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" > definition_code< / 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" > literal_content< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > MEMORY_MANAGEMENT< / span >
< span class = "plain" > } < / span > < span class = "reserved" > text_literal_holder< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "functiontext" > CodeGen::CL::literal_text_at< / span > < span class = "plain" > (< / span > < span class = "reserved" > code_generation< / span > < span class = "plain" > *< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > S< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > text_literal_holder< / span > < span class = "plain" > *< / span > < span class = "identifier" > tlh< / span > < span class = "plain" > = < / span > < span class = "identifier" > CREATE< / span > < span class = "plain" > (< / span > < span class = "reserved" > text_literal_holder< / span > < span class = "plain" > );< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > tlh< / span > < span class = "plain" > -> < / span > < span class = "element" > definition_code< / span > < span class = "plain" > = < / span > < span class = "identifier" > Str::new< / span > < span class = "plain" > ();< / span >
< span class = "identifier" > tlh< / span > < span class = "plain" > -> < / span > < span class = "element" > literal_content< / span > < span class = "plain" > = < / span > < span class = "identifier" > S< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > tlh< / span > < span class = "plain" > -> < / span > < span class = "element" > definition_code< / span > < span class = "plain" > ;< / span >
2019-06-28 20:25:50 +03:00
< span class = "plain" > }< / span >
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "functiontext" > CodeGen::CL::compare_tlh< / span > < span class = "plain" > (< / span > < span class = "reserved" > const< / span > < span class = "plain" > < / span > < span class = "reserved" > void< / span > < span class = "plain" > *< / span > < span class = "identifier" > elem1< / span > < span class = "plain" > , < / span > < span class = "reserved" > const< / span > < span class = "plain" > < / span > < span class = "reserved" > void< / span > < span class = "plain" > *< / span > < span class = "identifier" > elem2< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > const< / span > < span class = "plain" > < / span > < span class = "reserved" > text_literal_holder< / span > < span class = "plain" > **< / span > < span class = "identifier" > e1< / span > < span class = "plain" > = (< / span > < span class = "reserved" > const< / span > < span class = "plain" > < / span > < span class = "reserved" > text_literal_holder< / span > < span class = "plain" > **) < / span > < span class = "identifier" > elem1< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > const< / span > < span class = "plain" > < / span > < span class = "reserved" > text_literal_holder< / span > < span class = "plain" > **< / span > < span class = "identifier" > e2< / span > < span class = "plain" > = (< / span > < span class = "reserved" > const< / span > < span class = "plain" > < / span > < span class = "reserved" > text_literal_holder< / span > < span class = "plain" > **) < / span > < span class = "identifier" > elem2< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > if< / span > < span class = "plain" > ((*< / span > < span class = "identifier" > e1< / span > < span class = "plain" > == < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > ) || (*< / span > < span class = "identifier" > e2< / 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" > "Disaster while sorting text literals"< / span > < span class = "plain" > );< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > s1< / span > < span class = "plain" > = (*< / span > < span class = "identifier" > e1< / span > < span class = "plain" > )-> < / span > < span class = "element" > literal_content< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > s2< / span > < span class = "plain" > = (*< / span > < span class = "identifier" > e2< / span > < span class = "plain" > )-> < / span > < span class = "element" > literal_content< / span > < span class = "plain" > ;< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > Str::cmp< / span > < span class = "plain" > (< / span > < span class = "identifier" > s1< / span > < span class = "plain" > , < / span > < span class = "identifier" > s2< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > CodeGen::CL::sort_literals< / span > < span class = "plain" > (< / span > < span class = "reserved" > code_generation< / span > < span class = "plain" > *< / span > < span class = "identifier" > gen< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > no_tlh< / span > < span class = "plain" > = < / span > < span class = "identifier" > NUMBER_CREATED< / span > < span class = "plain" > (< / span > < span class = "reserved" > text_literal_holder< / span > < span class = "plain" > );< / span >
< span class = "reserved" > text_literal_holder< / span > < span class = "plain" > **< / span > < span class = "identifier" > sorted< / span > < span class = "plain" > = (< / span > < span class = "reserved" > text_literal_holder< / span > < span class = "plain" > **)< / span >
< span class = "plain" > (< / span > < span class = "identifier" > Memory::I7_calloc< / span > < span class = "plain" > (< / span > < span class = "identifier" > no_tlh< / span > < span class = "plain" > , < / span > < span class = "reserved" > sizeof< / span > < span class = "plain" > (< / span > < span class = "reserved" > text_literal_holder< / span > < span class = "plain" > *), < / span > < span class = "constant" > CODE_GENERATION_MREASON< / 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" > i< / span > < span class = "plain" > = < / span > < span class = "constant" > 0< / span > < span class = "plain" > ;< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > text_literal_holder< / span > < span class = "plain" > *< / span > < span class = "identifier" > tlh< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > LOOP_OVER< / span > < span class = "plain" > (< / span > < span class = "identifier" > tlh< / span > < span class = "plain" > , < / span > < span class = "reserved" > text_literal_holder< / span > < span class = "plain" > ) < / span > < span class = "identifier" > sorted< / span > < span class = "plain" > [< / span > < span class = "identifier" > i< / span > < span class = "plain" > ++] = < / span > < span class = "identifier" > tlh< / span > < span class = "plain" > ;< / span >
< span class = "identifier" > qsort< / span > < span class = "plain" > (< / span > < span class = "identifier" > sorted< / span > < span class = "plain" > , (< / span > < span class = "identifier" > size_t< / span > < span class = "plain" > ) < / span > < span class = "identifier" > no_tlh< / span > < span class = "plain" > , < / span > < span class = "reserved" > sizeof< / span > < span class = "plain" > (< / span > < span class = "reserved" > text_literal_holder< / span > < span class = "plain" > *), < / span > < span class = "functiontext" > CodeGen::CL::compare_tlh< / 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" > no_tlh< / span > < span class = "plain" > ; < / span > < span class = "identifier" > i< / span > < span class = "plain" > ++) {< / span >
< span class = "reserved" > text_literal_holder< / span > < span class = "plain" > *< / span > < span class = "identifier" > tlh< / span > < span class = "plain" > = < / span > < span class = "identifier" > sorted< / span > < span class = "plain" > [< / span > < span class = "identifier" > i< / span > < span class = "plain" > ];< / span >
< span class = "reserved" > generated_segment< / span > < span class = "plain" > *< / span > < span class = "identifier" > saved< / span > < span class = "plain" > = < / span > < span class = "functiontext" > CodeGen::select< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "functiontext" > CodeGen::Targets::tl_segment< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > ));< / span >
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > TO< / span > < span class = "plain" > = < / span > < span class = "functiontext" > CodeGen::current< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > );< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > WRITE_TO< / span > < span class = "plain" > (< / span > < span class = "identifier" > TO< / span > < span class = "plain" > , < / span > < span class = "string" > "%S"< / span > < span class = "plain" > , < / span > < span class = "identifier" > tlh< / span > < span class = "plain" > -> < / span > < span class = "element" > definition_code< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< span class = "functiontext" > CodeGen::deselect< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > saved< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > CodeGen::CL::enter_box_mode< / span > < span class = "plain" > (< / span > < span class = "reserved" > void< / span > < span class = "plain" > ) {< / span >
< span class = "identifier" > box_mode< / span > < span class = "plain" > = < / span > < span class = "identifier" > TRUE< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > CodeGen::CL::exit_box_mode< / span > < span class = "plain" > (< / span > < span class = "reserved" > void< / span > < span class = "plain" > ) {< / span >
< span class = "identifier" > box_mode< / span > < span class = "plain" > = < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > CodeGen::CL::enter_print_mode< / span > < span class = "plain" > (< / span > < span class = "reserved" > void< / span > < span class = "plain" > ) {< / span >
< span class = "identifier" > printing_mode< / span > < span class = "plain" > = < / span > < span class = "identifier" > TRUE< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > CodeGen::CL::exit_print_mode< / span > < span class = "plain" > (< / span > < span class = "reserved" > void< / span > < span class = "plain" > ) {< / span >
< span class = "identifier" > printing_mode< / span > < span class = "plain" > = < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< span class = "reserved" > void< / span > < span class = "plain" > < / span > < span class = "functiontext" > CodeGen::CL::literal< / span > < span class = "plain" > (< / span > < span class = "reserved" > code_generation< / span > < span class = "plain" > *< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > inter_symbol< / span > < span class = "plain" > *< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > , < / span > < span class = "identifier" > inter_symbols_table< / span > < span class = "plain" > *< / span > < span class = "identifier" > T< / span > < span class = "plain" > , < / span > < span class = "identifier" > inter_t< / span > < span class = "plain" > < / span > < span class = "identifier" > val1< / span > < span class = "plain" > , < / span > < span class = "identifier" > inter_t< / span > < span class = "plain" > < / span > < span class = "identifier" > val2< / span > < span class = "plain" > , < / span > < span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > unsub< / span > < span class = "plain" > ) {< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > inter_tree< / span > < span class = "plain" > *< / span > < span class = "identifier" > I< / span > < span class = "plain" > = < / span > < span class = "identifier" > gen< / span > < span class = "plain" > -> < / span > < span class = "element" > from< / span > < span class = "plain" > ;< / span >
2019-06-28 20:25:50 +03:00
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > OUT< / span > < span class = "plain" > = < / span > < span class = "functiontext" > CodeGen::current< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > );< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > val1< / span > < span class = "plain" > == < / span > < span class = "identifier" > LITERAL_IVAL< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > int< / span > < span class = "plain" > < / span > < span class = "identifier" > hex< / span > < span class = "plain" > = < / span > < span class = "identifier" > FALSE< / span > < span class = "plain" > ;< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > )< / span >
2019-07-26 10:59:23 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > Inter::Annotations::find< / span > < span class = "plain" > (& (< / span > < span class = "identifier" > con_name< / span > < span class = "plain" > -> < / span > < span class = "identifier" > ann_set< / span > < span class = "plain" > ), < / span > < span class = "identifier" > HEX_IANN< / span > < span class = "plain" > )) < / span > < span class = "identifier" > hex< / span > < span class = "plain" > = < / span > < span class = "identifier" > TRUE< / span > < span class = "plain" > ;< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > hex< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "$%x"< / span > < span class = "plain" > , < / span > < span class = "identifier" > val2< / span > < span class = "plain" > );< / span >
< span class = "reserved" > else< / span > < span class = "plain" > < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "%d"< / span > < span class = "plain" > , < / span > < span class = "identifier" > val2< / 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" > Inter::Symbols::is_stored_in_data< / span > < span class = "plain" > (< / span > < span class = "identifier" > val1< / span > < span class = "plain" > , < / span > < span class = "identifier" > val2< / span > < span class = "plain" > )) {< / span >
< span class = "identifier" > inter_symbol< / span > < span class = "plain" > *< / span > < span class = "identifier" > aliased< / span > < span class = "plain" > = < / span > < span class = "identifier" > Inter::SymbolsTables::symbol_from_data_pair_and_table< / span > < span class = "plain" > (< / span > < span class = "identifier" > val1< / span > < span class = "plain" > , < / span > < span class = "identifier" > val2< / span > < span class = "plain" > , < / span > < span class = "identifier" > T< / span > < span class = "plain" > );< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > aliased< / 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" > "bad aliased symbol"< / 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" > aliased< / span > < span class = "plain" > == < / span > < span class = "identifier" > verb_directive_divider_symbol< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "\n\t*"< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< span class = "reserved" > else< / span > < span class = "plain" > < / span > < span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > aliased< / span > < span class = "plain" > == < / span > < span class = "identifier" > verb_directive_reverse_symbol< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "reverse"< / 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" > aliased< / span > < span class = "plain" > == < / span > < span class = "identifier" > verb_directive_slash_symbol< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "/"< / 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" > aliased< / span > < span class = "plain" > == < / span > < span class = "identifier" > verb_directive_result_symbol< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "-> "< / 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" > aliased< / span > < span class = "plain" > == < / span > < span class = "identifier" > verb_directive_special_symbol< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "special"< / 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" > aliased< / span > < span class = "plain" > == < / span > < span class = "identifier" > verb_directive_number_symbol< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "number"< / 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" > aliased< / span > < span class = "plain" > == < / span > < span class = "identifier" > verb_directive_noun_symbol< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "noun"< / 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" > aliased< / span > < span class = "plain" > == < / span > < span class = "identifier" > verb_directive_multi_symbol< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "multi"< / 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" > aliased< / span > < span class = "plain" > == < / span > < span class = "identifier" > verb_directive_multiinside_symbol< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "multiinside"< / 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" > aliased< / span > < span class = "plain" > == < / span > < span class = "identifier" > verb_directive_multiheld_symbol< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "multiheld"< / 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" > aliased< / span > < span class = "plain" > == < / span > < span class = "identifier" > verb_directive_held_symbol< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "held"< / 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" > aliased< / span > < span class = "plain" > == < / span > < span class = "identifier" > verb_directive_creature_symbol< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "creature"< / 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" > aliased< / span > < span class = "plain" > == < / span > < span class = "identifier" > verb_directive_topic_symbol< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "topic"< / 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" > aliased< / span > < span class = "plain" > == < / span > < span class = "identifier" > verb_directive_multiexcept_symbol< / span > < span class = "plain" > ) < / span > < span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "multiexcept"< / span > < span class = "plain" > );< / span >
< span class = "reserved" > else< / 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" > unsub< / span > < span class = "plain" > ) & & (< / span > < span class = "identifier" > Inter::Symbols::read_annotation< / span > < span class = "plain" > (< / span > < span class = "identifier" > aliased< / span > < span class = "plain" > , < / span > < span class = "identifier" > SCOPE_FILTER_IANN< / span > < span class = "plain" > ) == < / span > < span class = "constant" > 1< / span > < span class = "plain" > ))< / span >
2019-06-28 20:25:50 +03:00
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "scope="< / 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" > unsub< / span > < span class = "plain" > ) & & (< / span > < span class = "identifier" > Inter::Symbols::read_annotation< / span > < span class = "plain" > (< / span > < span class = "identifier" > aliased< / span > < span class = "plain" > , < / span > < span class = "identifier" > NOUN_FILTER_IANN< / span > < span class = "plain" > ) == < / span > < span class = "constant" > 1< / span > < span class = "plain" > ))< / span >
2019-06-28 20:25:50 +03:00
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "noun="< / span > < span class = "plain" > );< / span >
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > S< / span > < span class = "plain" > = < / span > < span class = "functiontext" > CodeGen::CL::name< / span > < span class = "plain" > (< / span > < span class = "identifier" > aliased< / span > < span class = "plain" > );< / span >
< span class = "reserved" > if< / span > < span class = "plain" > ((< / span > < span class = "identifier" > unsub< / span > < span class = "plain" > ) & & (< / span > < span class = "identifier" > Str::begins_with_wide_string< / span > < span class = "plain" > (< / span > < span class = "identifier" > S< / span > < span class = "plain" > , < / span > < span class = "identifier" > L< / span > < span class = "string" > "##"< / span > < span class = "plain" > ))) {< / span >
< span class = "identifier" > LOOP_THROUGH_TEXT< / span > < span class = "plain" > (< / span > < span class = "identifier" > pos< / span > < span class = "plain" > , < / span > < span class = "identifier" > S< / 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" > pos< / span > < span class = "plain" > .< / span > < span class = "identifier" > index< / span > < span class = "plain" > > = < / span > < span class = "constant" > 2< / span > < span class = "plain" > )< / span >
2019-06-28 20:25:50 +03:00
< span class = "identifier" > PUT< / span > < span class = "plain" > (< / span > < span class = "identifier" > Str::get< / span > < span class = "plain" > (< / span > < span class = "identifier" > pos< / span > < span class = "plain" > ));< / span >
< span class = "plain" > } < / span > < span class = "reserved" > else< / span > < span class = "plain" > {< / span >
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "%S"< / span > < span class = "plain" > , < / span > < span class = "identifier" > S< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
< span class = "plain" > }< / span >
< span class = "plain" > } < / span > < span class = "reserved" > else< / span > < span class = "plain" > < / span > < span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > val1< / span > < span class = "plain" > == < / span > < span class = "identifier" > DIVIDER_IVAL< / span > < span class = "plain" > ) {< / span >
2019-07-24 22:29:29 +03:00
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > divider_text< / span > < span class = "plain" > = < / span > < span class = "identifier" > Inter::Warehouse::get_text< / span > < span class = "plain" > (< / span > < span class = "identifier" > Inter::Tree::warehouse< / span > < span class = "plain" > (< / span > < span class = "identifier" > I< / span > < span class = "plain" > ), < / span > < span class = "identifier" > val2< / span > < span class = "plain" > );< / span >
2020-04-07 03:06:09 +03:00
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > " ! %S\n\t"< / span > < span class = "plain" > , < / span > < span class = "identifier" > divider_text< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< 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" > val1< / span > < span class = "plain" > == < / span > < span class = "identifier" > REAL_IVAL< / span > < span class = "plain" > ) {< / span >
2019-07-24 22:29:29 +03:00
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > glob_text< / span > < span class = "plain" > = < / span > < span class = "identifier" > Inter::Warehouse::get_text< / span > < span class = "plain" > (< / span > < span class = "identifier" > Inter::Tree::warehouse< / span > < span class = "plain" > (< / span > < span class = "identifier" > I< / span > < span class = "plain" > ), < / span > < span class = "identifier" > val2< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "$%S"< / span > < span class = "plain" > , < / span > < span class = "identifier" > glob_text< / 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" > val1< / span > < span class = "plain" > == < / span > < span class = "identifier" > DWORD_IVAL< / span > < span class = "plain" > ) {< / span >
2019-07-24 22:29:29 +03:00
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > glob_text< / span > < span class = "plain" > = < / span > < span class = "identifier" > Inter::Warehouse::get_text< / span > < span class = "plain" > (< / span > < span class = "identifier" > Inter::Tree::warehouse< / span > < span class = "plain" > (< / span > < span class = "identifier" > I< / span > < span class = "plain" > ), < / span > < span class = "identifier" > val2< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< span class = "functiontext" > CodeGen::Targets::compile_dictionary_word< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > glob_text< / span > < span class = "plain" > , < / span > < span class = "identifier" > FALSE< / 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" > val1< / span > < span class = "plain" > == < / span > < span class = "identifier" > PDWORD_IVAL< / span > < span class = "plain" > ) {< / span >
2019-07-24 22:29:29 +03:00
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > glob_text< / span > < span class = "plain" > = < / span > < span class = "identifier" > Inter::Warehouse::get_text< / span > < span class = "plain" > (< / span > < span class = "identifier" > Inter::Tree::warehouse< / span > < span class = "plain" > (< / span > < span class = "identifier" > I< / span > < span class = "plain" > ), < / span > < span class = "identifier" > val2< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< span class = "functiontext" > CodeGen::Targets::compile_dictionary_word< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > glob_text< / span > < span class = "plain" > , < / span > < span class = "identifier" > TRUE< / 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" > val1< / span > < span class = "plain" > == < / span > < span class = "identifier" > LITERAL_TEXT_IVAL< / span > < span class = "plain" > ) {< / span >
2019-07-24 22:29:29 +03:00
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > glob_text< / span > < span class = "plain" > = < / span > < span class = "identifier" > Inter::Warehouse::get_text< / span > < span class = "plain" > (< / span > < span class = "identifier" > Inter::Tree::warehouse< / span > < span class = "plain" > (< / span > < span class = "identifier" > I< / span > < span class = "plain" > ), < / span > < span class = "identifier" > val2< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< span class = "functiontext" > CodeGen::Targets::compile_literal_text< / span > < span class = "plain" > (< / span > < span class = "identifier" > gen< / span > < span class = "plain" > , < / span > < span class = "identifier" > glob_text< / span > < span class = "plain" > , < / span > < span class = "identifier" > printing_mode< / span > < span class = "plain" > , < / span > < span class = "identifier" > box_mode< / 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" > val1< / span > < span class = "plain" > == < / span > < span class = "identifier" > GLOB_IVAL< / span > < span class = "plain" > ) {< / span >
2019-07-24 22:29:29 +03:00
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "identifier" > glob_text< / span > < span class = "plain" > = < / span > < span class = "identifier" > Inter::Warehouse::get_text< / span > < span class = "plain" > (< / span > < span class = "identifier" > Inter::Tree::warehouse< / span > < span class = "plain" > (< / span > < span class = "identifier" > I< / span > < span class = "plain" > ), < / span > < span class = "identifier" > val2< / span > < span class = "plain" > );< / span >
2019-06-28 20:25:50 +03:00
< span class = "identifier" > WRITE< / span > < span class = "plain" > (< / span > < span class = "string" > "%S"< / span > < span class = "plain" > , < / span > < span class = "identifier" > glob_text< / span > < span class = "plain" > );< / span >
< span class = "plain" > } < / span > < span class = "reserved" > else< / span > < span class = "plain" > < / span > < span class = "identifier" > internal_error< / span > < span class = "plain" > (< / span > < span class = "string" > "unimplemented direct constant"< / span > < span class = "plain" > );< / span >
< span class = "plain" > }< / span >
< span class = "identifier" > text_stream< / span > < span class = "plain" > *< / span > < span class = "functiontext" > CodeGen::CL::name< / span > < span class = "plain" > (< / span > < span class = "identifier" > inter_symbol< / span > < span class = "plain" > *< / span > < span class = "identifier" > symb< / span > < span class = "plain" > ) {< / span >
< span class = "reserved" > if< / span > < span class = "plain" > (< / span > < span class = "identifier" > symb< / span > < span class = "plain" > == < / span > < span class = "identifier" > NULL< / span > < span class = "plain" > ) < / span > < span class = "reserved" > return< / 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" > Inter::Symbols::get_translate< / span > < span class = "plain" > (< / span > < span class = "identifier" > symb< / span > < span class = "plain" > )) < / span > < span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > Inter::Symbols::get_translate< / span > < span class = "plain" > (< / span > < span class = "identifier" > symb< / span > < span class = "plain" > );< / span >
< span class = "reserved" > return< / span > < span class = "plain" > < / span > < span class = "identifier" > symb< / span > < span class = "plain" > -> < / span > < span class = "identifier" > symbol_name< / span > < span class = "plain" > ;< / span >
< span class = "plain" > }< / span >
< / pre >
< p class = "inwebparagraph" > < / p >
2019-08-28 12:35:44 +03:00
< p class = "endnote" > The function CodeGen::CL::constant is used in 3/fc (< a href = "3-fc.html#SP1" > § 1< / a > ).< / p >
2019-06-28 20:25:50 +03:00
2019-09-22 18:43:06 +03:00
< p class = "endnote" > The function CodeGen::CL::constant_depth appears nowhere else.< / p >
< p class = "endnote" > The function CodeGen::CL::constant_depth_inner appears nowhere else.< / p >
2019-08-28 12:35:44 +03:00
< p class = "endnote" > The function CodeGen::CL::literal_text_at is used in 3/fc (< a href = "3-fc.html#SP1" > § 1< / a > ).< / p >
2019-06-28 20:25:50 +03:00
< p class = "endnote" > The function CodeGen::CL::compare_tlh appears nowhere else.< / p >
2019-08-28 12:35:44 +03:00
< p class = "endnote" > The function CodeGen::CL::sort_literals is used in 3/cg (< a href = "3-cg.html#SP8_3" > § 8.3< / a > ).< / p >
2019-06-28 20:25:50 +03:00
2019-08-28 12:35:44 +03:00
< p class = "endnote" > The function CodeGen::CL::enter_box_mode is used in 3/fc (< a href = "3-fc.html#SP3" > § 3< / a > ).< / p >
2019-06-28 20:25:50 +03:00
2019-08-28 12:35:44 +03:00
< p class = "endnote" > The function CodeGen::CL::exit_box_mode is used in 3/fc (< a href = "3-fc.html#SP3" > § 3< / a > ).< / p >
2019-06-28 20:25:50 +03:00
2019-08-28 12:35:44 +03:00
< p class = "endnote" > The function CodeGen::CL::enter_print_mode is used in 3/fc (< a href = "3-fc.html#SP3" > § 3< / a > ).< / p >
2019-06-28 20:25:50 +03:00
2019-08-28 12:35:44 +03:00
< p class = "endnote" > The function CodeGen::CL::exit_print_mode is used in 3/fc (< a href = "3-fc.html#SP3" > § 3< / a > ).< / p >
2019-06-28 20:25:50 +03:00
2019-08-28 12:35:44 +03:00
< p class = "endnote" > The function CodeGen::CL::literal is used in < a href = "#SP3" > § 3< / a > , 3/fc (< a href = "3-fc.html#SP2" > § 2< / a > ), 3/iap (< a href = "3-iap.html#SP5_8_4_1_1" > § 5.8.4.1.1< / a > , < a href = "3-iap.html#SP8" > § 8< / a > ), 4/gi6 (< a href = "4-gi6.html#SP6" > § 6< / a > ).< / p >
2019-06-28 20:25:50 +03:00
2019-08-28 12:35:44 +03:00
< p class = "endnote" > The function CodeGen::CL::name is used in < a href = "#SP3" > § 3< / a > , 3/fc (< a href = "3-fc.html#SP2" > § 2< / a > , < a href = "3-fc.html#SP3" > § 3< / a > ), 3/iap (< a href = "3-iap.html#SP4_5" > § 4.5< / a > , < a href = "3-iap.html#SP4_6" > § 4.6< / a > , < a href = "3-iap.html#SP5_5" > § 5.5< / a > , < a href = "3-iap.html#SP5_7" > § 5.7< / a > , < a href = "3-iap.html#SP5_8_4" > § 5.8.4< / a > , < a href = "3-iap.html#SP5_9" > § 5.9< / a > , < a href = "3-iap.html#SP5_11" > § 5.11< / a > , < a href = "3-iap.html#SP5_11_2" > § 5.11.2< / a > , < a href = "3-iap.html#SP5_11_2_1" > § 5.11.2.1< / a > , < a href = "3-iap.html#SP5_11_2_2" > § 5.11.2.2< / a > , < a href = "3-iap.html#SP6" > § 6< / a > , < a href = "3-iap.html#SP8" > § 8< / a > ), 4/gi6 (< a href = "4-gi6.html#SP5" > § 5< / a > , < a href = "4-gi6.html#SP6" > § 6< / a > ).< / p >
2019-06-28 20:25:50 +03:00
< p class = "endnote" > The structure text_literal_holder is private to this section.< / p >
< hr class = "tocbar" >
2019-08-28 12:35:44 +03:00
< ul class = "toc" > < li > < a href = "3-fc.html" > Back to 'Frame Control'< / a > < / li > < li > < a href = "3-iap.html" > Continue with 'Instances and Properties'< / a > < / li > < / ul > < hr class = "tocbar" >
2019-06-28 20:25:50 +03:00
<!-- End of weave -->
2020-03-19 02:11:25 +02:00
< / main >
2019-06-28 20:25:50 +03:00
< / body >
< / html >