2021-02-18 01:32:04 +02:00
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
< html >
< head >
< title > Properties< / title >
< link href = "../docs-assets/Breadcrumbs.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< meta name = "viewport" content = "width=device-width initial-scale=1" >
< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" >
< meta http-equiv = "Content-Language" content = "en-gb" >
< link href = "../docs-assets/Contents.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Progress.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Navigation.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Fonts.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Base.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< script >
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
< / script >
< link href = "../docs-assets/Popups.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< link href = "../docs-assets/Colours.css" rel = "stylesheet" rev = "stylesheet" type = "text/css" >
< / head >
< body class = "commentary-font" >
< nav role = "navigation" >
2022-04-28 19:37:28 +03:00
< h1 > < a href = "../index.html" >
2021-02-18 01:32:04 +02:00
< img src = "../docs-assets/Inform.png" height = 72" >
< / a > < / h1 >
2022-04-28 19:37:28 +03:00
< ul > < li > < a href = "../index.html" > home< / a > < / li >
2022-04-04 20:31:44 +03:00
< / ul > < h2 > Compiler< / h2 > < ul >
< li > < a href = "../structure.html" > structure< / a > < / li >
< li > < a href = "../inbuildn.html" > inbuild< / a > < / li >
< li > < a href = "../inform7n.html" > inform7< / a > < / li >
< li > < a href = "../intern.html" > inter< / a > < / li >
< li > < a href = "../services.html" > services< / a > < / li >
2022-04-18 17:46:46 +03:00
< li > < a href = "../secrets.html" > secrets< / a > < / li >
2022-04-04 20:31:44 +03:00
< / ul > < h2 > Other Tools< / h2 > < ul >
< li > < a href = "../inblorbn.html" > inblorb< / a > < / li >
< li > < a href = "../indocn.html" > indoc< / a > < / li >
< li > < a href = "../inform6.html" > inform6< / a > < / li >
< li > < a href = "../inpolicyn.html" > inpolicy< / a > < / li >
< li > < a href = "../inrtpsn.html" > inrtps< / a > < / li >
2022-04-07 00:04:57 +03:00
< / ul > < h2 > Resources< / h2 > < ul >
< li > < a href = "../extensions.html" > extensions< / a > < / li >
< li > < a href = "../kits.html" > kits< / a > < / li >
2022-04-04 20:31:44 +03:00
< / ul > < h2 > Repository< / h2 > < ul >
< li > < a href = "https://github.com/ganelson/inform" > < img src = "../docs-assets/github.png" height = 18 > github< / a > < / li >
< / ul > < h2 > Related Projects< / h2 > < ul >
2022-04-28 19:20:06 +03:00
< li > < a href = "../../../inweb/index.html" > inweb< / a > < / li >
< li > < a href = "../../../intest/index.html" > intest< / a > < / li >
2021-02-18 01:32:04 +02:00
< / ul >
< / nav >
< main role = "main" >
<!-- Weave of 'Properties' generated by Inweb -->
< div class = "breadcrumbs" >
2022-04-28 19:37:28 +03:00
< ul class = "crumbs" > < li > < a href = "../index.html" > Home< / a > < / li > < li > < a href = "../inform7n.html" > Inform7< / a > < / li > < li > < a href = "index.html" > runtime< / a > < / li > < li > < a href = "index.html#5" > Chapter 5: Provision Submodules< / a > < / li > < li > < b > Properties< / b > < / li > < / ul > < / div >
2021-05-11 01:09:06 +03:00
< p class = "purpose" > To compile the properties submodule for a compilation unit, which contains _property packages.< / p >
2021-02-18 01:32:04 +02:00
2021-10-03 01:52:18 +03:00
< ul class = "toc" > < li > < a href = "5-prp.html#SP1" > § 1. Compilation data< / a > < / li > < li > < a href = "5-prp.html#SP7" > § 7. Compilation< / a > < / li > < li > < a href = "5-prp.html#SP8" > § 8. Non-typesafe 0< / a > < / li > < li > < a href = "5-prp.html#SP9" > § 9. Schemas< / a > < / li > < / ul > < hr class = "tocbar" >
2021-02-18 01:32:04 +02:00
2021-05-11 01:09:06 +03:00
< p class = "commentary firstcommentary" > < a id = "SP1" class = "paragraph-anchor" > < / a > < b > § 1. Compilation data. < / b > Each < span class = "extract" > < span class = "extract-syntax" > property< / span > < / span > object contains this data, though in the case of a pair of
negated either-or properties, only the un-negated case has a meaningful
set of compilation data.
< / p >
2021-02-18 01:32:04 +02:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "reserved-syntax" > typedef< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > property_compilation_data< / span > < span class = "plain-syntax" > {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > package_request< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prop_package< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > where to find:< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prop_iname< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > the identifier we would like to use at run-time for this property< / span >
2021-05-11 11:19:15 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > struct< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > translation< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > for the iname< / span >
2021-05-11 01:09:06 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > do_not_compile< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > for e.g. the "specification" pseudo-property< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > translated< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > has this been given an explicit translation?< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > implemented_as_attribute< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > is this an Inter attribute at run-time?< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > store_in_negation< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > this is the dummy half of an either/or pair< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > visited_on_traverse< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > for temporary use when compiling objects< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > use_non_typesafe_0< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > as a default to mean "not set" at run-time< / span >
2021-06-22 22:37:53 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > include_in_index< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > is this property shown in the indexes?< / span >
2021-06-27 16:56:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > indexed_already< / span > < span class = "plain-syntax" > ; < / span > < span class = "comment-syntax" > and has it been, thus far in index construction?< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > property_compilation_data< / span > < span class = "plain-syntax" > ;< / span >
2021-05-11 11:19:15 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTProperties::initialise_pcd< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > package_request< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > pkg< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > translation< / span > < span class = "plain-syntax" > ) {< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > prop_package< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > pkg< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > prop_iname< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > ;< / span >
2021-05-11 11:19:15 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > translation< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Str::duplicate< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > translation< / span > < span class = "plain-syntax" > );< / span >
2021-05-11 01:09:06 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > do_not_compile< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > translated< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > store_in_negation< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > implemented_as_attribute< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > NOT_APPLICABLE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > visited_on_traverse< / span > < span class = "plain-syntax" > = -1;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > use_non_typesafe_0< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2021-06-22 22:37:53 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > include_in_index< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
2021-06-27 16:56:29 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > indexed_already< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > }< / span >
< / pre >
2021-05-24 01:12:40 +03:00
< ul class = "endnotetexts" > < li > The structure property_compilation_data is accessed in 5/act2, 6/pp, 6/pv and here.< / li > < / ul >
2021-05-11 01:09:06 +03:00
< p class = "commentary firstcommentary" > < a id = "SP2" class = "paragraph-anchor" > < / a > < b > § 2. < / b > And these are created on demand, though some properties come with a given
package already supplied:
2021-02-18 01:32:04 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2021-06-22 22:37:53 +03:00
< span class = "identifier-syntax" > package_request< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > RTProperties::package< / span > < button class = "popup" onclick = "togglePopup('usagePopup1')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup1" > Usage of < span class = "code-font" > < span class = "function-syntax" > RTProperties::package< / span > < / span > :< br / > < a href = "5-prp.html#SP7" > § 7< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ) {< / span >
2021-05-11 01:09:06 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > internal_error< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "tried to find package for null property"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > Properties::is_either_or< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > )) & & (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > store_in_negation< / span > < span class = "plain-syntax" > ))< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < a href = "5-prp.html#SP2" class = "function-link" > < span class = "function-syntax" > RTProperties::package< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > EitherOrProperties::get_negation< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ));< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > prop_package< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > )< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > prop_package< / span > < span class = "plain-syntax" > =< / span >
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP19" class = "function-link" > < span class = "function-syntax" > Hierarchy::local_package_to< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > PROPERTIES_HAP< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "element-syntax" > where_created< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "identifier-syntax" > prop_package< / span > < span class = "plain-syntax" > ;< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > }< / span >
2022-05-17 23:33:35 +03:00
< span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > RTProperties::iname< / span > < button class = "popup" onclick = "togglePopup('usagePopup2')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup2" > Usage of < span class = "code-font" > < span class = "function-syntax" > RTProperties::iname< / span > < / span > :< br / > < a href = "5-prp.html#SP5" > § 5< / a > , < a href = "5-prp.html#SP7" > § 7< / a > , < a href = "5-prp.html#SP9" > § 9< / a > , < a href = "5-prp.html#SP10" > § 10< / a > < br / > Emit - < a href = "2-emt.html#SP14" > § 14< / a > , < a href = "2-emt.html#SP15" > § 15< / a > < br / > Emit Code - < a href = "2-ec.html#SP8" > § 8< / a > < br / > Instance Counting - < a href = "2-ic.html#SP4" > § 4< / a > < br / > Showme Command - < a href = "2-sc.html#SP6_1" > § 6.1< / a > , < a href = "2-sc.html#SP6_1_1" > § 6.1.1< / a > , < a href = "2-sc.html#SP6_1_1_1" > § 6.1.1.1< / a > , < a href = "2-sc.html#SP6_2" > § 6.2< / a > < br / > Scene Instances - < a href = "5-si.html#SP6_1" > § 6.1< / a > < br / > Relations - < a href = "5-rlt.html#SP6_3_3" > § 6.3.3< / a > < br / > Command Grammar Tokens - < a href = "7-cgt.html#SP1_2_4" > § 1.2.4< / a > , < a href = "7-cgt.html#SP1_2_6" > § 1.2.6< / a > , < a href = "7-cgt.html#SP1_2_7" > § 1.2.7< / a > , < a href = "7-cgt.html#SP1_2_10_2_1" > § 1.2.10.2.1< / a > , < a href = "7-cgt.html#SP1_2_10_2_2" > § 1.2.10.2.2< / a > < br / > Parse Name Properties - < a href = "7-pnp.html#SP4_3_1" > § 4.3.1< / a > , < a href = "7-pnp.html#SP6_2" > § 6.2< / a > , < a href = "7-pnp.html#SP8" > § 8< / a > , < a href = "7-pnp.html#SP10" > § 10< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ) {< / span >
2021-05-11 01:09:06 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > internal_error< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "tried to find iname for null property"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > Properties::is_either_or< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > )) & & (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > store_in_negation< / span > < span class = "plain-syntax" > ))< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < a href = "5-prp.html#SP2" class = "function-link" > < span class = "function-syntax" > RTProperties::iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > EitherOrProperties::get_negation< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ));< / span >
2021-05-11 11:19:15 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > prop_iname< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) {< / span >
2021-06-23 02:23:35 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > wording< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > memo< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > name< / span > < span class = "plain-syntax" > ;< / span >
2021-05-11 11:19:15 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > Wordings::empty< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > memo< / span > < span class = "plain-syntax" > )) & & < / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Str::len< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > translation< / span > < span class = "plain-syntax" > ) > < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ))< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > memo< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Feeds::feed_text< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > translation< / span > < span class = "plain-syntax" > );< / span >
2021-05-11 01:09:06 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > prop_iname< / span > < span class = "plain-syntax" > =< / span >
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP13" class = "function-link" > < span class = "function-syntax" > Hierarchy::make_iname_with_memo< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > PROPERTY_HL< / span > < span class = "plain-syntax" > ,< / span >
2021-05-11 11:19:15 +03:00
< span class = "plain-syntax" > < / span > < a href = "5-prp.html#SP2" class = "function-link" > < span class = "function-syntax" > RTProperties::package< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ), < / span > < span class = "identifier-syntax" > memo< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Str::len< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > translation< / span > < span class = "plain-syntax" > ) > < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TEMPORARY_TEXT< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > T< / span > < span class = "plain-syntax" > )< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOOP_THROUGH_TEXT< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pos< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > translation< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > wchar_t< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > c< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Str::get< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pos< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > isalpha< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > c< / span > < span class = "plain-syntax" > )) || (< / span > < span class = "identifier-syntax" > Characters::isdigit< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > c< / span > < span class = "plain-syntax" > )) || (< / span > < span class = "identifier-syntax" > c< / span > < span class = "plain-syntax" > == < / span > < span class = "character-syntax" > '_'< / span > < span class = "plain-syntax" > ))< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > PUT_TO< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > T< / span > < span class = "plain-syntax" > , (< / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > c< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > PUT_TO< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > T< / span > < span class = "plain-syntax" > , < / span > < span class = "character-syntax" > '_'< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Str::truncate< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > T< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 31< / span > < span class = "plain-syntax" > );< / span >
2022-01-22 18:44:52 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > InterNames::set_translation< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > prop_iname< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > T< / span > < span class = "plain-syntax" > );< / span >
2021-05-11 11:19:15 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > translated< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > DISCARD_TEXT< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > T< / span > < span class = "plain-syntax" > )< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
2021-05-11 01:09:06 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "identifier-syntax" > prop_iname< / span > < span class = "plain-syntax" > ;< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > }< / span >
2021-05-11 01:09:06 +03:00
< / pre >
< p class = "commentary firstcommentary" > < a id = "SP3" class = "paragraph-anchor" > < / a > < b > § 3. < / b > Only a very few pseudo-properties go uncompiled: see < a href = "../knowledge-module/3-prp.html" class = "internal" > Properties (in knowledge)< / a > .
< / p >
2021-02-18 01:32:04 +02:00
2021-05-11 01:09:06 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-02-18 01:32:04 +02:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTProperties::do_not_compile< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > do_not_compile< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-05-24 01:12:40 +03:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTProperties::can_be_compiled< / span > < button class = "popup" onclick = "togglePopup('usagePopup3')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup3" > Usage of < span class = "code-font" > < span class = "function-syntax" > RTProperties::can_be_compiled< / span > < / span > :< br / > Showme Command - < a href = "2-sc.html#SP6" > § 6< / a > < br / > Property Values - < a href = "6-pv.html#SP2_2_1" > § 2.2.1< / a > , < a href = "6-pv.html#SP4" > § 4< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ) {< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) || (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > do_not_compile< / span > < span class = "plain-syntax" > )) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< / pre >
2021-05-11 01:09:06 +03:00
< p class = "commentary firstcommentary" > < a id = "SP4" class = "paragraph-anchor" > < / a > < b > § 4. < / b > When we have a pair of either-or antonyms, as in "A person can be cheery or moody",
we should store the state as either the < span class = "extract" > < span class = "extract-syntax" > cheery< / span > < / span > or the < span class = "extract" > < span class = "extract-syntax" > moody< / span > < / span > property. Clearly
either could equivalently be used: if a person is indeed in good spirits, we
could represent this either by having a < span class = "extract" > < span class = "extract-syntax" > cheery< / span > < / span > property at runtime and storing
< span class = "extract" > < span class = "extract-syntax" > true< / span > < / span > in it, or by having a < span class = "extract" > < span class = "extract-syntax" > moody< / span > < / span > one and storing < span class = "extract" > < span class = "extract-syntax" > false< / span > < / span > in that.
2021-02-18 01:32:04 +02:00
< / p >
2021-05-11 01:09:06 +03:00
< p class = "commentary" > Calling the function < a href = "5-prp.html#SP4" class = "internal" > RTProperties::store_in_negation< / a > establishes that the
given property is the one we don't use. That is, if you want to use < span class = "extract" > < span class = "extract-syntax" > cheery< / span > < / span > ,
call this function on < span class = "extract" > < span class = "extract-syntax" > moody< / span > < / span > .
< / p >
< p class = "commentary" > It may seem not to matter, but in fact we sometimes do need to have things one
particular way around in order to make Inform 7 source text play nicely with
already-compiled properties in kits. If the < span class = "extract" > < span class = "extract-syntax" > moody< / span > < / span > property is defined by a
kit, we'll have to use that one.
< / p >
2021-02-18 01:32:04 +02:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-10-05 01:35:07 +03:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTProperties::stored_in_negation< / span > < button class = "popup" onclick = "togglePopup('usagePopup4')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup4" > Usage of < span class = "code-font" > < span class = "function-syntax" > RTProperties::stored_in_negation< / span > < / span > :< br / > < a href = "5-prp.html#SP10" > § 10< / a > < br / > Emit Code - < a href = "2-ec.html#SP8" > § 8< / a > < br / > Showme Command - < a href = "2-sc.html#SP6_2" > § 6.2< / a > < br / > Property Values - < a href = "6-pv.html#SP2_2_1" > § 2.2.1< / a > < br / > Parse Name Properties - < a href = "7-pnp.html#SP7" > § 7< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ) {< / span >
2021-05-11 01:09:06 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) || (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > either_or_data< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ))< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > internal_error< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "non-EO property"< / span > < span class = "plain-syntax" > );< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "identifier-syntax" > store_in_negation< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTProperties::store_in_negation< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ) {< / span >
2021-02-18 12:26:57 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) || (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > either_or_data< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > )) < / span > < span class = "identifier-syntax" > internal_error< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "non-EO property"< / span > < span class = "plain-syntax" > );< / span >
2021-05-11 01:09:06 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > neg< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > EitherOrProperties::get_negation< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > neg< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > internal_error< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "singleton EO cannot store in negation"< / span > < span class = "plain-syntax" > );< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > store_in_negation< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
2021-05-11 01:09:06 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > neg< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > store_in_negation< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > }< / span >
< / pre >
2021-05-11 01:09:06 +03:00
< p class = "commentary firstcommentary" > < a id = "SP5" class = "paragraph-anchor" > < / a > < b > § 5. < / b > The translation of a property is stored in the translation of its iname:
2021-02-18 01:32:04 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2021-05-11 01:09:06 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTProperties::set_translation< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > T< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > = < / span > < a href = "5-prp.html#SP2" class = "function-link" > < span class = "function-syntax" > RTProperties::iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > );< / span >
2022-01-22 18:44:52 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > InterNames::set_translation< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > T< / span > < span class = "plain-syntax" > );< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > translated< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-05-11 01:09:06 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTProperties::set_translation_and_make_available< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > T< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > = < / span > < a href = "5-prp.html#SP2" class = "function-link" > < span class = "function-syntax" > RTProperties::iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > );< / span >
2022-01-22 18:44:52 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > InterNames::set_translation< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > T< / span > < span class = "plain-syntax" > );< / span >
2022-02-06 03:12:01 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_tree< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > I< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > InterPackage::tree< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > InterSymbol::package< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > InterNames::to_symbol< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > )));< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Wiring::find_socket< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > I< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > T< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) < / span > < a href = "2-hrr.html#SP17" class = "function-link" > < span class = "function-syntax" > Hierarchy::make_available< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > );< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > translated< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-10-03 01:52:18 +03:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTProperties::has_been_translated< / span > < button class = "popup" onclick = "togglePopup('usagePopup5')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup5" > Usage of < span class = "code-font" > < span class = "function-syntax" > RTProperties::has_been_translated< / span > < / span > :< br / > Property Values - < a href = "6-pv.html#SP4" > § 4< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ) {< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "identifier-syntax" > translated< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "identifier-syntax" > text_stream< / span > < span class = "plain-syntax" > *< / span > < span class = "function-syntax" > RTProperties::current_translation< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > translated< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ;< / span >
2022-01-22 18:44:52 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > InterNames::get_translation< / span > < span class = "plain-syntax" > (< / span > < a href = "5-prp.html#SP2" class = "function-link" > < span class = "function-syntax" > RTProperties::iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ));< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > }< / span >
< / pre >
2021-06-22 22:37:53 +03:00
< p class = "commentary firstcommentary" > < a id = "SP6" class = "paragraph-anchor" > < / a > < b > § 6. < / b > A property might be missed out of the Index pages for clarity's sake:
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2021-06-27 16:56:29 +03:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTProperties::is_shown_in_index< / span > < button class = "popup" onclick = "togglePopup('usagePopup6')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup6" > Usage of < span class = "code-font" > < span class = "function-syntax" > RTProperties::is_shown_in_index< / span > < / span > :< br / > Showme Command - < a href = "2-sc.html#SP6" > § 6< / a > < br / > Index Extensions - < a href = "2-ie.html#SP1_9" > § 1.9< / a > < br / > Inferences - < a href = "6-inf.html#SP2" > § 2< / a > , < a href = "6-inf.html#SP3" > § 3< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ) {< / span >
2021-06-22 22:37:53 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "identifier-syntax" > include_in_index< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTProperties::dont_show_in_index< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > include_in_index< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-06-27 16:56:29 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTProperties::set_indexed_already_flag< / span > < button class = "popup" onclick = "togglePopup('usagePopup7')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup7" > Usage of < span class = "code-font" > < span class = "function-syntax" > RTProperties::set_indexed_already_flag< / span > < / span > :< br / > Inferences - < a href = "6-inf.html#SP1" > § 1< / a > , < a href = "6-inf.html#SP2" > § 2< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > state< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > indexed_already< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > state< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTProperties::get_indexed_already_flag< / span > < button class = "popup" onclick = "togglePopup('usagePopup8')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup8" > Usage of < span class = "code-font" > < span class = "function-syntax" > RTProperties::get_indexed_already_flag< / span > < / span > :< br / > Inferences - < a href = "6-inf.html#SP2" > § 2< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "identifier-syntax" > indexed_already< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-06-22 22:37:53 +03:00
< / pre >
< p class = "commentary firstcommentary" > < a id = "SP7" class = "paragraph-anchor" > < / a > < b > § 7. Compilation. < / b > < / p >
2021-02-18 01:32:04 +02:00
< pre class = "displayed-code all-displayed-code code-font" >
2021-05-11 01:09:06 +03:00
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTProperties::compile< / span > < span class = "plain-syntax" > (< / span > < span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > LOOP_OVER< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > Properties::is_either_or< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > )) & & < / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > store_in_negation< / span > < span class = "plain-syntax" > )) < / span > < span class = "reserved-syntax" > continue< / span > < span class = "plain-syntax" > ;< / span >
2021-02-18 12:26:57 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > kind< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Properties::kind_of_contents< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > );< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > internal_error< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "kindless property"< / span > < span class = "plain-syntax" > );< / span >
2021-05-11 01:09:06 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > package_request< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > pack< / span > < span class = "plain-syntax" > = < / span > < a href = "5-prp.html#SP2" class = "function-link" > < span class = "function-syntax" > RTProperties::package< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > );< / span >
2021-05-11 11:19:15 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > = < / span > < a href = "5-prp.html#SP2" class = "function-link" > < span class = "function-syntax" > RTProperties::iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > );< / span >
2021-06-22 22:37:53 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-prp.html#SP7_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Declare the property to Inter< / span > < span class = "named-paragraph-number" > 7.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-prp.html#SP7_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile the property name metadata< / span > < span class = "named-paragraph-number" > 7.2< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-prp.html#SP7_3" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile the property ID< / span > < span class = "named-paragraph-number" > 7.3< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
< / pre >
2021-06-22 22:37:53 +03:00
< p class = "commentary firstcommentary" > < a id = "SP7_1" class = "paragraph-anchor" > < / a > < b > § 7.1. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Declare the property to Inter< / span > < span class = "named-paragraph-number" > 7.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-02-18 01:32:04 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2022-03-14 00:39:41 +02:00
< span class = "plain-syntax" > < / span > < a href = "2-emt.html#SP14" class = "function-link" > < span class = "function-syntax" > Emit::property< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > );< / span >
2021-05-11 11:19:15 +03:00
< / pre >
2021-06-22 22:37:53 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-prp.html#SP7" > § 7< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP7_2" class = "paragraph-anchor" > < / a > < b > § 7.2. < / b > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Compile the property name metadata< / span > < span class = "named-paragraph-number" > 7.2< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-05-11 11:19:15 +03:00
< / p >
2021-05-11 01:09:06 +03:00
2021-05-11 11:19:15 +03:00
< pre class = "displayed-code all-displayed-code code-font" >
2022-04-20 00:05:06 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Wordings::nonempty< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > name< / span > < span class = "plain-syntax" > )) {< / span >
2021-06-23 02:23:35 +03:00
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP23" class = "function-link" > < span class = "function-syntax" > Hierarchy::apply_metadata_from_wording< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pack< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > PROPERTY_NAME_MD_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > name< / span > < span class = "plain-syntax" > );< / span >
2022-04-20 00:05:06 +03:00
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > {< / span >
2022-01-22 18:44:52 +02:00
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP23" class = "function-link" > < span class = "function-syntax" > Hierarchy::apply_metadata< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pack< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > PROPERTY_NAME_MD_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > InterNames::get_translation< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > ));< / span >
2022-04-20 00:05:06 +03:00
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > InterSymbol::set_flag< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > InterNames::to_symbol< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > iname< / span > < span class = "plain-syntax" > ), < / span > < span class = "identifier-syntax" > PERMIT_NAME_CLASH_ISYMF< / span > < span class = "plain-syntax" > );< / span >
2022-03-20 15:41:13 +02:00
< span class = "plain-syntax" > < / span > < a href = "2-hrr.html#SP23" class = "function-link" > < span class = "function-syntax" > Hierarchy::apply_metadata_from_number< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > pack< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > PROPERTY_ORDER_MD_HL< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > inter_ti< / span > < span class = "plain-syntax" > ) < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > allocation_id< / span > < span class = "plain-syntax" > );< / span >
2021-05-11 11:19:15 +03:00
< / pre >
2021-06-22 22:37:53 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-prp.html#SP7" > § 7< / a > .< / li > < / ul >
< p class = "commentary firstcommentary" > < a id = "SP7_3" class = "paragraph-anchor" > < / a > < b > § 7.3. < / b > A unique set of values is imposed here during linking.
2021-05-11 11:19:15 +03:00
< / p >
2021-06-22 22:37:53 +03:00
< p class = "commentary" > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Compile the property ID< / span > < span class = "named-paragraph-number" > 7.3< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-05-11 11:19:15 +03:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > inter_name< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > id_iname< / span > < span class = "plain-syntax" > = < / span > < a href = "2-hrr.html#SP12" class = "function-link" > < span class = "function-syntax" > Hierarchy::make_iname_in< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "constant-syntax" > PROPERTY_ID_HL< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > pack< / span > < span class = "plain-syntax" > );< / span >
2022-03-14 00:39:41 +02:00
< span class = "plain-syntax" > < / span > < a href = "2-emt.html#SP6" class = "function-link" > < span class = "function-syntax" > Emit::numeric_constant< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > id_iname< / span > < span class = "plain-syntax" > , < / span > < span class = "constant-syntax" > 0< / span > < span class = "plain-syntax" > ); < / span > < span class = "comment-syntax" > a placeholder< / span >
2021-05-11 11:19:15 +03:00
< / pre >
2021-06-22 22:37:53 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-prp.html#SP7" > § 7< / a > .< / li > < / ul >
2021-10-03 01:52:18 +03:00
< p class = "commentary firstcommentary" > < a id = "SP8" class = "paragraph-anchor" > < / a > < b > § 8. Non-typesafe 0. < / b > When a property is used to store certain forms of relation, it then needs
2021-02-18 01:32:04 +02:00
to store either a value within one of the domains, or else a null value used
to mean "this is not set at the moment". Since that null value isn't
a member of the domain, it follows that the property is breaking type safety
when it stores it. This means we need to relax typechecking to enable this
all to work; the following keep a flag to mark that.
< / p >
2021-05-11 11:19:15 +03:00
< p class = "commentary" > None of this has any effect for either-or properties, since 0 is of course
typesafe for those.
< / p >
2021-02-18 01:32:04 +02:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTProperties::use_non_typesafe_0< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ) {< / span >
2021-02-18 12:26:57 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) || (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > either_or_data< / span > < span class = "plain-syntax" > )) < / span > < span class = "identifier-syntax" > internal_error< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "non-value property"< / span > < span class = "plain-syntax" > );< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "element-syntax" > use_non_typesafe_0< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-10-03 01:52:18 +03:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTProperties::uses_non_typesafe_0< / span > < button class = "popup" onclick = "togglePopup('usagePopup9')" > < span class = "comment-syntax" > ?< / span > < span class = "popuptext" id = "usagePopup9" > Usage of < span class = "code-font" > < span class = "function-syntax" > RTProperties::uses_non_typesafe_0< / span > < / span > :< br / > Showme Command - < a href = "2-sc.html#SP6_1" > § 6.1< / a > < / span > < / button > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ) {< / span >
2021-02-18 12:26:57 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > ((< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > == < / span > < span class = "identifier-syntax" > NULL< / span > < span class = "plain-syntax" > ) || (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > either_or_data< / span > < span class = "plain-syntax" > )) < / span > < span class = "identifier-syntax" > internal_error< / span > < span class = "plain-syntax" > (< / span > < span class = "string-syntax" > "non-value property"< / span > < span class = "plain-syntax" > );< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > compilation_data< / span > < span class = "plain-syntax" > .< / span > < span class = "identifier-syntax" > use_non_typesafe_0< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
2021-05-11 11:19:15 +03:00
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTProperties::compile_vp_default_value< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > value_holster< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ) {< / span >
2021-10-03 01:52:18 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < a href = "5-prp.html#SP8" class = "function-link" > < span class = "function-syntax" > RTProperties::uses_non_typesafe_0< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > )) {< / span >
2022-01-22 18:44:52 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Holsters::value_pair_allowed< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > ))< / span >
2022-02-25 01:53:40 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Holsters::holster_pair< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > InterValuePairs::number< / span > < span class = "plain-syntax" > (0));< / span >
2021-05-11 11:19:15 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > }< / span >
2021-02-19 02:21:55 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > kind< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > ValueProperties::kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > );< / span >
2022-05-18 02:45:14 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < a href = "2-dv.html#SP1" class = "function-link" > < span class = "function-syntax" > DefaultValues::to_holster< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > VH< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > name< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "property"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > );< / span >
2021-05-11 11:19:15 +03:00
< span class = "plain-syntax" > }< / span >
< / pre >
2021-10-03 01:52:18 +03:00
< p class = "commentary firstcommentary" > < a id = "SP9" class = "paragraph-anchor" > < / a > < b > § 9. Schemas. < / b > "Value" properties (those which are not either-or) can be tested or set with
2021-10-20 03:11:13 +03:00
these schemas:
2021-05-11 11:19:15 +03:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTProperties::test_property_value_schema< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > annotated_i6_schema< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > asch< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > kind< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Cinders::kind_of_term< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > asch< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > pt0< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Kinds::Behaviour::is_object< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > )) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2021-10-20 03:11:13 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Calculus::Schemas::modify< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > asch< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > schema< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "%k > > *1 . %n == *2"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > , < / span > < a href = "5-prp.html#SP2" class = "function-link" > < span class = "function-syntax" > RTProperties::iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ));< / span >
2021-05-11 11:19:15 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTProperties::set_property_value_schema< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > annotated_i6_schema< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > asch< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > kind< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Cinders::kind_of_term< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > asch< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > pt0< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Kinds::Behaviour::is_object< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > )) < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
2021-10-20 03:11:13 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Calculus::Schemas::modify< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > asch< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > schema< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "WriteGProperty(%k, *1, %n, *2)"< / span > < span class = "plain-syntax" > ,< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > , < / span > < a href = "5-prp.html#SP2" class = "function-link" > < span class = "function-syntax" > RTProperties::iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ));< / span >
2021-05-11 11:19:15 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
2021-02-18 01:32:04 +02:00
< span class = "plain-syntax" > }< / span >
< / pre >
2021-10-20 03:11:13 +03:00
< p class = "commentary firstcommentary" > < a id = "SP10" class = "paragraph-anchor" > < / a > < b > § 10. < / b > Either-or properties work analogously. Note that unpossessed either/or properties
can legally be "read" — the result being by definition < span class = "extract" > < span class = "extract-syntax" > false< / span > < / span > — and that the
WorldModelKit code makes use of this.
2021-02-19 02:21:55 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "reserved-syntax" > void< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTProperties::write_either_or_schemas< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > adjective_meaning< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > am< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > , < / span > < span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > T< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > kind< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > AdjectiveMeaningDomains::get_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > am< / span > < span class = "plain-syntax" > );< / span >
2021-04-11 18:42:37 +03:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < a href = "5-prp.html#SP4" class = "function-link" > < span class = "function-syntax" > RTProperties::stored_in_negation< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > )) {< / span >
2021-02-19 02:21:55 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > neg< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > EitherOrProperties::get_negation< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > i6_schema< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > sch< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > AdjectiveMeanings::make_schema< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > am< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TEST_ATOM_TASK< / span > < span class = "plain-syntax" > );< / span >
2021-10-18 16:53:36 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Calculus::Schemas::modify< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > sch< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "%k > > *1 . %n == false"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > ,< / span >
2021-05-11 01:09:06 +03:00
< span class = "plain-syntax" > < / span > < a href = "5-prp.html#SP2" class = "function-link" > < span class = "function-syntax" > RTProperties::iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > neg< / span > < span class = "plain-syntax" > ));< / span >
2021-02-19 02:21:55 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > sch< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > AdjectiveMeanings::make_schema< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > am< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > NOW_ATOM_TRUE_TASK< / span > < span class = "plain-syntax" > );< / span >
2021-10-05 01:35:07 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Calculus::Schemas::modify< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > sch< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "WriteGProperty(%k, *1, %n, 0)"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > ,< / span >
2021-05-11 01:09:06 +03:00
< span class = "plain-syntax" > < / span > < a href = "5-prp.html#SP2" class = "function-link" > < span class = "function-syntax" > RTProperties::iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > neg< / span > < span class = "plain-syntax" > ));< / span >
2021-02-19 02:21:55 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > sch< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > AdjectiveMeanings::make_schema< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > am< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > NOW_ATOM_FALSE_TASK< / span > < span class = "plain-syntax" > );< / span >
2021-10-05 01:35:07 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Calculus::Schemas::modify< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > sch< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "WriteGProperty(%k, *1, %n, 1)"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > ,< / span >
2021-05-11 01:09:06 +03:00
< span class = "plain-syntax" > < / span > < a href = "5-prp.html#SP2" class = "function-link" > < span class = "function-syntax" > RTProperties::iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > neg< / span > < span class = "plain-syntax" > ));< / span >
2021-02-19 02:21:55 +02:00
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > {< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > i6_schema< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > sch< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > AdjectiveMeanings::make_schema< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > am< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TEST_ATOM_TASK< / span > < span class = "plain-syntax" > );< / span >
2021-10-18 16:53:36 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Calculus::Schemas::modify< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > sch< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "%k > > *1 . %n"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > ,< / span >
2021-05-11 01:09:06 +03:00
< span class = "plain-syntax" > < / span > < a href = "5-prp.html#SP2" class = "function-link" > < span class = "function-syntax" > RTProperties::iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ));< / span >
2021-02-19 02:21:55 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > sch< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > AdjectiveMeanings::make_schema< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > am< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > NOW_ATOM_TRUE_TASK< / span > < span class = "plain-syntax" > );< / span >
2021-10-05 01:35:07 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Calculus::Schemas::modify< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > sch< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "WriteGProperty(%k, *1, %n, 1)"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > ,< / span >
2021-05-11 01:09:06 +03:00
< span class = "plain-syntax" > < / span > < a href = "5-prp.html#SP2" class = "function-link" > < span class = "function-syntax" > RTProperties::iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ));< / span >
2021-02-19 02:21:55 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > sch< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > AdjectiveMeanings::make_schema< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > am< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > NOW_ATOM_FALSE_TASK< / span > < span class = "plain-syntax" > );< / span >
2021-10-05 01:35:07 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Calculus::Schemas::modify< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > sch< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "WriteGProperty(%k, *1, %n, 0)"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > ,< / span >
2021-05-11 01:09:06 +03:00
< span class = "plain-syntax" > < / span > < a href = "5-prp.html#SP2" class = "function-link" > < span class = "function-syntax" > RTProperties::iname< / span > < / a > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ));< / span >
2021-02-19 02:21:55 +02:00
< span class = "plain-syntax" > }< / span >
2021-10-05 01:35:07 +03:00
< span class = "plain-syntax" > }< / span >
2021-02-19 02:21:55 +02:00
< / pre >
2021-10-03 01:52:18 +03:00
< p class = "commentary firstcommentary" > < a id = "SP11" class = "paragraph-anchor" > < / a > < b > § 11. < / b > And finally, provision of a property can be tested at runtime with the
2021-05-11 11:19:15 +03:00
following schemas:
< / p >
2021-02-19 02:21:55 +02:00
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "reserved-syntax" > int< / span > < span class = "plain-syntax" > < / span > < span class = "function-syntax" > RTProperties::test_provision_schema< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > annotated_i6_schema< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > asch< / span > < span class = "plain-syntax" > ) {< / span >
2021-04-10 02:37:43 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > kind< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Cinders::kind_of_term< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > asch< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > pt0< / span > < span class = "plain-syntax" > );< / span >
2021-02-19 02:21:55 +02:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > property< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Rvalues::to_property< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > asch< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > pt1< / span > < span class = "plain-syntax" > .< / span > < span class = "identifier-syntax" > constant< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > ) {< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Kinds::Behaviour::is_object< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > ))< / span >
2021-10-03 01:52:18 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-prp.html#SP11_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile a run-time test of property provision< / span > < span class = "named-paragraph-number" > 11.1< / span > < / a > < / span >
2021-02-19 02:21:55 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span >
2021-10-20 03:11:13 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-prp.html#SP11_2" class = "named-paragraph-link" > < span class = "named-paragraph" > Determine the result now, since we know already< / span > < span class = "named-paragraph-number" > 11.2< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2021-02-19 02:21:55 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > } < / span > < span class = "reserved-syntax" > else< / span > < span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Kinds::Behaviour::is_object< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > )) {< / span >
2021-04-10 02:37:43 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > kind< / span > < span class = "plain-syntax" > *< / span > < span class = "identifier-syntax" > PK< / span > < span class = "plain-syntax" > = < / span > < span class = "identifier-syntax" > Cinders::kind_of_term< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > asch< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > pt1< / span > < span class = "plain-syntax" > );< / span >
2021-02-19 02:21:55 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > Kinds::get_construct< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PK< / span > < span class = "plain-syntax" > ) == < / span > < span class = "identifier-syntax" > CON_property< / span > < span class = "plain-syntax" > ) {< / span >
2021-10-20 03:11:13 +03:00
< span class = "plain-syntax" > < / span > < span class = "named-paragraph-container code-font" > < a href = "5-prp.html#SP11_1" class = "named-paragraph-link" > < span class = "named-paragraph" > Compile a run-time test of property provision< / span > < span class = "named-paragraph-number" > 11.1< / span > < / a > < / span > < span class = "plain-syntax" > ;< / span >
2021-02-19 02:21:55 +02:00
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > }< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > return< / span > < span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > FALSE< / span > < span class = "plain-syntax" > ;< / span >
< span class = "plain-syntax" > }< / span >
< / pre >
2021-10-03 01:52:18 +03:00
< p class = "commentary firstcommentary" > < a id = "SP11_1" class = "paragraph-anchor" > < / a > < b > § 11.1. < / b > Since type-checking for "object" is too weak to make it certain what kind
2021-02-19 02:21:55 +02:00
of object the left operand is, we can only test property provision at run-time:
< / p >
2021-10-03 01:52:18 +03:00
< p class = "commentary" > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Compile a run-time test of property provision< / span > < span class = "named-paragraph-number" > 11.1< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-02-19 02:21:55 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
2021-10-05 01:35:07 +03:00
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Calculus::Schemas::modify< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > asch< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > schema< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "ProvidesProperty(%k, *1, *2)"< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > );< / span >
2021-02-19 02:21:55 +02:00
< / pre >
2021-10-20 03:11:13 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-prp.html#SP11" > § 11< / a > (twice).< / li > < / ul >
2021-10-03 01:52:18 +03:00
< p class = "commentary firstcommentary" > < a id = "SP11_2" class = "paragraph-anchor" > < / a > < b > § 11.2. < / b > For all other kinds, type-checking is strong enough that we can prove the
2021-02-19 02:21:55 +02:00
answer now.
< / p >
2021-10-20 03:11:13 +03:00
< p class = "commentary" > < span class = "named-paragraph-container code-font" > < span class = "named-paragraph-defn" > Determine the result now, since we know already< / span > < span class = "named-paragraph-number" > 11.2< / span > < / span > < span class = "comment-syntax" > =< / span >
2021-02-19 02:21:55 +02:00
< / p >
< pre class = "displayed-code all-displayed-code code-font" >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > if< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > PropertyPermissions::find< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > KindSubjects::from_kind< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > K< / span > < span class = "plain-syntax" > ), < / span > < span class = "identifier-syntax" > prn< / span > < span class = "plain-syntax" > , < / span > < span class = "identifier-syntax" > TRUE< / span > < span class = "plain-syntax" > ))< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Calculus::Schemas::modify< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > asch< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > schema< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "true"< / span > < span class = "plain-syntax" > );< / span >
< span class = "plain-syntax" > < / span > < span class = "reserved-syntax" > else< / span >
< span class = "plain-syntax" > < / span > < span class = "identifier-syntax" > Calculus::Schemas::modify< / span > < span class = "plain-syntax" > (< / span > < span class = "identifier-syntax" > asch< / span > < span class = "plain-syntax" > -> < / span > < span class = "identifier-syntax" > schema< / span > < span class = "plain-syntax" > , < / span > < span class = "string-syntax" > "false"< / span > < span class = "plain-syntax" > );< / span >
< / pre >
2021-10-03 01:52:18 +03:00
< ul class = "endnotetexts" > < li > This code is used in < a href = "5-prp.html#SP11" > § 11< / a > .< / li > < / ul >
2021-02-18 01:32:04 +02:00
< nav role = "progress" > < div class = "progresscontainer" >
2021-05-25 14:14:32 +03:00
< ul class = "progressbar" > < li class = "progressprev" > < a href = "5-vrb.html" > ❮ < / a > < / li > < li class = "progresschapter" > < a href = "P-wtmd.html" > P< / a > < / li > < li class = "progresschapter" > < a href = "1-rm.html" > 1< / a > < / li > < li class = "progresschapter" > < a href = "2-hrr.html" > 2< / a > < / li > < li class = "progresschapter" > < a href = "3-gm.html" > 3< / a > < / li > < li class = "progresschapter" > < a href = "4-enc.html" > 4< / a > < / li > < li class = "progresscurrentchapter" > 5< / li > < li class = "progresssection" > < a href = "5-act.html" > act< / a > < / li > < li class = "progresssection" > < a href = "5-adj.html" > adj< / a > < / li > < li class = "progresssection" > < a href = "5-chr.html" > chr< / a > < / li > < li class = "progresssection" > < a href = "5-cnj.html" > cnj< / a > < / li > < li class = "progresssection" > < a href = "5-eqt.html" > eqt< / a > < / li > < li class = "progresssection" > < a href = "5-ins.html" > ins< / a > < / li > < li class = "progresssection" > < a href = "5-bi.html" > bi< / a > < / li > < li class = "progresssection" > < a href = "5-di.html" > di< / a > < / li > < li class = "progresssection" > < a href = "5-ri.html" > ri< / a > < / li > < li class = "progresssection" > < a href = "5-si.html" > si< / a > < / li > < li class = "progresssection" > < a href = "5-mlt.html" > mlt< / a > < / li > < li class = "progresssection" > < a href = "5-tbl.html" > tbl< / a > < / li > < li class = "progresssection" > < a href = "5-tc.html" > tc< / a > < / li > < li class = "progresssection" > < a href = "5-rls.html" > rls< / a > < / li > < li class = "progresssection" > < a href = "5-rlb.html" > rlb< / a > < / li > < li class = "progresssection" > < a href = "5-vrb.html" > vrb< / a > < / li > < li class = "progresscurrent" > prp< / li > < li class = "progresssection" > < a href = "5-rlt.html" > rlt< / a > < / li > < li class = "progresssection" > < a href = "5-lp.html" > lp< / a > < / li > < li class = "progresssection" > < a href = "5-kc.html" > kc< / a > < / li > < li class = "progresssection" > < a href = "5-ki.html" > ki< / a > < / li > < li class = "progresssection" > < a href = "5-act2.html" > act2< / a > < / li > < li class = "progresssection" > < a href = "5-nap.html" > nap< / a > < / li > < li class = "progresssection" > < a href = "5-ts.html" > ts< / a > < / li > < li class = "progresschapter" > < a href = "6-bd.html" > 6< / a > < / li > < li class = "progresschapter" > < a href = "7-cg.html" > 7< / a > < / li > < li class = "progressnext" > < a href = "5-rlt.html" > ❯ < / a > < / li > < / ul > < / div >
2021-02-18 01:32:04 +02:00
< / nav > <!-- End of weave -->
< / main >
< / body >
< / html >