mirror of
https://github.com/ganelson/inform.git
synced 2024-07-02 23:14:57 +03:00
Clarified inference sorting
This commit is contained in:
parent
89f9b0e45d
commit
3adac82a69
|
@ -254,14 +254,14 @@ to behave as if \(B(y, x)\) had also been asserted whenever \(B(x, y)\) has, if
|
|||
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="6-er.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Reject non-assertable relations</span><span class="named-paragraph-number">7.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="6-er.html#SP4" class="function-link"><span class="function-syntax">Relations::Explicit::stored_dynamically</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw_relation_spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec0</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RelationInferences::draw_spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec0</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec1</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><span class="reserved-syntax">else</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">infs0</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">infs1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="named-paragraph-container code-font"><a href="6-er.html#SP7_2" class="named-paragraph-link"><span class="named-paragraph">Reject relationship with nothing</span><span class="named-paragraph-number">7.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="6-er.html#SP4" class="function-link"><span class="function-syntax">Relations::Explicit::allow_arbitrary_assertions</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw_relation</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs0</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RelationInferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs0</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="6-er.html#SP5" class="function-link"><span class="function-syntax">Relations::Explicit::get_form_of_relation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) == </span><span class="constant-syntax">Relation_Sym_VtoV</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">infs0</span><span class="plain-syntax"> != </span><span class="identifier-syntax">infs1</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw_relation</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RelationInferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs0</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>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="6-er.html#SP2" class="function-link"><span class="function-syntax">Relations::Explicit::is_explicit_with_runtime_storage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">)) {</span>
|
||||
|
|
|
@ -170,6 +170,7 @@ We begin with <a href="index.html" class="internal">core</a> itself.
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">property_permission_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">property_of_value_storage_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">property_setting_bp_data_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">relation_inference_data_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">rule_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">rulebook_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">rulebook_outcome_CLASS</span>
|
||||
|
@ -198,6 +199,7 @@ We begin with <a href="index.html" class="internal">core</a> itself.
|
|||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">property</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">property_inference_data</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">property_setting_bp_data</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">relation_inference_data</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">rule</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">rulebook</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">rulebook_outcome</span><span class="plain-syntax">)</span>
|
||||
|
|
|
@ -82,18 +82,23 @@ which use this module:
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">cached_understanding_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">command_index_entry_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">connected_submap_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">direction_inference_data_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">door_dir_notice_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">door_to_notice_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">EPS_map_level_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">found_in_inference_data_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">grammar_line_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">grammar_verb_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">loop_over_scope_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">map_data_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">named_action_pattern_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">noun_filter_token_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">parentage_here_inference_data_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">parentage_inference_data_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">parse_name_notice_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">parsing_data_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">parsing_pp_data_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">part_of_inference_data_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">regions_data_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">reserved_command_verb_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">rubric_holder_CLASS</span>
|
||||
|
@ -115,18 +120,23 @@ which use this module:
|
|||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">cached_understanding</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">command_index_entry</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">connected_submap</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">direction_inference_data</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">door_dir_notice</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">door_to_notice</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">EPS_map_level</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">found_in_inference_data</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">grammar_line</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">grammar_verb</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">loop_over_scope</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">map_data</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">named_action_pattern</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">noun_filter_token</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">parentage_here_inference_data</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">parentage_inference_data</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">parse_name_notice</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">parsing_data</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">parsing_pp_data</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">part_of_inference_data</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">regions_data</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">reserved_command_verb</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">rubric_holder</span><span class="plain-syntax">)</span>
|
||||
|
|
|
@ -73,7 +73,7 @@ function togglePopup(material_id) {
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">if</a></li><li><a href="index.html#3">Chapter 3: Space and Time</a></li><li><b>Backdrops</b></li></ul></div>
|
||||
<p class="purpose">A plugin to provide support for backdrop objects, which are present as scenery in multiple rooms at once.</p>
|
||||
|
||||
<ul class="toc"><li><a href="3-bck.html#SP3">§3. Initialisation</a></li><li><a href="3-bck.html#SP4">§4. Kinds</a></li><li><a href="3-bck.html#SP7">§7. Properties</a></li><li><a href="3-bck.html#SP10">§10. Inferences</a></li><li><a href="3-bck.html#SP14">§14. Everywhere</a></li><li><a href="3-bck.html#SP17">§17. Model completion</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="3-bck.html#SP3">§3. Initialisation</a></li><li><a href="3-bck.html#SP4">§4. Kinds</a></li><li><a href="3-bck.html#SP7">§7. Properties</a></li><li><a href="3-bck.html#SP13">§13. Everywhere</a></li><li><a href="3-bck.html#SP16">§16. Model completion</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>While we normally assume that nothing can be in more than one place at
|
||||
once, backdrops are an exception. These are intended to represent widely
|
||||
|
@ -105,22 +105,58 @@ inferences to avoid piling up bogus inconsistencies.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Backdrops::start</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">FOUND_IN_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"FOUND_IN_INF"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">FOUND_EVERYWHERE_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"FOUND_EVERYWHERE_INF"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">FOUND_IN_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"FOUND_IN_INF"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">FOUND_IN_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">LOG_DETAILS_INF_MTID</span><span class="plain-syntax">, </span><a href="3-bck.html#SP3" class="function-link"><span class="function-syntax">PL::Backdrops::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">FOUND_IN_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">COMPARE_INF_MTID</span><span class="plain-syntax">, </span><a href="3-bck.html#SP3" class="function-link"><span class="function-syntax">PL::Backdrops::cmp</span></a><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">FOUND_EVERYWHERE_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"FOUND_EVERYWHERE_INF"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_CREATE_INFERENCE_FAMILIES</span><span class="plain-syntax">, </span><a href="3-bck.html#SP3" class="function-link"><span class="function-syntax">PL::Backdrops::create_inference_families</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_NEW_BASE_KIND_NOTIFY</span><span class="plain-syntax">, </span><a href="3-bck.html#SP5" class="function-link"><span class="function-syntax">PL::Backdrops::backdrops_new_base_kind_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_NEW_PROPERTY_NOTIFY</span><span class="plain-syntax">, </span><a href="3-bck.html#SP8" class="function-link"><span class="function-syntax">PL::Backdrops::backdrops_new_property_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_COMPLETE_MODEL</span><span class="plain-syntax">, </span><a href="3-bck.html#SP17" class="function-link"><span class="function-syntax">PL::Backdrops::backdrops_complete_model</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_LOG_INFERENCE_TYPE</span><span class="plain-syntax">, </span><a href="3-bck.html#SP10" class="function-link"><span class="function-syntax">PL::Backdrops::backdrops_log_inference_type</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_COMPLETE_MODEL</span><span class="plain-syntax">, </span><a href="3-bck.html#SP16" class="function-link"><span class="function-syntax">PL::Backdrops::backdrops_complete_model</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_ESTIMATE_PROPERTY_USAGE</span><span class="plain-syntax">, </span><a href="3-bck.html#SP9" class="function-link"><span class="function-syntax">PL::Backdrops::backdrops_estimate_property_usage</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_INTERVENE_IN_ASSERTION</span><span class="plain-syntax">, </span><a href="3-bck.html#SP15" class="function-link"><span class="function-syntax">PL::Backdrops::backdrops_intervene_in_assertion</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_INTERVENE_IN_ASSERTION</span><span class="plain-syntax">, </span><a href="3-bck.html#SP14" class="function-link"><span class="function-syntax">PL::Backdrops::backdrops_intervene_in_assertion</span></a><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">PL::Backdrops::create_inference_families</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</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="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">found_in_inference_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">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">location</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">found_in_inference_data</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Backdrops::new_found_in_inference</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">PL::Backdrops::new_found_in_inference</span></span>:<br/><a href="3-bck.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">certitude</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PROTECTED_MODEL_PROCEDURE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">found_in_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">found_in_inference_data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="identifier-syntax">location</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::divert</span><span class="plain-syntax">(</span><span class="identifier-syntax">loc</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">Inferences::create_inference</span><span class="plain-syntax">(</span><span class="identifier-syntax">FOUND_IN_INF</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STORE_POINTER_found_in_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">data</span><span class="plain-syntax">), </span><span class="identifier-syntax">certitude</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">PL::Backdrops::log</span><span class="plain-syntax">(</span><span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">found_in_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_found_in_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</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">data</span><span class="plain-syntax">-></span><span class="element-syntax">location</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" in:$j"</span><span class="plain-syntax">, </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">location</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">PL::Backdrops::cmp</span><span class="plain-syntax">(</span><span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i1</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">found_in_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_found_in_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i1</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">found_in_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_found_in_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i2</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</span><span class="plain-syntax">);</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="identifier-syntax">Inferences::measure_infs</span><span class="plain-syntax">(</span><span class="identifier-syntax">data1</span><span class="plain-syntax">-></span><span class="element-syntax">location</span><span class="plain-syntax">) -</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::measure_infs</span><span class="plain-syntax">(</span><span class="identifier-syntax">data2</span><span class="plain-syntax">-></span><span class="element-syntax">location</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">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">CI_DIFFER_IN_TOPIC</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="identifier-syntax">CI_DIFFER_IN_TOPIC</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::measure_inf</span><span class="plain-syntax">(</span><span class="identifier-syntax">i1</span><span class="plain-syntax">) - </span><span class="identifier-syntax">Inferences::measure_inf</span><span class="plain-syntax">(</span><span class="identifier-syntax">i2</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">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">CI_DIFFER_IN_COPY_ONLY</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="identifier-syntax">CI_DIFFER_IN_COPY_ONLY</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">CI_IDENTICAL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Backdrops::get_inferred_location</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">PL::Backdrops::get_inferred_location</span></span>:<br/><a href="3-bck.html#SP11">§11</a>, <a href="3-bck.html#SP16_2">§16.2</a>, <a href="3-bck.html#SP16_3">§16.3</a>, <a href="3-bck.html#SP17_1">§17.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</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">i</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">i</span><span class="plain-syntax">-></span><span class="identifier-syntax">family</span><span class="plain-syntax"> != </span><span class="identifier-syntax">FOUND_IN_INF</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">"not a FOUND_IN_INF inf"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">found_in_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_found_in_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</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">InstanceSubjects::to_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">location</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure found_in_inference_data is private to this section.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Kinds. </b>This a kind name to do with backdrops which Inform provides special support
|
||||
for; it recognises the English name when defined by the Standard Rules. (So
|
||||
there is no need to translate this to other languages.)
|
||||
|
@ -134,7 +170,7 @@ there is no need to translate this to other languages.)
|
|||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b></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">PL::Backdrops::backdrops_new_base_kind_notify</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">PL::Backdrops::backdrops_new_base_kind_notify</span></span>:<br/><a href="3-bck.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_base</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Backdrops::backdrops_new_base_kind_notify</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">PL::Backdrops::backdrops_new_base_kind_notify</span></span>:<br/><a href="3-bck.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_base</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><notable-backdrops-kinds></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">K_backdrop</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_base</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>
|
||||
|
@ -144,7 +180,7 @@ there is no need to translate this to other languages.)
|
|||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b></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">PL::Backdrops::object_is_a_backdrop</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">PL::Backdrops::object_is_a_backdrop</span></span>:<br/><a href="3-bck.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Backdrops::object_is_a_backdrop</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">PL::Backdrops::object_is_a_backdrop</span></span>:<br/><a href="3-bck.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</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">Plugins::Manage::plugged_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">regions_plugin</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">K_backdrop</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_backdrop</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><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
@ -163,14 +199,14 @@ Standard Rules. (So there is no need to translate this to other languages.)
|
|||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b></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">PL::Backdrops::backdrops_new_property_notify</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">PL::Backdrops::backdrops_new_property_notify</span></span>:<br/><a href="3-bck.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>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Backdrops::backdrops_new_property_notify</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">PL::Backdrops::backdrops_new_property_notify</span></span>:<br/><a href="3-bck.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>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><notable-backdrops-properties>(prn-></span><span class="element-syntax">name</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">P_scenery</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">FALSE</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">PL::Backdrops::object_is_scenery</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">PL::Backdrops::object_is_scenery</span></span>:<br/>Spatial Model - <a href="3-sm.html#SP19">§19</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</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">Inferences::get_EO_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_scenery</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Backdrops::object_is_scenery</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">PL::Backdrops::object_is_scenery</span></span>:<br/>Spatial Model - <a href="3-sm.html#SP19">§19</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</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">PropertyInferences::either_or_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_scenery</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</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><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>
|
||||
|
@ -179,19 +215,12 @@ Standard Rules. (So there is no need to translate this to other languages.)
|
|||
</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">PL::Backdrops::backdrops_estimate_property_usage</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">PL::Backdrops::backdrops_estimate_property_usage</span></span>:<br/><a href="3-bck.html#SP3">§3</a></span></button><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="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">words_used</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Backdrops::backdrops_estimate_property_usage</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">PL::Backdrops::backdrops_estimate_property_usage</span></span>:<br/><a href="3-bck.html#SP3">§3</a></span></button><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="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">words_used</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::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_backdrop</span><span class="plain-syntax">)) *</span><span class="identifier-syntax">words_used</span><span class="plain-syntax"> += </span><span class="constant-syntax">2</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>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. Inferences. </b></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">PL::Backdrops::backdrops_log_inference_type</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">PL::Backdrops::backdrops_log_inference_type</span></span>:<br/><a href="3-bck.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">it</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>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>Here we look at "in" and "part of" relationships to see if they concern
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>Here we look at "in" and "part of" relationships to see if they concern
|
||||
backdrops; if they do, then they need to become <span class="extract"><span class="extract-syntax">FOUND_IN_INF</span></span> inferences.
|
||||
Without this intervention, they'd be subject to the usual spatial rules
|
||||
and text like
|
||||
|
@ -205,7 +234,7 @@ and text like
|
|||
</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">PL::Backdrops::assert_relations</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">PL::Backdrops::assert_relations</span></span>:<br/>Spatial Relations - <a href="3-sr.html#SP4_1">§4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">relation</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Backdrops::assert_relations</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">PL::Backdrops::assert_relations</span></span>:<br/>Spatial Relations - <a href="3-sr.html#SP4_1">§4.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">relation</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I0</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I1</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">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I1</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_backdrop</span><span class="plain-syntax">)) &&</span>
|
||||
|
@ -214,55 +243,56 @@ and text like
|
|||
<span class="plain-syntax"> (</span><span class="identifier-syntax">relation</span><span class="plain-syntax"> == </span><span class="identifier-syntax">R_regional_containment</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bd</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">PART_OF_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">bd</span><span class="plain-syntax">, </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc</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">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">bd</span><span class="plain-syntax">, </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">FOUND_IN_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">bd</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-sm.html#SP4" class="function-link"><span class="function-syntax">PL::Spatial::infer_part_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bd</span><span class="plain-syntax">, </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-sm.html#SP4" class="function-link"><span class="function-syntax">PL::Spatial::infer_is_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bd</span><span class="plain-syntax">, </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><a href="3-bck.html#SP3" class="function-link"><span class="function-syntax">PL::Backdrops::new_found_in_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::join_inference</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">bd</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>
|
||||
|
||||
<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>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b>For indexing purposes, the following loops are useful:
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>For indexing purposes, the following loops are useful:
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="identifier-syntax">LOOP_OVER_BACKDROPS_IN</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-bck.html#SP6" class="function-link"><span class="function-syntax">PL::Backdrops::object_is_a_backdrop</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">), </span><span class="identifier-syntax">FOUND_IN_INF</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">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-bck.html#SP3" class="function-link"><span class="function-syntax">PL::Backdrops::get_inferred_location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P</span><span class="plain-syntax">)</span>
|
||||
<span class="definition-keyword">define</span> <span class="identifier-syntax">LOOP_OVER_BACKDROPS_EVERYWHERE</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-bck.html#SP6" class="function-link"><span class="function-syntax">PL::Backdrops::object_is_a_backdrop</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">), </span><span class="identifier-syntax">FOUND_EVERYWHERE_INF</span><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b>Since backdrops are contained using different mechanisms, the following
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b>Since backdrops are contained using different mechanisms, the following
|
||||
(which does nothing if Backdrops isn't plugged in) adds backdrop contents to
|
||||
a room called <span class="extract"><span class="extract-syntax">loc</span></span>, or lists backdrops which are "everywhere" if <span class="extract"><span class="extract-syntax">loc</span></span>
|
||||
is <span class="extract"><span class="extract-syntax">NULL</span></span>.
|
||||
</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">PL::Backdrops::index_object_further</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">PL::Backdrops::index_object_further</span></span>:<br/>Spatial Model - <a href="3-sm.html#SP44">§44</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">depth</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Backdrops::index_object_further</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">PL::Backdrops::index_object_further</span></span>:<br/>Spatial Model - <a href="3-sm.html#SP44">§44</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">depth</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">details</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">how</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">discoveries</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">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bd</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</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">loc</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_BACKDROPS_IN</span><span class="plain-syntax">(</span><span class="identifier-syntax">bd</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="identifier-syntax">inf</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">discoveries</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP13_1" class="named-paragraph-link"><span class="named-paragraph">Insert fore-matter</span><span class="named-paragraph-number">13.1</span></a></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">discoveries</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP12_1" class="named-paragraph-link"><span class="named-paragraph">Insert fore-matter</span><span class="named-paragraph-number">12.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Data::Objects::index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">bd</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">+1, </span><span class="identifier-syntax">details</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<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">LOOP_OVER_BACKDROPS_EVERYWHERE</span><span class="plain-syntax">(</span><span class="identifier-syntax">bd</span><span class="plain-syntax">, </span><span class="identifier-syntax">inf</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">discoveries</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP13_1" class="named-paragraph-link"><span class="named-paragraph">Insert fore-matter</span><span class="named-paragraph-number">13.1</span></a></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">discoveries</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP12_1" class="named-paragraph-link"><span class="named-paragraph">Insert fore-matter</span><span class="named-paragraph-number">12.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Data::Objects::index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">bd</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">+1, </span><span class="identifier-syntax">details</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">discoveries</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP13_2" class="named-paragraph-link"><span class="named-paragraph">Insert after-matter</span><span class="named-paragraph-number">13.2</span></a></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">discoveries</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP12_2" class="named-paragraph-link"><span class="named-paragraph">Insert after-matter</span><span class="named-paragraph-number">12.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP13_1" class="paragraph-anchor"></a><b>§13.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Insert fore-matter</span><span class="named-paragraph-number">13.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP12_1" class="paragraph-anchor"></a><b>§12.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Insert fore-matter</span><span class="named-paragraph-number">12.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -271,8 +301,8 @@ is <span class="extract"><span class="extract-syntax">NULL</span></span>.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax">: </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bck.html#SP13">§13</a> (twice).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13_2" class="paragraph-anchor"></a><b>§13.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Insert after-matter</span><span class="named-paragraph-number">13.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bck.html#SP12">§12</a> (twice).</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12_2" class="paragraph-anchor"></a><b>§12.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Insert after-matter</span><span class="named-paragraph-number">12.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -281,8 +311,8 @@ is <span class="extract"><span class="extract-syntax">NULL</span></span>.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax">: </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bck.html#SP13">§13</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. Everywhere. </b>Here we defines a form of noun phrase special to Backdrops (because a backdrop
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bck.html#SP12">§12</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. Everywhere. </b>Here we defines a form of noun phrase special to Backdrops (because a backdrop
|
||||
can be said to be "everywhere", which nothing else can).
|
||||
</p>
|
||||
|
||||
|
@ -291,10 +321,10 @@ can be said to be "everywhere", which nothing else can).
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">everywhere</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b></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">PL::Backdrops::backdrops_intervene_in_assertion</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">PL::Backdrops::backdrops_intervene_in_assertion</span></span>:<br/><a href="3-bck.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">py</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Backdrops::backdrops_intervene_in_assertion</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">PL::Backdrops::backdrops_intervene_in_assertion</span></span>:<br/><a href="3-bck.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">py</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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">) == </span><span class="identifier-syntax">EVERY_NT</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="function-syntax"><notable-backdrops-noun-phrases></span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">)))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">left_subject</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">);</span>
|
||||
|
@ -317,12 +347,12 @@ can be said to be "everywhere", which nothing else can).
|
|||
<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>
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. </b>And this is where it makes the necessary inference after such a request has
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b>And this is where it makes the necessary inference after such a request has
|
||||
been asserted true:
|
||||
</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">PL::Backdrops::infer_presence_everywhere</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">PL::Backdrops::infer_presence_everywhere</span></span>:<br/>Everywhere, Nowhere and Here - <a href="3-enah.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Backdrops::infer_presence_everywhere</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">PL::Backdrops::infer_presence_everywhere</span></span>:<br/>Everywhere, Nowhere and Here - <a href="3-enah.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</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">I</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_backdrop</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">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_EverywhereNonBackdrop</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"only a backdrop can be everywhere"</span><span class="plain-syntax">,</span>
|
||||
|
@ -331,37 +361,36 @@ been asserted true:
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"is a vehicle which is everywhere.' is not."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">FOUND_EVERYWHERE_INF</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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">Inferences::join_inference</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inferences::create_inference</span><span class="plain-syntax">(</span><span class="identifier-syntax">FOUND_EVERYWHERE_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL_GENERAL_POINTER</span><span class="plain-syntax">, </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax">), </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. Model completion. </b>We intervene only at Stage II, the spatial modelling stage.
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. Model completion. </b>We intervene only at Stage II, the spatial modelling stage.
|
||||
</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">PL::Backdrops::backdrops_complete_model</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">PL::Backdrops::backdrops_complete_model</span></span>:<br/><a href="3-bck.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Backdrops::backdrops_complete_model</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">PL::Backdrops::backdrops_complete_model</span></span>:<br/><a href="3-bck.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</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">stage</span><span class="plain-syntax"> == </span><span class="identifier-syntax">WORLD_STAGE_II</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">P_absent</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::EitherOr::new_nameless</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="string-syntax">"absent"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::EitherOr::implement_as_attribute</span><span class="plain-syntax">(</span><span class="identifier-syntax">P_absent</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">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</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">FOUNDIN</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP17_1" class="named-paragraph-link"><span class="named-paragraph">If the object is found everywhere, make a found-in property accordingly</span><span class="named-paragraph-number">17.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP16_1" class="named-paragraph-link"><span class="named-paragraph">If the object is found everywhere, make a found-in property accordingly</span><span class="named-paragraph-number">16.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">room_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">region_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP17_2" class="named-paragraph-link"><span class="named-paragraph">Find how many rooms or regions the object is found inside</span><span class="named-paragraph-number">17.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP16_2" class="named-paragraph-link"><span class="named-paragraph">Find how many rooms or regions the object is found inside</span><span class="named-paragraph-number">16.2</span></a></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">FOUNDIN</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">room_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">room_count</span><span class="plain-syntax"> < </span><span class="constant-syntax">16</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">region_count</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP17_3" class="named-paragraph-link"><span class="named-paragraph">The object is found only in a few rooms, and no regions, so make it a list</span><span class="named-paragraph-number">17.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP16_3" class="named-paragraph-link"><span class="named-paragraph">The object is found only in a few rooms, and no regions, so make it a list</span><span class="named-paragraph-number">16.3</span></a></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">FOUNDIN</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">room_count</span><span class="plain-syntax"> + </span><span class="identifier-syntax">region_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP17_4" class="named-paragraph-link"><span class="named-paragraph">The object is found in many rooms or in whole regions, so make it a routine</span><span class="named-paragraph-number">17.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP16_4" class="named-paragraph-link"><span class="named-paragraph">The object is found in many rooms or in whole regions, so make it a routine</span><span class="named-paragraph-number">16.4</span></a></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">FOUNDIN</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_backdrop</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP17_5" class="named-paragraph-link"><span class="named-paragraph">The object is found nowhere, so give it a stub found-in property and mark it absent</span><span class="named-paragraph-number">17.5</span></a></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">FOUNDIN</span><span class="plain-syntax">) </span><a href="3-tm.html#SP27" class="function-link"><span class="function-syntax">PL::Map::set_found_in</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">FOUNDIN</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP16_5" class="named-paragraph-link"><span class="named-paragraph">The object is found nowhere, so give it a stub found-in property and mark it absent</span><span class="named-paragraph-number">16.5</span></a></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">FOUNDIN</span><span class="plain-syntax">) </span><a href="3-tm.html#SP26" class="function-link"><span class="function-syntax">PL::Map::set_found_in</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">FOUNDIN</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>
|
||||
<p class="commentary firstcommentary"><a id="SP17_1" class="paragraph-anchor"></a><b>§17.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">If the object is found everywhere, make a found-in property accordingly</span><span class="named-paragraph-number">17.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP16_1" class="paragraph-anchor"></a><b>§16.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">If the object is found everywhere, make a found-in property accordingly</span><span class="named-paragraph-number">16.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -371,20 +400,20 @@ been asserted true:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bck.html#SP17">§17</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP17_2" class="paragraph-anchor"></a><b>§17.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Find how many rooms or regions the object is found inside</span><span class="named-paragraph-number">17.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bck.html#SP16">§16</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP16_2" class="paragraph-anchor"></a><b>§16.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Find how many rooms or regions the object is found inside</span><span class="named-paragraph-number">16.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">FOUND_IN_INF</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc</span><span class="plain-syntax"> = </span><a href="3-bck.html#SP3" class="function-link"><span class="function-syntax">PL::Backdrops::get_inferred_location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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_region</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_region</span><span class="plain-syntax">))) </span><span class="identifier-syntax">region_count</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">room_count</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bck.html#SP17">§17</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP17_3" class="paragraph-anchor"></a><b>§17.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The object is found only in a few rooms, and no regions, so make it a list</span><span class="named-paragraph-number">17.3</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bck.html#SP16">§16</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP16_3" class="paragraph-anchor"></a><b>§16.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The object is found only in a few rooms, and no regions, so make it a list</span><span class="named-paragraph-number">16.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -393,12 +422,12 @@ been asserted true:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Emit::named_array_begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">FOUNDIN</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">FOUND_IN_INF</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::array_iname_entry</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTInstances::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::array_iname_entry</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTInstances::iname</span><span class="plain-syntax">(</span><a href="3-bck.html#SP3" class="function-link"><span class="function-syntax">PL::Backdrops::get_inferred_location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::array_end</span><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">FOUNDIN</span><span class="plain-syntax">, </span><span class="identifier-syntax">INLINE_ARRAY_IANN</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bck.html#SP17">§17</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP17_4" class="paragraph-anchor"></a><b>§17.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The object is found in many rooms or in whole regions, so make it a routine</span><span class="named-paragraph-number">17.4</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bck.html#SP16">§16</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP16_4" class="paragraph-anchor"></a><b>§16.4. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The object is found in many rooms or in whole regions, so make it a routine</span><span class="named-paragraph-number">16.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -409,14 +438,14 @@ been asserted true:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">notice</span><span class="plain-syntax">-></span><span class="element-syntax">many_places</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">FOUNDIN</span><span class="plain-syntax"> = </span><span class="identifier-syntax">notice</span><span class="plain-syntax">-></span><span class="element-syntax">found_in_routine_iname</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bck.html#SP17">§17</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP17_5" class="paragraph-anchor"></a><b>§17.5. </b><span class="extract"><span class="extract-syntax">absent</span></span> is an I6-only attribute which marks a backdrop has having been removed
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bck.html#SP16">§16</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP16_5" class="paragraph-anchor"></a><b>§16.5. </b><span class="extract"><span class="extract-syntax">absent</span></span> is an I6-only attribute which marks a backdrop has having been removed
|
||||
from the world model. It's not sufficient for an object's <span class="extract"><span class="extract-syntax">found_in</span></span> always to
|
||||
say no to the question "are you in the current location?"; the I6 template
|
||||
code, derived from the old I6 library, requires <span class="extract"><span class="extract-syntax">absent</span></span> to be set. So:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The object is found nowhere, so give it a stub found-in property and mark it absent</span><span class="named-paragraph-number">17.5</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The object is found nowhere, so give it a stub found-in property and mark it absent</span><span class="named-paragraph-number">16.5</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -429,8 +458,8 @@ code, derived from the old I6 library, requires <span class="extract"><span clas
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::EitherOr::assert</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">P_absent</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bck.html#SP17">§17</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b></p>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bck.html#SP16">§16</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b></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">PL::Backdrops::write_found_in_routines</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
|
@ -438,20 +467,20 @@ code, derived from the old I6 library, requires <span class="extract"><span clas
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">notice</span><span class="plain-syntax">, </span><span class="reserved-syntax">backdrop_found_in_notice</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">notice</span><span class="plain-syntax">-></span><span class="element-syntax">backdrop</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">notice</span><span class="plain-syntax">-></span><span class="element-syntax">many_places</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP18_1" class="named-paragraph-link"><span class="named-paragraph">The object is found in many rooms or in whole regions</span><span class="named-paragraph-number">18.1</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP17_1" class="named-paragraph-link"><span class="named-paragraph">The object is found in many rooms or in whole regions</span><span class="named-paragraph-number">17.1</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP18_2" class="named-paragraph-link"><span class="named-paragraph">The object is found nowhere</span><span class="named-paragraph-number">18.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP17_2" class="named-paragraph-link"><span class="named-paragraph">The object is found nowhere</span><span class="named-paragraph-number">17.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP18_1" class="paragraph-anchor"></a><b>§18.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The object is found in many rooms or in whole regions</span><span class="named-paragraph-number">18.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP17_1" class="paragraph-anchor"></a><b>§17.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The object is found in many rooms or in whole regions</span><span class="named-paragraph-number">17.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Routines::begin</span><span class="plain-syntax">(</span><span class="identifier-syntax">notice</span><span class="plain-syntax">-></span><span class="element-syntax">found_in_routine_iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">FOUND_IN_INF</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc</span><span class="plain-syntax"> = </span><a href="3-bck.html#SP3" class="function-link"><span class="function-syntax">PL::Backdrops::get_inferred_location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">IF_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</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_region</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_region</span><span class="plain-syntax">))) {</span>
|
||||
|
@ -477,8 +506,8 @@ code, derived from the old I6 library, requires <span class="extract"><span clas
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Routines::end</span><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bck.html#SP18">§18</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP18_2" class="paragraph-anchor"></a><b>§18.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The object is found nowhere</span><span class="named-paragraph-number">18.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bck.html#SP17">§17</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP17_2" class="paragraph-anchor"></a><b>§17.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">The object is found nowhere</span><span class="named-paragraph-number">17.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -486,7 +515,7 @@ code, derived from the old I6 library, requires <span class="extract"><span clas
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::rfalse</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Routines::end</span><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bck.html#SP18">§18</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bck.html#SP17">§17</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-dvc.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="progresscurrent">bck</li><li class="progresssection"><a href="3-rgn.html">rgn</a></li><li class="progresssection"><a href="3-tm.html">tm</a></li><li class="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-rgn.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -1400,7 +1400,7 @@ on — come from here.
|
|||
|
||||
<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">P_printed_name</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_prop_state_at</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PropertyInferences::get_prop_state_at</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_printed_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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">Rvalues::is_CONSTANT_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_text</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">V</span><span class="plain-syntax">)))) {</span>
|
||||
|
|
|
@ -227,7 +227,7 @@ we're dealing with a backdrop. So we play dumb.
|
|||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="constant-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Assert::subject_of_term</span><span class="plain-syntax">(</span><span class="identifier-syntax">prop</span><span class="plain-syntax">-></span><span class="identifier-syntax">terms</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ox</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bck.html#SP16" class="function-link"><span class="function-syntax">PL::Backdrops::infer_presence_everywhere</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ox</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bck.html#SP15" class="function-link"><span class="function-syntax">PL::Backdrops::infer_presence_everywhere</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ox</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="plain-syntax">#</span><span class="identifier-syntax">endif</span>
|
||||
|
|
|
@ -274,7 +274,7 @@ names for I6 objects have not yet been settled.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">mmp_call_counter</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::MapDirections::make_mapped_predicate</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">PL::MapDirections::make_mapped_predicate</span></span>:<br/>The Map - <a href="3-tm.html#SP20_2">§20.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ident</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::MapDirections::make_mapped_predicate</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">PL::MapDirections::make_mapped_predicate</span></span>:<br/>The Map - <a href="3-tm.html#SP19_2">§19.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ident</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::get_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Wordings::empty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) || (</span><span class="identifier-syntax">Wordings::length</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">) > </span><span class="constant-syntax">MAX_WORDS_IN_DIRECTION</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">"bad direction name"</span><span class="plain-syntax">);</span>
|
||||
|
@ -355,12 +355,10 @@ such.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_from</span><span class="plain-syntax"> = </span><span class="identifier-syntax">infs0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">infs1</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs_from</span><span class="plain-syntax">, </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-sm.html#SP4" class="function-link"><span class="function-syntax">PL::Spatial::infer_is_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_from</span><span class="plain-syntax">, </span><span class="identifier-syntax">prevailing_mood</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">prevailing_mood</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">infs_to</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">LIKELY_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">DIRECTION_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs_from</span><span class="plain-syntax">, </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">infs_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">o_dir</span><span class="plain-syntax">?(</span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">o_dir</span><span class="plain-syntax">)):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="3-sm.html#SP4" class="function-link"><span class="function-syntax">PL::Spatial::infer_is_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">LIKELY_CE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tm.html#SP5" class="function-link"><span class="function-syntax">PL::Map::infer_direction</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_from</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">o_dir</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>
|
||||
|
@ -386,7 +384,7 @@ such.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::MapDirections::get_mapping_relation</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">PL::MapDirections::get_mapping_relation</span></span>:<br/>The Map - <a href="3-tm.html#SP35">§35</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dir</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::MapDirections::get_mapping_relation</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">PL::MapDirections::get_mapping_relation</span></span>:<br/>The Map - <a href="3-tm.html#SP34">§34</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dir</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">dir</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</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>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">dir</span><span class="plain-syntax">)-></span><span class="element-syntax">direction_relation</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -371,7 +371,7 @@ to participate in nonspatial relations.)
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inner</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">outer</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">PARENTAGE_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">inner</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">outer</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-sm.html#SP4" class="function-link"><span class="function-syntax">PL::Spatial::infer_parentage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inner</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">outer</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-rgn.html#SP16">§16</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP16_3" class="paragraph-anchor"></a><b>§16.3. </b>Anything in or part of a region is necessarily a room, if it isn't known
|
||||
|
@ -427,7 +427,7 @@ region is either the next broadest region containing it, or else <span class="ex
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">)) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_region</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">where</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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_prop_state_at</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PropertyInferences::get_prop_state_at</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_map_region</span><span class="plain-syntax">, &</span><span class="identifier-syntax">where</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">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">reg</span><span class="plain-syntax"> =</span>
|
||||
|
|
|
@ -73,7 +73,7 @@ function togglePopup(material_id) {
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">if</a></li><li><a href="index.html#3">Chapter 3: Space and Time</a></li><li><b>Spatial Model</b></li></ul></div>
|
||||
<p class="purpose">A plugin which constructs the fundamental spatial model used by IF, to represent containment, support, carrying, wearing, and incorporation.</p>
|
||||
|
||||
<ul class="toc"><li><a href="3-sm.html#SP6">§6. Initialisation</a></li><li><a href="3-sm.html#SP10">§10. Special inferences</a></li><li><a href="3-sm.html#SP11">§11. Special kinds</a></li><li><a href="3-sm.html#SP17">§17. Special properties</a></li><li><a href="3-sm.html#SP19">§19. Default appearances</a></li><li><a href="3-sm.html#SP20">§20. Composite noun-quantifiers</a></li><li><a href="3-sm.html#SP22">§22. Nowhere</a></li><li><a href="3-sm.html#SP25">§25. Here</a></li><li><a href="3-sm.html#SP28">§28. Completing the model, stages I and II</a></li><li><a href="3-sm.html#SP34">§34. Completing the model, stages III and IV</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="3-sm.html#SP7">§7. Initialisation</a></li><li><a href="3-sm.html#SP11">§11. Special kinds</a></li><li><a href="3-sm.html#SP17">§17. Special properties</a></li><li><a href="3-sm.html#SP19">§19. Default appearances</a></li><li><a href="3-sm.html#SP20">§20. Composite noun-quantifiers</a></li><li><a href="3-sm.html#SP22">§22. Nowhere</a></li><li><a href="3-sm.html#SP25">§25. Here</a></li><li><a href="3-sm.html#SP28">§28. Completing the model, stages I and II</a></li><li><a href="3-sm.html#SP34">§34. Completing the model, stages III and IV</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The "spatial model" is the aspect of the IF model world which represents
|
||||
containment, support, carrying, wearing, and incorporation; say, a button
|
||||
|
@ -134,7 +134,108 @@ indications of spatial structure:
|
|||
<span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PARENTAGE_NOWHERE_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> 54 located vaguely as "nowhere"?</span>
|
||||
<span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PART_OF_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> 55 is O a part of another object?</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>The Spatial plugin also needs to know about a considerable number of special
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b></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">PL::Spatial::infer_is_room</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">PL::Spatial::infer_is_room</span></span>:<br/><a href="3-sm.html#SP13">§13</a>, <a href="3-sm.html#SP26">§26</a>, <a href="3-sm.html#SP27">§27</a><br/>Spatial Relations - <a href="3-sr.html#SP4_4">§4.4</a><br/>Backdrops - <a href="3-bck.html#SP10">§10</a><br/>The Map - <a href="3-tm.html#SP25">§25</a><br/>Map Connection Relations - <a href="3-mcr.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">certitude</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::join_inference</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inferences::create_inference</span><span class="plain-syntax">(</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL_GENERAL_POINTER</span><span class="plain-syntax">, </span><span class="identifier-syntax">certitude</span><span class="plain-syntax">), </span><span class="identifier-syntax">R</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">PL::Spatial::infer_is_nowhere</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">PL::Spatial::infer_is_nowhere</span></span>:<br/><a href="3-sm.html#SP27">§27</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">certitude</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::join_inference</span><span class="plain-syntax">(</span><span class="identifier-syntax">Inferences::create_inference</span><span class="plain-syntax">(</span><span class="identifier-syntax">PARENTAGE_NOWHERE_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL_GENERAL_POINTER</span><span class="plain-syntax">, </span><span class="identifier-syntax">certitude</span><span class="plain-syntax">), </span><span class="identifier-syntax">R</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">PL::Spatial::infer_part_of</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">PL::Spatial::infer_part_of</span></span>:<br/>Spatial Relations - <a href="3-sr.html#SP4_4">§4.4</a><br/>Backdrops - <a href="3-bck.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inner</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">certitude</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">outer</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">part_of_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">part_of_inference_data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="identifier-syntax">parent</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::divert</span><span class="plain-syntax">(</span><span class="identifier-syntax">outer</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::create_inference</span><span class="plain-syntax">(</span><span class="identifier-syntax">PART_OF_INF</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STORE_POINTER_part_of_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">data</span><span class="plain-syntax">), </span><span class="identifier-syntax">certitude</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::join_inference</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">inner</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">PL::Spatial::infer_parentage</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">PL::Spatial::infer_parentage</span></span>:<br/>Spatial Relations - <a href="3-sr.html#SP4_4">§4.4</a><br/>Regions - <a href="3-rgn.html#SP16_2">§16.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inner</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">certitude</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">outer</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">parentage_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">parentage_inference_data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="identifier-syntax">parent</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::divert</span><span class="plain-syntax">(</span><span class="identifier-syntax">outer</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::create_inference</span><span class="plain-syntax">(</span><span class="identifier-syntax">PARENTAGE_INF</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STORE_POINTER_parentage_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">data</span><span class="plain-syntax">), </span><span class="identifier-syntax">certitude</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::join_inference</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">inner</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">PL::Spatial::infer_parentage_here</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">PL::Spatial::infer_parentage_here</span></span>:<br/><a href="3-sm.html#SP26">§26</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inner</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">certitude</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">outer</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">parentage_here_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">parentage_here_inference_data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="identifier-syntax">parent</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::divert</span><span class="plain-syntax">(</span><span class="identifier-syntax">outer</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::create_inference</span><span class="plain-syntax">(</span><span class="identifier-syntax">PARENTAGE_HERE_INF</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STORE_POINTER_parentage_here_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">data</span><span class="plain-syntax">), </span><span class="identifier-syntax">certitude</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::join_inference</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">inner</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<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">part_of_inference_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">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">parent</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">part_of_inference_data</span><span class="plain-syntax">;</span>
|
||||
|
||||
<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">parentage_inference_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">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">parent</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">parentage_inference_data</span><span class="plain-syntax">;</span>
|
||||
|
||||
<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">parentage_here_inference_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">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">parent</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">parentage_here_inference_data</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::log_parentage_inf</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">PL::Spatial::log_parentage_inf</span></span>:<br/><a href="3-sm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">parentage_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_parentage_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</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">data</span><span class="plain-syntax">-></span><span class="element-syntax">parent</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" parent:$j"</span><span class="plain-syntax">, </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">parent</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">PL::Spatial::cmp_parentage_inf</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">PL::Spatial::cmp_parentage_inf</span></span>:<br/><a href="3-sm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i1</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">parentage_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_parentage_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i1</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">parentage_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_parentage_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i2</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</span><span class="plain-syntax">);</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="identifier-syntax">Inferences::measure_infs</span><span class="plain-syntax">(</span><span class="identifier-syntax">data1</span><span class="plain-syntax">-></span><span class="element-syntax">parent</span><span class="plain-syntax">) -</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::measure_infs</span><span class="plain-syntax">(</span><span class="identifier-syntax">data2</span><span class="plain-syntax">-></span><span class="element-syntax">parent</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">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">CI_DIFFER_IN_CONTENT</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="identifier-syntax">CI_DIFFER_IN_CONTENT</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::measure_inf</span><span class="plain-syntax">(</span><span class="identifier-syntax">i1</span><span class="plain-syntax">) - </span><span class="identifier-syntax">Inferences::measure_inf</span><span class="plain-syntax">(</span><span class="identifier-syntax">i2</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">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">CI_DIFFER_IN_COPY_ONLY</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="identifier-syntax">CI_DIFFER_IN_COPY_ONLY</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">CI_IDENTICAL</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">PL::Spatial::log_parentage_here_inf</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">PL::Spatial::log_parentage_here_inf</span></span>:<br/><a href="3-sm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">parentage_here_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_parentage_here_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</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">data</span><span class="plain-syntax">-></span><span class="element-syntax">parent</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" parent:$j"</span><span class="plain-syntax">, </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">parent</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">PL::Spatial::cmp_parentage_here_inf</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">PL::Spatial::cmp_parentage_here_inf</span></span>:<br/><a href="3-sm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i1</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">parentage_here_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_parentage_here_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i1</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">parentage_here_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_parentage_here_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i2</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</span><span class="plain-syntax">);</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="identifier-syntax">Inferences::measure_infs</span><span class="plain-syntax">(</span><span class="identifier-syntax">data1</span><span class="plain-syntax">-></span><span class="element-syntax">parent</span><span class="plain-syntax">) -</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::measure_infs</span><span class="plain-syntax">(</span><span class="identifier-syntax">data2</span><span class="plain-syntax">-></span><span class="element-syntax">parent</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">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">CI_DIFFER_IN_CONTENT</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="identifier-syntax">CI_DIFFER_IN_CONTENT</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::measure_inf</span><span class="plain-syntax">(</span><span class="identifier-syntax">i1</span><span class="plain-syntax">) - </span><span class="identifier-syntax">Inferences::measure_inf</span><span class="plain-syntax">(</span><span class="identifier-syntax">i2</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">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">CI_DIFFER_IN_COPY_ONLY</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="identifier-syntax">CI_DIFFER_IN_COPY_ONLY</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">CI_IDENTICAL</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">PL::Spatial::log_part_of_inference</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::log_part_of_inference</span></span>:<br/><a href="3-sm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">part_of_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_part_of_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</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">data</span><span class="plain-syntax">-></span><span class="element-syntax">parent</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">" part-of:$j"</span><span class="plain-syntax">, </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">parent</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">PL::Spatial::cmp_part_of_inference</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::cmp_part_of_inference</span></span>:<br/><a href="3-sm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i1</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">part_of_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_part_of_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i1</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">part_of_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_part_of_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i2</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</span><span class="plain-syntax">);</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="identifier-syntax">Inferences::measure_infs</span><span class="plain-syntax">(</span><span class="identifier-syntax">data1</span><span class="plain-syntax">-></span><span class="element-syntax">parent</span><span class="plain-syntax">) -</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::measure_infs</span><span class="plain-syntax">(</span><span class="identifier-syntax">data2</span><span class="plain-syntax">-></span><span class="element-syntax">parent</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">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">CI_DIFFER_IN_CONTENT</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="identifier-syntax">CI_DIFFER_IN_CONTENT</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::measure_inf</span><span class="plain-syntax">(</span><span class="identifier-syntax">i1</span><span class="plain-syntax">) - </span><span class="identifier-syntax">Inferences::measure_inf</span><span class="plain-syntax">(</span><span class="identifier-syntax">i2</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">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">CI_DIFFER_IN_COPY_ONLY</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="identifier-syntax">CI_DIFFER_IN_COPY_ONLY</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">CI_IDENTICAL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure part_of_inference_data is private to this section.</li><li>The structure parentage_inference_data is private to this section.</li><li>The structure parentage_here_inference_data is private to this section.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>The Spatial plugin also needs to know about a considerable number of special
|
||||
kinds and properties:
|
||||
</p>
|
||||
|
||||
|
@ -159,7 +260,7 @@ kinds and properties:
|
|||
<span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P_supporter</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P_matching_key</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>We will also need constants to talk about the inference subjects which
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>We will also need constants to talk about the inference subjects which
|
||||
correspond to four of the special kinds — ordinarily that would be redundant,
|
||||
since you can get the subject as a function of the kind, but there's a tricky
|
||||
timing issue to get around (see below).
|
||||
|
@ -171,29 +272,31 @@ timing issue to get around (see below).
|
|||
<span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_supporter</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_person</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. Initialisation. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Initialisation. </b></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">PL::Spatial::start</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">IS_ROOM_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"IS_ROOM_INF"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">EXPLAIN_CONTRADICTION_INF_MTID</span><span class="plain-syntax">, </span><a href="3-sm.html#SP6" class="function-link"><span class="function-syntax">PL::Spatial::is_room_explain_contradiction</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONTAINS_THINGS_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"CONTAINS_THINGS_INF"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PARENTAGE_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"PARENTAGE_INF"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">PARENTAGE_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">EXPLAIN_CONTRADICTION_INF_MTID</span><span class="plain-syntax">, </span><a href="3-sm.html#SP6" class="function-link"><span class="function-syntax">PL::Spatial::parentage_explain_contradiction</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PARENTAGE_HERE_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"PARENTAGE_HERE_INF"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PARENTAGE_NOWHERE_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"PARENTAGE_NOWHERE_INF"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PART_OF_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"PART_OF_INF"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"IS_ROOM_INF"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">EXPLAIN_CONTRADICTION_INF_MTID</span><span class="plain-syntax">, </span><a href="3-sm.html#SP7" class="function-link"><span class="function-syntax">PL::Spatial::is_room_explain_contradiction</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CONTAINS_THINGS_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"CONTAINS_THINGS_INF"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PARENTAGE_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"PARENTAGE_INF"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">PARENTAGE_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">LOG_DETAILS_INF_MTID</span><span class="plain-syntax">, </span><a href="3-sm.html#SP4" class="function-link"><span class="function-syntax">PL::Spatial::log_parentage_inf</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">PARENTAGE_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">COMPARE_INF_MTID</span><span class="plain-syntax">, </span><a href="3-sm.html#SP4" class="function-link"><span class="function-syntax">PL::Spatial::cmp_parentage_inf</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">PARENTAGE_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">EXPLAIN_CONTRADICTION_INF_MTID</span><span class="plain-syntax">, </span><a href="3-sm.html#SP7" class="function-link"><span class="function-syntax">PL::Spatial::parentage_explain_contradiction</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PARENTAGE_HERE_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"PARENTAGE_HERE_INF"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">PARENTAGE_HERE_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">LOG_DETAILS_INF_MTID</span><span class="plain-syntax">, </span><a href="3-sm.html#SP4" class="function-link"><span class="function-syntax">PL::Spatial::log_parentage_here_inf</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">PARENTAGE_HERE_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">COMPARE_INF_MTID</span><span class="plain-syntax">, </span><a href="3-sm.html#SP4" class="function-link"><span class="function-syntax">PL::Spatial::cmp_parentage_here_inf</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PARENTAGE_NOWHERE_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"PARENTAGE_NOWHERE_INF"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PART_OF_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"PART_OF_INF"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">PART_OF_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">LOG_DETAILS_INF_MTID</span><span class="plain-syntax">, </span><a href="3-sm.html#SP4" class="function-link"><span class="function-syntax">PL::Spatial::log_part_of_inference</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">PART_OF_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">COMPARE_INF_MTID</span><span class="plain-syntax">, </span><a href="3-sm.html#SP4" class="function-link"><span class="function-syntax">PL::Spatial::cmp_part_of_inference</span></a><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_CREATE_INFERENCE_FAMILIES</span><span class="plain-syntax">, </span><a href="3-sm.html#SP6" class="function-link"><span class="function-syntax">PL::Spatial::create_inference_families</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_CREATE_INFERENCES</span><span class="plain-syntax">, </span><a href="3-sm.html#SP7" class="function-link"><span class="function-syntax">PL::Spatial::create_inference_subjects</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_CREATE_INFERENCES</span><span class="plain-syntax">, </span><a href="3-sm.html#SP8" class="function-link"><span class="function-syntax">PL::Spatial::create_inference_subjects</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_NEW_BASE_KIND_NOTIFY</span><span class="plain-syntax">, </span><a href="3-sm.html#SP12" class="function-link"><span class="function-syntax">PL::Spatial::spatial_new_base_kind_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_ACT_ON_SPECIAL_NPS</span><span class="plain-syntax">, </span><a href="3-sm.html#SP23" class="function-link"><span class="function-syntax">PL::Spatial::spatial_act_on_special_NPs</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_COMPLETE_MODEL</span><span class="plain-syntax">, </span><a href="3-sm.html#SP28" class="function-link"><span class="function-syntax">PL::Spatial::IF_complete_model</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_DEFAULT_APPEARANCE</span><span class="plain-syntax">, </span><a href="3-sm.html#SP19" class="function-link"><span class="function-syntax">PL::Spatial::spatial_default_appearance</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_INFERENCES_CONTRADICT</span><span class="plain-syntax">, </span><a href="3-sm.html#SP10" class="function-link"><span class="function-syntax">PL::Spatial::spatial_inferences_contradict</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_EXPLAIN_CONTRADICTION</span><span class="plain-syntax">, </span><a href="3-sm.html#SP10" class="function-link"><span class="function-syntax">PL::Spatial::spatial_explain_contradiction</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_LOG_INFERENCE_TYPE</span><span class="plain-syntax">, </span><a href="3-sm.html#SP10" class="function-link"><span class="function-syntax">PL::Spatial::spatial_log_inference_type</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_NAME_TO_EARLY_INFS</span><span class="plain-syntax">, </span><a href="3-sm.html#SP8" class="function-link"><span class="function-syntax">PL::Spatial::spatial_name_to_early_infs</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_NAME_TO_EARLY_INFS</span><span class="plain-syntax">, </span><a href="3-sm.html#SP9" class="function-link"><span class="function-syntax">PL::Spatial::spatial_name_to_early_infs</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_NEW_SUBJECT_NOTIFY</span><span class="plain-syntax">, </span><a href="3-sm.html#SP12" class="function-link"><span class="function-syntax">PL::Spatial::spatial_new_subject_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_NEW_PROPERTY_NOTIFY</span><span class="plain-syntax">, </span><a href="3-sm.html#SP18" class="function-link"><span class="function-syntax">PL::Spatial::spatial_new_property_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_PARSE_COMPOSITE_NQS</span><span class="plain-syntax">, </span><a href="3-sm.html#SP21" class="function-link"><span class="function-syntax">PL::Spatial::spatial_parse_composite_NQs</span></a><span class="plain-syntax">);</span>
|
||||
|
@ -213,14 +316,30 @@ timing issue to get around (see below).
|
|||
<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="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Spatial::get_inferred_parent</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::get_inferred_parent</span></span>:<br/><a href="3-sm.html#SP32_3">§32.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</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">inf</span><span class="plain-syntax">-></span><span class="identifier-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">PARENTAGE_INF</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">parentage_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_parentage_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</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">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">parent</span><span class="plain-syntax">);</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">inf</span><span class="plain-syntax">-></span><span class="identifier-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">PARENTAGE_HERE_INF</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">parentage_here_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_parentage_here_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</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">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">parent</span><span class="plain-syntax">);</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">inf</span><span class="plain-syntax">-></span><span class="identifier-syntax">family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">PART_OF_INF</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">part_of_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_part_of_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</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">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">parent</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">NULL</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">PL::Spatial::parentage_explain_contradiction</span><span class="plain-syntax">(</span><span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">similarity</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</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">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">) != </span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-sm.html#SP7" class="function-link"><span class="function-syntax">PL::Spatial::get_inferred_parent</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">) != </span><a href="3-sm.html#SP7" class="function-link"><span class="function-syntax">PL::Spatial::get_inferred_parent</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_subject</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_object</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_object</span><span class="plain-syntax">(5, </span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_object</span><span class="plain-syntax">(4, </span><a href="3-sm.html#SP7" class="function-link"><span class="function-syntax">PL::Spatial::get_inferred_parent</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_object</span><span class="plain-syntax">(5, </span><a href="3-sm.html#SP7" class="function-link"><span class="function-syntax">PL::Spatial::get_inferred_parent</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_SpatialContradiction</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"You wrote %1, but also %2: that seems to be saying that the same "</span>
|
||||
|
@ -235,12 +354,8 @@ timing issue to get around (see below).
|
|||
<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>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::create_inference_families</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</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>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>In talking about some of the fundamental spatial domains we potentially have
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>In talking about some of the fundamental spatial domains we potentially have
|
||||
a vicious circle, because
|
||||
</p>
|
||||
|
||||
|
@ -262,14 +377,14 @@ after stage (d) when they exist.
|
|||
</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">PL::Spatial::create_inference_subjects</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">PL::Spatial::create_inference_subjects</span></span>:<br/><a href="3-sm.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::create_inference_subjects</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::create_inference_subjects</span></span>:<br/><a href="3-sm.html#SP7">§7</a></span></button><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">infs_room</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::new_fundamental</span><span class="plain-syntax">(</span><span class="identifier-syntax">global_constants</span><span class="plain-syntax">, </span><span class="string-syntax">"room(early)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">infs_thing</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::new_fundamental</span><span class="plain-syntax">(</span><span class="identifier-syntax">global_constants</span><span class="plain-syntax">, </span><span class="string-syntax">"thing(early)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">infs_supporter</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::new_fundamental</span><span class="plain-syntax">(</span><span class="identifier-syntax">global_constants</span><span class="plain-syntax">, </span><span class="string-syntax">"supporter(early)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">infs_person</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InferenceSubjects::new_fundamental</span><span class="plain-syntax">(</span><span class="identifier-syntax">global_constants</span><span class="plain-syntax">, </span><span class="string-syntax">"person(early)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>And this is where those IOUs are redeemed. What happens is that, ordinarily,
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>And this is where those IOUs are redeemed. What happens is that, ordinarily,
|
||||
the machinery creating objects (and kinds) will allocate a new inference
|
||||
structure for each object, but it first invites plugins to choose an existing
|
||||
one instead. (The INFS structure is rewritten, but the important thing is that
|
||||
|
@ -277,7 +392,7 @@ pointers to it remain consistent and valid.)
|
|||
</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">PL::Spatial::spatial_name_to_early_infs</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">PL::Spatial::spatial_name_to_early_infs</span></span>:<br/><a href="3-sm.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> **</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_name_to_early_infs</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_name_to_early_infs</span></span>:<br/><a href="3-sm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> **</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><notable-spatial-kinds></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="function-syntax"><<r>></span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">: </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">K_room</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) *</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">infs_room</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
@ -290,11 +405,11 @@ pointers to it remain consistent and valid.)
|
|||
<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>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>Here we initialise the data used by Spatial for each object:
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>Here we initialise the data used by Spatial for each object:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">spatial_data</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Spatial::new_data</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">PL::Spatial::new_data</span></span>:<br/><a href="3-sm.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">spatial_data</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Spatial::new_data</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::new_data</span></span>:<br/><a href="3-sm.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">spatial_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sd</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">spatial_data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sd</span><span class="plain-syntax">-></span><span class="element-syntax">progenitor</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">sd</span><span class="plain-syntax">-></span><span class="element-syntax">progenitor_set_at</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">sd</span><span class="plain-syntax">-></span><span class="element-syntax">part_flag</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">sd</span><span class="plain-syntax">-></span><span class="element-syntax">object_tree_parent</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">sd</span><span class="plain-syntax">-></span><span class="element-syntax">object_tree_child</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="identifier-syntax">sd</span><span class="plain-syntax">-></span><span class="element-syntax">object_tree_sibling</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -304,50 +419,6 @@ pointers to it remain consistent and valid.)
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">sd</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. Special inferences. </b>Four of these are quite simple inferences, but <span class="extract"><span class="extract-syntax">PARENTAGE_INF</span></span> stores the
|
||||
object to which a spatial relationship is being inferred; and this means that
|
||||
multiple <span class="extract"><span class="extract-syntax">PARENTAGE_INF</span></span>s can contradict each other.
|
||||
</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">PL::Spatial::spatial_log_inference_type</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">PL::Spatial::spatial_log_inference_type</span></span>:<br/><a href="3-sm.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">it</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>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_inferences_contradict</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">PL::Spatial::spatial_inferences_contradict</span></span>:<br/><a href="3-sm.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">similarity</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">Inferences::get_inference_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">) == </span><span class="identifier-syntax">PARENTAGE_INF</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">) !=</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</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><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">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_explain_contradiction</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">PL::Spatial::spatial_explain_contradiction</span></span>:<br/><a href="3-sm.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">similarity</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
|
||||
<span class="comment-syntax"> if ((Inferences::get_inference_type(A) == PARENTAGE_INF) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">) !=</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">Inferences::where_inferred</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_subject</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_object</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_object</span><span class="plain-syntax">(5, </span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_SpatialContradiction</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"You wrote %1, but also %2: that seems to be saying that the same "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"object (%3) must be in two different places (%4 and %5). This "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"looks like a contradiction. %P"</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"This sometimes happens as a result of a sentence like 'Every person "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"carries a bag', when Inform doesn't know 'bag' as the name of any "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"kind - so that it makes only a single thing called 'bag', and then "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"the sentence looks as if it says everyone is carrying the same bag."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</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>
|
||||
<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>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. Special kinds. </b>These are kind names to do with spatial layout which Inform provides special
|
||||
support for; it recognises the Englishs name when defined by the Standard
|
||||
Rules. (So there is no need to translate this to other languages.)
|
||||
|
@ -366,7 +437,7 @@ Rules. (So there is no need to translate this to other languages.)
|
|||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b></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">PL::Spatial::spatial_new_base_kind_notify</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">PL::Spatial::spatial_new_base_kind_notify</span></span>:<br/><a href="3-sm.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_base</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_new_base_kind_notify</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_new_base_kind_notify</span></span>:<br/><a href="3-sm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_base</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><notable-spatial-kinds></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="function-syntax"><<r>></span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">: </span><span class="identifier-syntax">K_room</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_base</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>
|
||||
|
@ -380,8 +451,8 @@ Rules. (So there is no need to translate this to other languages.)
|
|||
<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">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_new_subject_notify</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">PL::Spatial::spatial_new_subject_notify</span></span>:<br/><a href="3-sm.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ATTACH_PLUGIN_DATA_TO_SUBJECT</span><span class="plain-syntax">(</span><span class="identifier-syntax">spatial</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><a href="3-sm.html#SP9" class="function-link"><span class="function-syntax">PL::Spatial::new_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">));</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_new_subject_notify</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_new_subject_notify</span></span>:<br/><a href="3-sm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ATTACH_PLUGIN_DATA_TO_SUBJECT</span><span class="plain-syntax">(</span><span class="identifier-syntax">spatial</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><a href="3-sm.html#SP10" class="function-link"><span class="function-syntax">PL::Spatial::new_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">subj</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>
|
||||
|
@ -391,12 +462,11 @@ if it turns out to be news, we infer <span class="extract"><span class="extract-
|
|||
</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">PL::Spatial::spatial_set_kind_notify</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">PL::Spatial::spatial_set_kind_notify</span></span>:<br/><a href="3-sm.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_set_kind_notify</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_set_kind_notify</span></span>:<br/><a href="3-sm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</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="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kw</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</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_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">kw</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">))) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_object_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-sm.html#SP4" class="function-link"><span class="function-syntax">PL::Spatial::infer_is_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</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>
|
||||
|
@ -405,7 +475,7 @@ of vehicle, and so on, but this would cause mayhem in the model world. So:
|
|||
</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">PL::Spatial::spatial_set_subkind_notify</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_set_subkind_notify</span></span>:<br/><a href="3-sm.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sub</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">super</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_set_subkind_notify</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_set_subkind_notify</span></span>:<br/><a href="3-sm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sub</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">super</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">sub</span><span class="plain-syntax"> == </span><span class="identifier-syntax">K_thing</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">super</span><span class="plain-syntax"> != </span><span class="identifier-syntax">K_object</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">problem_count</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">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ThingAdrift</span><span class="plain-syntax">),</span>
|
||||
|
@ -442,7 +512,7 @@ of vehicle, and so on, but this would cause mayhem in the model world. So:
|
|||
</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">PL::Spatial::object_is_a_room</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::object_is_a_room</span></span>:<br/><a href="3-sm.html#SP32_3_2">§32.3.2</a>, <a href="3-sm.html#SP32_3_3">§32.3.3</a>, <a href="3-sm.html#SP33">§33</a>, <a href="3-sm.html#SP41">§41</a>, <a href="3-sm.html#SP44">§44</a><br/>The Naming Thicket - <a href="3-tnt.html#SP10_1">§10.1</a><br/>The Player - <a href="3-tp.html#SP11_1">§11.1</a>, <a href="3-tp.html#SP11_3">§11.3</a><br/>Regions - <a href="3-rgn.html#SP17">§17</a><br/>The Map - <a href="3-tm.html#SP22_2">§22.2</a>, <a href="3-tm.html#SP36_1">§36.1</a>, <a href="3-tm.html#SP36_2">§36.2</a>, <a href="3-tm.html#SP36_4">§36.4</a><br/>Spatial Map - <a href="3-sm2.html#SP5">§5</a>, <a href="3-sm2.html#SP7_16">§7.16</a><br/>EPS Map - <a href="3-em.html#SP10">§10</a>, <a href="3-em.html#SP22_2">§22.2</a>, <a href="3-em.html#SP22_4_1">§22.4.1</a>, <a href="3-em.html#SP25_6">§25.6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::object_is_a_room</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::object_is_a_room</span></span>:<br/><a href="3-sm.html#SP32_3_2">§32.3.2</a>, <a href="3-sm.html#SP32_3_3">§32.3.3</a>, <a href="3-sm.html#SP33">§33</a>, <a href="3-sm.html#SP41">§41</a>, <a href="3-sm.html#SP44">§44</a><br/>The Naming Thicket - <a href="3-tnt.html#SP10_1">§10.1</a><br/>The Player - <a href="3-tp.html#SP11_1">§11.1</a>, <a href="3-tp.html#SP11_3">§11.3</a><br/>Regions - <a href="3-rgn.html#SP17">§17</a><br/>The Map - <a href="3-tm.html#SP21_2">§21.2</a>, <a href="3-tm.html#SP35_1">§35.1</a>, <a href="3-tm.html#SP35_2">§35.2</a>, <a href="3-tm.html#SP35_4">§35.4</a><br/>Spatial Map - <a href="3-sm2.html#SP5">§5</a>, <a href="3-sm2.html#SP7_16">§7.16</a><br/>EPS Map - <a href="3-em.html#SP10">§10</a>, <a href="3-em.html#SP22_2">§22.2</a>, <a href="3-em.html#SP22_4_1">§22.4.1</a>, <a href="3-em.html#SP25_6">§25.6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</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">Plugins::Manage::plugged_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">spatial_plugin</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">K_room</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_room</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>
|
||||
|
@ -483,7 +553,7 @@ special with it at all.
|
|||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b></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">PL::Spatial::spatial_new_property_notify</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_new_property_notify</span></span>:<br/><a href="3-sm.html#SP6">§6</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="function-syntax">PL::Spatial::spatial_new_property_notify</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_new_property_notify</span></span>:<br/><a href="3-sm.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>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><notable-spatial-properties>(prn-></span><span class="element-syntax">name</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="function-syntax"><<r>></span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">: </span><span class="identifier-syntax">P_initial_appearance</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prn</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
@ -504,7 +574,7 @@ appearance".
|
|||
</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">PL::Spatial::spatial_default_appearance</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_default_appearance</span></span>:<br/><a href="3-sm.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">txt</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_default_appearance</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_default_appearance</span></span>:<br/><a href="3-sm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">txt</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">InferenceSubjects::is_within</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</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">set_prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">P_description</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">InferenceSubjects::is_within</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_thing</span><span class="plain-syntax">))) {</span>
|
||||
|
@ -582,7 +652,7 @@ that such a door exists — we needn't set the variable.
|
|||
</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">PL::Spatial::spatial_parse_composite_NQs</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_parse_composite_NQs</span></span>:<br/><a href="3-sm.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">DW</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_parse_composite_NQs</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_parse_composite_NQs</span></span>:<br/><a href="3-sm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">DW</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">quantifier</span><span class="plain-syntax"> **</span><span class="identifier-syntax">quant</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> **</span><span class="identifier-syntax">some_kind</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_thing</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="function-syntax"><<quantifier:q>></span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -607,7 +677,7 @@ node using this wording in order to produce better problem messages if need be.
|
|||
<p class="commentary firstcommentary"><a id="SP23" class="paragraph-anchor"></a><b>§23. </b></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">PL::Spatial::spatial_act_on_special_NPs</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_act_on_special_NPs</span></span>:<br/><a href="3-sm.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_act_on_special_NPs</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_act_on_special_NPs</span></span>:<br/><a href="3-sm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="function-syntax"><notable-spatial-noun-phrases></span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">))) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Word::unexpectedly_upper_case</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</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">K_room</span><span class="plain-syntax">)) {</span>
|
||||
|
@ -622,7 +692,7 @@ node using this wording in order to produce better problem messages if need be.
|
|||
</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">PL::Spatial::spatial_intervene_in_assertion</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_intervene_in_assertion</span></span>:<br/><a href="3-sm.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">py</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_intervene_in_assertion</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_intervene_in_assertion</span></span>:<br/><a href="3-sm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">py</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">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">, </span><span class="identifier-syntax">nowhere_ANNOT</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">left_subject</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</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">left_subject</span><span class="plain-syntax">) {</span>
|
||||
|
@ -663,7 +733,7 @@ with certainty read
|
|||
<p class="commentary firstcommentary"><a id="SP26" class="paragraph-anchor"></a><b>§26. </b></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">PL::Spatial::infer_presence_here</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::infer_presence_here</span></span>:<br/>Everywhere, Nowhere and Here - <a href="3-enah.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::infer_presence_here</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::infer_presence_here</span></span>:<br/>Everywhere, Nowhere and Here - <a href="3-enah.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">PARENTAGE_HERE_INF</span><span class="plain-syntax">) {</span>
|
||||
|
@ -675,21 +745,17 @@ with certainty read
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"in a single assertion sentence. This avoids potential confusion, "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"since 'here' can mean different things in different sentences."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">PARENTAGE_HERE_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Anaphora::get_current_subject</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">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-sm.html#SP4" class="function-link"><span class="function-syntax">PL::Spatial::infer_parentage_here</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">Anaphora::get_current_subject</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><a href="3-sm.html#SP4" class="function-link"><span class="function-syntax">PL::Spatial::infer_is_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP27" class="paragraph-anchor"></a><b>§27. </b>Similarly:
|
||||
</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">PL::Spatial::infer_presence_nowhere</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::infer_presence_nowhere</span></span>:<br/>Everywhere, Nowhere and Here - <a href="3-enah.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">PARENTAGE_NOWHERE_INF</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::infer_presence_nowhere</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::infer_presence_nowhere</span></span>:<br/>Everywhere, Nowhere and Here - <a href="3-enah.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="3-sm.html#SP4" class="function-link"><span class="function-syntax">PL::Spatial::infer_is_nowhere</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-sm.html#SP4" class="function-link"><span class="function-syntax">PL::Spatial::infer_is_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP28" class="paragraph-anchor"></a><b>§28. Completing the model, stages I and II. </b>That's enough preliminaries; time to get on with adding a sense of space
|
||||
|
@ -697,7 +763,7 @@ to the model world.
|
|||
</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">PL::Spatial::IF_complete_model</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::IF_complete_model</span></span>:<br/><a href="3-sm.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::IF_complete_model</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::IF_complete_model</span></span>:<br/><a href="3-sm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">stage</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span><span class="plain-syntax">: </span><a href="3-sm.html#SP29" class="function-link"><span class="function-syntax">PL::Spatial::spatial_stage_I</span></a><span class="plain-syntax">(); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax">: </span><a href="3-sm.html#SP32" class="function-link"><span class="function-syntax">PL::Spatial::spatial_stage_II</span></a><span class="plain-syntax">(); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
@ -717,7 +783,7 @@ that Y is the destination of a map connection — to see which.
|
|||
</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">PL::Spatial::spatial_stage_I</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_stage_I</span></span>:<br/><a href="3-sm.html#SP28">§28</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_stage_I</span><button class="popup" onclick="togglePopup('usagePopup29')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup29">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_stage_I</span></span>:<br/><a href="3-sm.html#SP28">§28</a></span></button><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">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-sm.html#SP29_1" class="named-paragraph-link"><span class="named-paragraph">Perform kind determination for this object</span><span class="named-paragraph-number">29.1</span></a></span><span class="plain-syntax">;</span>
|
||||
|
@ -936,13 +1002,13 @@ provide access routines to read and write:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Spatial::progenitor</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::progenitor</span></span>:<br/><a href="3-sm.html#SP32_2">§32.2</a>, <a href="3-sm.html#SP37">§37</a>, <a href="3-sm.html#SP38_2">§38.2</a>, <a href="3-sm.html#SP38_2_1">§38.2.1</a>, <a href="3-sm.html#SP38_3">§38.3</a>, <a href="3-sm.html#SP38_4">§38.4</a>, <a href="3-sm.html#SP42">§42</a>, <a href="3-sm.html#SP44">§44</a>, <a href="3-sm.html#SP45">§45</a><br/>The Player - <a href="3-tp.html#SP11_3">§11.3</a><br/>Regions - <a href="3-rgn.html#SP17">§17</a><br/>The Map - <a href="3-tm.html#SP36_6">§36.6</a>, <a href="3-tm.html#SP36_7">§36.7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Spatial::progenitor</span><button class="popup" onclick="togglePopup('usagePopup30')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup30">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::progenitor</span></span>:<br/><a href="3-sm.html#SP32_2">§32.2</a>, <a href="3-sm.html#SP37">§37</a>, <a href="3-sm.html#SP38_2">§38.2</a>, <a href="3-sm.html#SP38_2_1">§38.2.1</a>, <a href="3-sm.html#SP38_3">§38.3</a>, <a href="3-sm.html#SP38_4">§38.4</a>, <a href="3-sm.html#SP42">§42</a>, <a href="3-sm.html#SP44">§44</a>, <a href="3-sm.html#SP45">§45</a><br/>The Player - <a href="3-tp.html#SP11_3">§11.3</a><br/>Regions - <a href="3-rgn.html#SP17">§17</a><br/>The Map - <a href="3-tm.html#SP35_6">§35.6</a>, <a href="3-tm.html#SP35_7">§35.7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</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">I</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</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>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Plugins::Manage::plugged_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">spatial_plugin</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>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">SPATIAL_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-></span><span class="element-syntax">progenitor</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">PL::Spatial::set_progenitor</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::set_progenitor</span></span>:<br/><a href="3-sm.html#SP32_3">§32.3</a><br/>The Map - <a href="3-tm.html#SP36_7">§36.7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">of</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">reason</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::set_progenitor</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::set_progenitor</span></span>:<br/><a href="3-sm.html#SP32_3">§32.3</a><br/>The Map - <a href="3-tm.html#SP35_7">§35.7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">of</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">reason</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">Plugins::Manage::plugged_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">spatial_plugin</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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"spatial plugin inactive"</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">to</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">"set progenitor of nothing"</span><span class="plain-syntax">);</span>
|
||||
|
@ -955,7 +1021,7 @@ provide access routines to read and write:
|
|||
</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">PL::Spatial::void_progenitor</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::void_progenitor</span></span>:<br/><a href="3-sm.html#SP38_2">§38.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">of</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::void_progenitor</span><button class="popup" onclick="togglePopup('usagePopup32')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup32">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::void_progenitor</span></span>:<br/><a href="3-sm.html#SP38_2">§38.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">of</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">Plugins::Manage::plugged_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">spatial_plugin</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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"spatial plugin inactive"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SPATIAL_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">of</span><span class="plain-syntax">)-></span><span class="element-syntax">progenitor</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -969,7 +1035,7 @@ the kind of here-objects.
|
|||
</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">PL::Spatial::spatial_stage_II</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_stage_II</span></span>:<br/><a href="3-sm.html#SP28">§28</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_stage_II</span><button class="popup" onclick="togglePopup('usagePopup33')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup33">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_stage_II</span></span>:<br/><a href="3-sm.html#SP28">§28</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-sm.html#SP32_1" class="named-paragraph-link"><span class="named-paragraph">Set the here flag for all those objects whose parentage is only thus known</span><span class="named-paragraph-number">32.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">)</span>
|
||||
|
@ -1034,7 +1100,7 @@ object under investigation.
|
|||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-sm.html#SP32_3_1" class="named-paragraph-link"><span class="named-paragraph">Find the inference which will decide the progenitor</span><span class="named-paragraph-number">32.3.1</span></a></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">parent_setting_inference</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">whereabouts</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::get_reference_as_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">parent_setting_inference</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-sm.html#SP7" class="function-link"><span class="function-syntax">PL::Spatial::get_inferred_parent</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">parent_setting_inference</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">SPATIAL_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-></span><span class="element-syntax">here_flag</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-sm.html#SP32_3_2" class="named-paragraph-link"><span class="named-paragraph">Find the whereabouts of something here</span><span class="named-paragraph-number">32.3.2</span></a></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">whereabouts</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="3-sm.html#SP30" class="function-link"><span class="function-syntax">PL::Spatial::set_progenitor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">whereabouts</span><span class="plain-syntax">, </span><span class="identifier-syntax">parent_setting_inference</span><span class="plain-syntax">);</span>
|
||||
|
@ -1111,7 +1177,7 @@ when it finishes this will be set to the most recently mentioned.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">PART_OF_INF</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-sm.html#SP15" class="function-link"><span class="function-syntax">PL::Spatial::object_is_a_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) || (</span><a href="3-tm.html#SP16" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-sm.html#SP15" class="function-link"><span class="function-syntax">PL::Spatial::object_is_a_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) || (</span><a href="3-tm.html#SP15" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::object_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_RoomOrDoorAsPart</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"was set up as being part of something else, which doors and rooms "</span>
|
||||
|
@ -1131,7 +1197,7 @@ when it finishes this will be set to the most recently mentioned.
|
|||
<p class="commentary firstcommentary"><a id="SP33" class="paragraph-anchor"></a><b>§33. </b></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">PL::Spatial::seek_room</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::seek_room</span></span>:<br/><a href="3-sm.html#SP32_3_2_1">§32.3.2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sent</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> **</span><span class="identifier-syntax">v_I</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::seek_room</span><button class="popup" onclick="togglePopup('usagePopup34')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup34">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::seek_room</span></span>:<br/><a href="3-sm.html#SP32_3_2_1">§32.3.2.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sent</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> **</span><span class="identifier-syntax">v_I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> **</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> **) </span><span class="identifier-syntax">v_I</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">isub</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_interpretation_of_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">sent</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sub</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">isub</span><span class="plain-syntax">);</span>
|
||||
|
@ -1159,7 +1225,7 @@ If it has a parent in either one, then that parent is required to be its progeni
|
|||
</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">PL::Spatial::log_object_tree</span><button class="popup" onclick="togglePopup('usagePopup26')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup26">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::log_object_tree</span></span>:<br/><a href="3-sm.html#SP38">§38</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::log_object_tree</span><button class="popup" onclick="togglePopup('usagePopup35')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup35">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::log_object_tree</span></span>:<br/><a href="3-sm.html#SP38">§38</a></span></button><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">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</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">SPATIAL_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-></span><span class="element-syntax">object_tree_parent</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
||||
|
@ -1186,7 +1252,7 @@ The tree is grown entirely from its root by repeated use of this one operation.
|
|||
</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">PL::Spatial::adopt_object</span><button class="popup" onclick="togglePopup('usagePopup27')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup27">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::adopt_object</span></span>:<br/><a href="3-sm.html#SP38_3">§38.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">orphan</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">foster</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::adopt_object</span><button class="popup" onclick="togglePopup('usagePopup36')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup36">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::adopt_object</span></span>:<br/><a href="3-sm.html#SP38_3">§38.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">orphan</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">foster</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">OBJECT_TREE</span><span class="plain-syntax">, </span><span class="string-syntax">"Grafting $O to be child of $O\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">orphan</span><span class="plain-syntax">, </span><span class="identifier-syntax">foster</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">orphan</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">"orphan is null in adoption"</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">foster</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">"foster is null in adoption"</span><span class="plain-syntax">);</span>
|
||||
|
@ -1201,7 +1267,7 @@ in the incorporation tree instead, but with the same parent.
|
|||
</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">PL::Spatial::part_object</span><button class="popup" onclick="togglePopup('usagePopup28')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup28">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::part_object</span></span>:<br/><a href="3-sm.html#SP38_3">§38.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">orphan</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::part_object</span><button class="popup" onclick="togglePopup('usagePopup37')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup37">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::part_object</span></span>:<br/><a href="3-sm.html#SP38_3">§38.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">orphan</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">OBJECT_TREE</span><span class="plain-syntax">, </span><span class="string-syntax">"Parting $O\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">orphan</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">orphan</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">"new part is null in parting"</span><span class="plain-syntax">);</span>
|
||||
|
||||
|
@ -1267,7 +1333,7 @@ which depend on Spatial whether or not one object spatially contains another:
|
|||
</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">PL::Spatial::encloses</span><button class="popup" onclick="togglePopup('usagePopup29')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup29">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::encloses</span></span>:<br/>Regions - <a href="3-rgn.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I1</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I2</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::encloses</span><button class="popup" onclick="togglePopup('usagePopup38')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup38">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::encloses</span></span>:<br/>Regions - <a href="3-rgn.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I1</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">I1</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I1</span><span class="plain-syntax"> = </span><a href="3-sm.html#SP30" class="function-link"><span class="function-syntax">PL::Spatial::progenitor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I1</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">I1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">I2</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>
|
||||
|
@ -1281,7 +1347,7 @@ code it turns into. Here goes:
|
|||
</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">PL::Spatial::spatial_stage_III</span><button class="popup" onclick="togglePopup('usagePopup30')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup30">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_stage_III</span></span>:<br/><a href="3-sm.html#SP28">§28</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_stage_III</span><button class="popup" onclick="togglePopup('usagePopup39')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup39">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_stage_III</span></span>:<br/><a href="3-sm.html#SP28">§28</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">well_founded</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-sm.html#SP38_1" class="named-paragraph-link"><span class="named-paragraph">Define the Rucksack Class constant</span><span class="named-paragraph-number">38.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-sm.html#SP38_2" class="named-paragraph-link"><span class="named-paragraph">Check the well-foundedness of the hierarchy of the set of progenitors</span><span class="named-paragraph-number">38.2</span></a></span><span class="plain-syntax">;</span>
|
||||
|
@ -1566,7 +1632,7 @@ for objects:
|
|||
<p class="commentary firstcommentary"><a id="SP39" class="paragraph-anchor"></a><b>§39. </b></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">PL::Spatial::add_to_object_sequence</span><button class="popup" onclick="togglePopup('usagePopup31')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup31">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::add_to_object_sequence</span></span>:<br/><a href="3-sm.html#SP38_6">§38.6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">depth</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::add_to_object_sequence</span><button class="popup" onclick="togglePopup('usagePopup40')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup40">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::add_to_object_sequence</span></span>:<br/><a href="3-sm.html#SP38_6">§38.6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">depth</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">OrderingInstances::place_next</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SPATIAL_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-></span><span class="element-syntax">I6_definition_depth</span><span class="plain-syntax"> = </span><span class="identifier-syntax">depth</span><span class="plain-syntax">;</span>
|
||||
|
||||
|
@ -1594,7 +1660,7 @@ empty.
|
|||
</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">PL::Spatial::spatial_stage_IV</span><button class="popup" onclick="togglePopup('usagePopup32')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup32">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_stage_IV</span></span>:<br/><a href="3-sm.html#SP28">§28</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_stage_IV</span><button class="popup" onclick="togglePopup('usagePopup41')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup41">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_stage_IV</span></span>:<br/><a href="3-sm.html#SP28">§28</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</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">Task::wraps_existing_storyfile</span><span class="plain-syntax">()) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">)</span>
|
||||
|
@ -1657,19 +1723,19 @@ it already turns up under its owner.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">SPATIAL_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-></span><span class="element-syntax">object_tree_child</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Data::Objects::index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">SPATIAL_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-></span><span class="element-syntax">object_tree_child</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">+1, </span><span class="identifier-syntax">details</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-sm.html#SP15" class="function-link"><span class="function-syntax">PL::Spatial::object_is_a_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="3-tm.html#SP16" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> (</span><a href="3-tm.html#SP15" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</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">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I2</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-tm.html#SP16" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I2</span><span class="plain-syntax">)) && (</span><a href="3-sm.html#SP30" class="function-link"><span class="function-syntax">PL::Spatial::progenitor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I2</span><span class="plain-syntax">) != </span><span class="identifier-syntax">I</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-tm.html#SP15" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I2</span><span class="plain-syntax">)) && (</span><a href="3-sm.html#SP30" class="function-link"><span class="function-syntax">PL::Spatial::progenitor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I2</span><span class="plain-syntax">) != </span><span class="identifier-syntax">I</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">B</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tm.html#SP23" class="function-link"><span class="function-syntax">PL::Map::get_door_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I2</span><span class="plain-syntax">, &</span><span class="identifier-syntax">A</span><span class="plain-syntax">, &</span><span class="identifier-syntax">B</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tm.html#SP22" class="function-link"><span class="function-syntax">PL::Map::get_door_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I2</span><span class="plain-syntax">, &</span><span class="identifier-syntax">A</span><span class="plain-syntax">, &</span><span class="identifier-syntax">B</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">A</span><span class="plain-syntax"> == </span><span class="identifier-syntax">I</span><span class="plain-syntax">) </span><span class="identifier-syntax">Data::Objects::index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I2</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">+1, </span><span class="identifier-syntax">details</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">B</span><span class="plain-syntax"> == </span><span class="identifier-syntax">I</span><span class="plain-syntax">) </span><span class="identifier-syntax">Data::Objects::index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I2</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">+1, </span><span class="identifier-syntax">details</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><a href="3-tp.html#SP13" class="function-link"><span class="function-syntax">PL::Player::index_object_further</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">, </span><span class="identifier-syntax">details</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bck.html#SP13" class="function-link"><span class="function-syntax">PL::Backdrops::index_object_further</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">, </span><span class="identifier-syntax">details</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bck.html#SP12" class="function-link"><span class="function-syntax">PL::Backdrops::index_object_further</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">, </span><span class="identifier-syntax">details</span><span class="plain-syntax">, </span><span class="constant-syntax">0</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">SPATIAL_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-></span><span class="element-syntax">object_tree_sibling</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Data::Objects::index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">SPATIAL_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-></span><span class="element-syntax">object_tree_sibling</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">, </span><span class="identifier-syntax">details</span><span class="plain-syntax">);</span>
|
||||
|
@ -1679,7 +1745,7 @@ it already turns up under its owner.
|
|||
</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">PL::Spatial::spatial_add_to_World_index</span><button class="popup" onclick="togglePopup('usagePopup33')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup33">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_add_to_World_index</span></span>:<br/><a href="3-sm.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">O</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Spatial::spatial_add_to_World_index</span><button class="popup" onclick="togglePopup('usagePopup42')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup42">Usage of <span class="code-font"><span class="function-syntax">PL::Spatial::spatial_add_to_World_index</span></span>:<br/><a href="3-sm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">O</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">O</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">O</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_thing</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="3-sm.html#SP30" class="function-link"><span class="function-syntax">PL::Spatial::progenitor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">O</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -257,7 +257,7 @@ won't need them in this section.
|
|||
</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">PL::SpatialMap::initialise_mapping_data</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">PL::SpatialMap::initialise_mapping_data</span></span>:<br/>The Map - <a href="3-tm.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">map_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">md</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::SpatialMap::initialise_mapping_data</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">PL::SpatialMap::initialise_mapping_data</span></span>:<br/>The Map - <a href="3-tm.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">map_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">md</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">world_index_colour</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">md</span><span class="plain-syntax">-></span><span class="element-syntax">world_index_text_colour</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">md</span><span class="plain-syntax">-></span><span class="element-syntax">position</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Zero_vector</span><span class="plain-syntax">;</span>
|
||||
|
@ -576,10 +576,10 @@ door, which we take a note of if asked to do so.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">immediate_destination</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-sm.html#SP15" class="function-link"><span class="function-syntax">PL::Spatial::object_is_a_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">immediate_destination</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ultimate_destination</span><span class="plain-syntax"> = </span><span class="identifier-syntax">immediate_destination</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-tm.html#SP16" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">immediate_destination</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-tm.html#SP15" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">immediate_destination</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">via</span><span class="plain-syntax">) *</span><span class="identifier-syntax">via</span><span class="plain-syntax"> = </span><span class="identifier-syntax">immediate_destination</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">B</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tm.html#SP23" class="function-link"><span class="function-syntax">PL::Map::get_door_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">immediate_destination</span><span class="plain-syntax">, &</span><span class="identifier-syntax">A</span><span class="plain-syntax">, &</span><span class="identifier-syntax">B</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tm.html#SP22" class="function-link"><span class="function-syntax">PL::Map::get_door_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">immediate_destination</span><span class="plain-syntax">, &</span><span class="identifier-syntax">A</span><span class="plain-syntax">, &</span><span class="identifier-syntax">B</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">A</span><span class="plain-syntax"> == </span><span class="identifier-syntax">origin</span><span class="plain-syntax">) </span><span class="identifier-syntax">ultimate_destination</span><span class="plain-syntax"> = </span><span class="identifier-syntax">B</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">B</span><span class="plain-syntax"> == </span><span class="identifier-syntax">origin</span><span class="plain-syntax">) </span><span class="identifier-syntax">ultimate_destination</span><span class="plain-syntax"> = </span><span class="identifier-syntax">A</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -3140,7 +3140,7 @@ can make use of the following:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_direction</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">)-></span><span class="element-syntax">direction_index</span><span class="plain-syntax"> >= </span><span class="constant-syntax">12</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::get_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">OW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::get_name</span><span class="plain-syntax">(</span><a href="3-tm.html#SP28" class="function-link"><span class="function-syntax">PL::Map::get_value_of_opposite_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">OW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::get_name</span><span class="plain-syntax">(</span><a href="3-tm.html#SP27" class="function-link"><span class="function-syntax">PL::Map::get_value_of_opposite_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</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">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"%+W is a direction. The opposite of %+W is %+W.\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">OW</span><span class="plain-syntax">);</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">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_region</span><span class="plain-syntax">)) {</span>
|
||||
|
@ -3150,7 +3150,7 @@ can make use of the following:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_door</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::get_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</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">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"%+W is a door.\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_prop_state</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PropertyInferences::get_prop_state</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_other_side</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">X</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</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">X</span><span class="plain-syntax">) {</span>
|
||||
|
@ -3211,7 +3211,7 @@ can make use of the following:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">dir</span><span class="plain-syntax">)-></span><span class="element-syntax">direction_index</span><span class="plain-syntax"> == </span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">DW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::get_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">dir</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">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"%+W is %W of %+W.\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">OW</span><span class="plain-syntax">, </span><span class="identifier-syntax">DW</span><span class="plain-syntax">, </span><span class="identifier-syntax">RW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">opp</span><span class="plain-syntax"> = </span><a href="3-tm.html#SP28" class="function-link"><span class="function-syntax">PL::Map::get_value_of_opposite_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">dir</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">opp</span><span class="plain-syntax"> = </span><a href="3-tm.html#SP27" class="function-link"><span class="function-syntax">PL::Map::get_value_of_opposite_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">dir</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">od</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">opp</span><span class="plain-syntax">)-></span><span class="element-syntax">direction_index</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">S</span><span class="plain-syntax">) && (</span><a href="3-sm2.html#SP7_16" class="function-link"><span class="function-syntax">PL::SpatialMap::room_exit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">od</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">OPW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::get_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">dir</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
|
@ -3239,12 +3239,12 @@ can make use of the following:
|
|||
</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">PL::SpatialMap::index_room_connections</span><button class="popup" onclick="togglePopup('usagePopup79')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup79">Usage of <span class="code-font"><span class="function-syntax">PL::SpatialMap::index_room_connections</span></span>:<br/>The Map - <a href="3-tm.html#SP38">§38</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::SpatialMap::index_room_connections</span><button class="popup" onclick="togglePopup('usagePopup79')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup79">Usage of <span class="code-font"><span class="function-syntax">PL::SpatialMap::index_room_connections</span></span>:<br/>The Map - <a href="3-tm.html#SP37">§37</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">RW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::get_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">); </span><span class="comment-syntax"> name of the origin room</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dir</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">dir</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_direction</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">dir</span><span class="plain-syntax">)-></span><span class="element-syntax">direction_index</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">opp</span><span class="plain-syntax"> = </span><a href="3-tm.html#SP28" class="function-link"><span class="function-syntax">PL::Map::get_value_of_opposite_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">dir</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">opp</span><span class="plain-syntax"> = </span><a href="3-tm.html#SP27" class="function-link"><span class="function-syntax">PL::Map::get_value_of_opposite_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">dir</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">od</span><span class="plain-syntax"> = </span><span class="identifier-syntax">opp</span><span class="plain-syntax">?(</span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">opp</span><span class="plain-syntax">)-></span><span class="element-syntax">direction_index</span><span class="plain-syntax">):(-1);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</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">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="3-sm2.html#SP7_16" class="function-link"><span class="function-syntax">PL::SpatialMap::room_exit</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R</span><span class="plain-syntax">, </span><span class="identifier-syntax">i</span><span class="plain-syntax">, &</span><span class="identifier-syntax">D</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -302,7 +302,7 @@ way which isn't symmetrical between the two, and this way round is cleanest.
|
|||
</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><a href="3-bck.html#SP11" class="function-link"><span class="function-syntax">PL::Backdrops::assert_relations</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">I0</span><span class="plain-syntax">, </span><span class="identifier-syntax">I1</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><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-bck.html#SP10" class="function-link"><span class="function-syntax">PL::Backdrops::assert_relations</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">I0</span><span class="plain-syntax">, </span><span class="identifier-syntax">I1</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><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-mcr.html#SP4" class="function-link"><span class="function-syntax">PL::MapDirections::assert_relations</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">I0</span><span class="plain-syntax">, </span><span class="identifier-syntax">I1</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><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-rgn.html#SP16" class="function-link"><span class="function-syntax">PL::Regions::assert_relations</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">I0</span><span class="plain-syntax">, </span><span class="identifier-syntax">I1</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>
|
||||
</pre>
|
||||
|
@ -345,13 +345,13 @@ way which isn't symmetrical between the two, and this way round is cleanest.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">item</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">PART_OF_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">item</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> == </span><span class="identifier-syntax">R_incorporation</span><span class="plain-syntax">)?</span><span class="identifier-syntax">CERTAIN_CE:IMPOSSIBLE_CE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-sm.html#SP4" class="function-link"><span class="function-syntax">PL::Spatial::infer_part_of</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">item</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> == </span><span class="identifier-syntax">R_incorporation</span><span class="plain-syntax">)?</span><span class="identifier-syntax">CERTAIN_CE:IMPOSSIBLE_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc</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">bp</span><span class="plain-syntax"> == </span><span class="identifier-syntax">R_containment</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONTAINS_THINGS_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">item</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">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">PARENTAGE_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">item</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc</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">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">item</span><span class="plain-syntax">, </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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">Inferences::join_inference</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::create_inference</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONTAINS_THINGS_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL_GENERAL_POINTER</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">), </span><span class="identifier-syntax">loc</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-sm.html#SP4" class="function-link"><span class="function-syntax">PL::Spatial::infer_parentage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">item</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-sm.html#SP4" class="function-link"><span class="function-syntax">PL::Spatial::infer_is_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">item</span><span class="plain-syntax">, </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-sr.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4_5" class="paragraph-anchor"></a><b>§4.5. </b>If something is being worn, it needs to have the I7 either/or property
|
||||
|
|
|
@ -87,7 +87,7 @@ MathJax = {
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">if</a></li><li><a href="index.html#3">Chapter 3: Space and Time</a></li><li><b>The Map</b></li></ul></div>
|
||||
<p class="purpose">A plugin to provide a geographical model, linking rooms and doors together in oppositely-paired directions.</p>
|
||||
|
||||
<ul class="toc"><li><a href="3-tm.html#SP7">§7. Initialisation</a></li><li><a href="3-tm.html#SP9">§9. Inferences</a></li><li><a href="3-tm.html#SP11">§11. Kinds</a></li><li><a href="3-tm.html#SP17">§17. Directions and their numbers</a></li><li><a href="3-tm.html#SP21">§21. The exits array</a></li><li><a href="3-tm.html#SP23">§23. Door connectivity</a></li><li><a href="3-tm.html#SP24">§24. Properties</a></li><li><a href="3-tm.html#SP30">§30. Linguistic extras</a></li><li><a href="3-tm.html#SP34">§34. The map-connector</a></li><li><a href="3-tm.html#SP36">§36. Model completion</a></li><li><a href="3-tm.html#SP37">§37. Redeeming those notices</a></li><li><a href="3-tm.html#SP38">§38. Indexing</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="3-tm.html#SP8">§8. Initialisation</a></li><li><a href="3-tm.html#SP10">§10. Kinds</a></li><li><a href="3-tm.html#SP16">§16. Directions and their numbers</a></li><li><a href="3-tm.html#SP20">§20. The exits array</a></li><li><a href="3-tm.html#SP22">§22. Door connectivity</a></li><li><a href="3-tm.html#SP23">§23. Properties</a></li><li><a href="3-tm.html#SP29">§29. Linguistic extras</a></li><li><a href="3-tm.html#SP33">§33. The map-connector</a></li><li><a href="3-tm.html#SP35">§35. Model completion</a></li><li><a href="3-tm.html#SP36">§36. Redeeming those notices</a></li><li><a href="3-tm.html#SP37">§37. Indexing</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The map is a complicated data structure, both because it amounts to a
|
||||
ternary relation (though being implemented by many binary ones) and because
|
||||
|
@ -175,12 +175,65 @@ makes for more legible code if we use a special inference type of our own:
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">DIRECTION_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">; </span><span class="comment-syntax"> 100; where do map connections from O lead?</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b>One useful constant:
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b></p>
|
||||
|
||||
<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">direction_inference_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">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</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">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dir</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">direction_inference_data</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Map::new_direction_inference</span><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_from</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">o_dir</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PROTECTED_MODEL_PROCEDURE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">direction_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">direction_inference_data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="identifier-syntax">to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">infs_to</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="identifier-syntax">dir</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">o_dir</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">o_dir</span><span class="plain-syntax">)):</span><span class="identifier-syntax">NULL</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">Inferences::create_inference</span><span class="plain-syntax">(</span><span class="identifier-syntax">DIRECTION_INF</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STORE_POINTER_direction_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">data</span><span class="plain-syntax">), </span><span class="identifier-syntax">prevailing_mood</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">PL::Map::infer_direction</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">PL::Map::infer_direction</span></span>:<br/>Map Connection Relations - <a href="3-mcr.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_from</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_to</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">o_dir</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><a href="3-tm.html#SP5" class="function-link"><span class="function-syntax">PL::Map::new_direction_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_from</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">o_dir</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::join_inference</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs_from</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">PL::Map::get_map_references</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">PL::Map::get_map_references</span></span>:<br/><a href="3-tm.html#SP20">§20</a>, <a href="3-tm.html#SP35_2">§35.2</a>, <a href="3-tm.html#SP35_3">§35.3</a>, <a href="3-tm.html#SP35_4">§35.4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> **</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> **</span><span class="identifier-syntax">infs2</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">i</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">i</span><span class="plain-syntax">-></span><span class="identifier-syntax">family</span><span class="plain-syntax"> != </span><span class="identifier-syntax">DIRECTION_INF</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">"not a direction inf"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">direction_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_direction_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</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">infs1</span><span class="plain-syntax">) *</span><span class="identifier-syntax">infs1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">to</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">) *</span><span class="identifier-syntax">infs2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">dir</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">PL::Map::log_direction_inf</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">PL::Map::log_direction_inf</span></span>:<br/><a href="3-tm.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">direction_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_direction_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"-to:$j -dir:$j"</span><span class="plain-syntax">, </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">dir</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">PL::Map::cmp_direction_inf</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">PL::Map::cmp_direction_inf</span></span>:<br/><a href="3-tm.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i1</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">direction_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_direction_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i1</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">direction_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_direction_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i2</span><span class="plain-syntax">-></span><span class="identifier-syntax">data</span><span class="plain-syntax">);</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="identifier-syntax">Inferences::measure_infs</span><span class="plain-syntax">(</span><span class="identifier-syntax">data1</span><span class="plain-syntax">-></span><span class="element-syntax">dir</span><span class="plain-syntax">) - </span><span class="identifier-syntax">Inferences::measure_infs</span><span class="plain-syntax">(</span><span class="identifier-syntax">data2</span><span class="plain-syntax">-></span><span class="element-syntax">dir</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">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">CI_DIFFER_IN_TOPIC</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="identifier-syntax">CI_DIFFER_IN_TOPIC</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::measure_infs</span><span class="plain-syntax">(</span><span class="identifier-syntax">data1</span><span class="plain-syntax">-></span><span class="element-syntax">to</span><span class="plain-syntax">) - </span><span class="identifier-syntax">Inferences::measure_infs</span><span class="plain-syntax">(</span><span class="identifier-syntax">data2</span><span class="plain-syntax">-></span><span class="element-syntax">to</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">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">CI_DIFFER_IN_CONTENT</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="identifier-syntax">CI_DIFFER_IN_CONTENT</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::measure_inf</span><span class="plain-syntax">(</span><span class="identifier-syntax">i1</span><span class="plain-syntax">) - </span><span class="identifier-syntax">Inferences::measure_inf</span><span class="plain-syntax">(</span><span class="identifier-syntax">i2</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">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">CI_DIFFER_IN_COPY_ONLY</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="identifier-syntax">CI_DIFFER_IN_COPY_ONLY</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">CI_IDENTICAL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure direction_inference_data is private to this section.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>One useful constant:
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">MAX_WORDS_IN_DIRECTION</span><span class="plain-syntax"> (</span><span class="identifier-syntax">MAX_WORDS_IN_ASSEMBLAGE</span><span class="plain-syntax"> - </span><span class="constant-syntax">4</span><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>These little structures are needed to remember routines to compile later:
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>These little structures are needed to remember routines to compile later:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -202,40 +255,34 @@ makes for more legible code if we use a special inference type of our own:
|
|||
<span class="plain-syntax">} </span><span class="reserved-syntax">door_to_notice</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure door_dir_notice is private to this section.</li><li>The structure door_to_notice is private to this section.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Initialisation. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. Initialisation. </b></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">PL::Map::start</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">DIRECTION_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"DIRECTION_INF"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DIRECTION_INF</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::new_family</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"DIRECTION_INF"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">DIRECTION_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">LOG_DETAILS_INF_MTID</span><span class="plain-syntax">, </span><a href="3-tm.html#SP5" class="function-link"><span class="function-syntax">PL::Map::log_direction_inf</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">DIRECTION_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">COMPARE_INF_MTID</span><span class="plain-syntax">, </span><a href="3-tm.html#SP5" class="function-link"><span class="function-syntax">PL::Map::cmp_direction_inf</span></a><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_CREATE_INFERENCE_FAMILIES</span><span class="plain-syntax">, </span><a href="3-tm.html#SP7" class="function-link"><span class="function-syntax">PL::Map::create_inference_families</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_NEW_BASE_KIND_NOTIFY</span><span class="plain-syntax">, </span><a href="3-tm.html#SP12" class="function-link"><span class="function-syntax">PL::Map::map_new_base_kind_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_NEW_SUBJECT_NOTIFY</span><span class="plain-syntax">, </span><a href="3-tm.html#SP14" class="function-link"><span class="function-syntax">PL::Map::map_new_subject_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_SET_KIND_NOTIFY</span><span class="plain-syntax">, </span><a href="3-tm.html#SP20" class="function-link"><span class="function-syntax">PL::Map::map_set_kind_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_SET_SUBKIND_NOTIFY</span><span class="plain-syntax">, </span><a href="3-tm.html#SP13" class="function-link"><span class="function-syntax">PL::Map::map_set_subkind_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_ACT_ON_SPECIAL_NPS</span><span class="plain-syntax">, </span><a href="3-tm.html#SP31" class="function-link"><span class="function-syntax">PL::Map::map_act_on_special_NPs</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_CHECK_GOING</span><span class="plain-syntax">, </span><a href="3-tm.html#SP32" class="function-link"><span class="function-syntax">PL::Map::map_check_going</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_COMPILE_MODEL_TABLES</span><span class="plain-syntax">, </span><a href="3-tm.html#SP22" class="function-link"><span class="function-syntax">PL::Map::map_compile_model_tables</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_ESTIMATE_PROPERTY_USAGE</span><span class="plain-syntax">, </span><a href="3-tm.html#SP29" class="function-link"><span class="function-syntax">PL::Map::map_estimate_property_usage</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_LOG_INFERENCE_TYPE</span><span class="plain-syntax">, </span><a href="3-tm.html#SP9" class="function-link"><span class="function-syntax">PL::Map::map_log_inference_type</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_INFERENCES_CONTRADICT</span><span class="plain-syntax">, </span><a href="3-tm.html#SP10" class="function-link"><span class="function-syntax">PL::Map::map_inferences_contradict</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_CREATE_INFERENCE_FAMILIES</span><span class="plain-syntax">, </span><a href="3-tm.html#SP7" class="function-link"><span class="function-syntax">PL::Map::create_inference_families</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_COMPLETE_MODEL</span><span class="plain-syntax">, </span><a href="3-tm.html#SP36" class="function-link"><span class="function-syntax">PL::Map::map_complete_model</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_NEW_PROPERTY_NOTIFY</span><span class="plain-syntax">, </span><a href="3-tm.html#SP25" class="function-link"><span class="function-syntax">PL::Map::map_new_property_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_PROPERTY_VALUE_NOTIFY</span><span class="plain-syntax">, </span><a href="3-tm.html#SP26" class="function-link"><span class="function-syntax">PL::Map::map_property_value_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_INTERVENE_IN_ASSERTION</span><span class="plain-syntax">, </span><a href="3-tm.html#SP33" class="function-link"><span class="function-syntax">PL::Map::map_intervene_in_assertion</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_ADD_TO_WORLD_INDEX</span><span class="plain-syntax">, </span><a href="3-tm.html#SP38" class="function-link"><span class="function-syntax">PL::Map::map_add_to_World_index</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_ANNOTATE_IN_WORLD_INDEX</span><span class="plain-syntax">, </span><a href="3-tm.html#SP38" class="function-link"><span class="function-syntax">PL::Map::map_annotate_in_World_index</span></a><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">PL::Map::create_inference_families</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</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><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_NEW_BASE_KIND_NOTIFY</span><span class="plain-syntax">, </span><a href="3-tm.html#SP11" class="function-link"><span class="function-syntax">PL::Map::map_new_base_kind_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_NEW_SUBJECT_NOTIFY</span><span class="plain-syntax">, </span><a href="3-tm.html#SP13" class="function-link"><span class="function-syntax">PL::Map::map_new_subject_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_SET_KIND_NOTIFY</span><span class="plain-syntax">, </span><a href="3-tm.html#SP19" class="function-link"><span class="function-syntax">PL::Map::map_set_kind_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_SET_SUBKIND_NOTIFY</span><span class="plain-syntax">, </span><a href="3-tm.html#SP12" class="function-link"><span class="function-syntax">PL::Map::map_set_subkind_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_ACT_ON_SPECIAL_NPS</span><span class="plain-syntax">, </span><a href="3-tm.html#SP30" class="function-link"><span class="function-syntax">PL::Map::map_act_on_special_NPs</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_CHECK_GOING</span><span class="plain-syntax">, </span><a href="3-tm.html#SP31" class="function-link"><span class="function-syntax">PL::Map::map_check_going</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_COMPILE_MODEL_TABLES</span><span class="plain-syntax">, </span><a href="3-tm.html#SP21" class="function-link"><span class="function-syntax">PL::Map::map_compile_model_tables</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_ESTIMATE_PROPERTY_USAGE</span><span class="plain-syntax">, </span><a href="3-tm.html#SP28" class="function-link"><span class="function-syntax">PL::Map::map_estimate_property_usage</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_COMPLETE_MODEL</span><span class="plain-syntax">, </span><a href="3-tm.html#SP35" class="function-link"><span class="function-syntax">PL::Map::map_complete_model</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_NEW_PROPERTY_NOTIFY</span><span class="plain-syntax">, </span><a href="3-tm.html#SP24" class="function-link"><span class="function-syntax">PL::Map::map_new_property_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_PROPERTY_VALUE_NOTIFY</span><span class="plain-syntax">, </span><a href="3-tm.html#SP25" class="function-link"><span class="function-syntax">PL::Map::map_property_value_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_INTERVENE_IN_ASSERTION</span><span class="plain-syntax">, </span><a href="3-tm.html#SP32" class="function-link"><span class="function-syntax">PL::Map::map_intervene_in_assertion</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_ADD_TO_WORLD_INDEX</span><span class="plain-syntax">, </span><a href="3-tm.html#SP37" class="function-link"><span class="function-syntax">PL::Map::map_add_to_World_index</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGIN_REGISTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">PLUGIN_ANNOTATE_IN_WORLD_INDEX</span><span class="plain-syntax">, </span><a href="3-tm.html#SP37" class="function-link"><span class="function-syntax">PL::Map::map_annotate_in_World_index</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">map_data</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Map::new_data</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">PL::Map::new_data</span></span>:<br/><a href="3-tm.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">map_data</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Map::new_data</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">PL::Map::new_data</span></span>:<br/><a href="3-tm.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">map_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">md</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">map_data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">direction_index</span><span class="plain-syntax"> = -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">md</span><span class="plain-syntax">-></span><span class="element-syntax">direction_relation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -252,28 +299,7 @@ makes for more legible code if we use a special inference type of our own:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">md</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. Inferences. </b></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">PL::Map::map_log_inference_type</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">PL::Map::map_log_inference_type</span></span>:<br/><a href="3-tm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">it</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>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>Two subjects are attached to a direction inference: 1, the destination;
|
||||
2, the direction. So at the <span class="extract"><span class="extract-syntax">CI_DIFFER_IN_INFS1</span></span> level of similarity, two
|
||||
different direction inferences disagree about the destination for a given
|
||||
direction — this of course is a contradiction.
|
||||
</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">PL::Map::map_inferences_contradict</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">PL::Map::map_inferences_contradict</span></span>:<br/><a href="3-tm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">similarity</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">Inferences::get_inference_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">) == </span><span class="identifier-syntax">DIRECTION_INF</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">similarity</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CI_DIFFER_IN_INFS1</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><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>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. Kinds. </b>These are kind names to do with mapping which Inform provides special
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. Kinds. </b>These are kind names to do with mapping which Inform provides special
|
||||
support for; it recognises the English name when defined by the Standard
|
||||
Rules. (So there is no need to translate this to other languages.)
|
||||
</p>
|
||||
|
@ -284,10 +310,10 @@ Rules. (So there is no need to translate this to other languages.)
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">door</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b></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">PL::Map::map_new_base_kind_notify</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">PL::Map::map_new_base_kind_notify</span></span>:<br/><a href="3-tm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_base</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::map_new_base_kind_notify</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">PL::Map::map_new_base_kind_notify</span></span>:<br/><a href="3-tm.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">new_base</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><notable-map-kinds></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="function-syntax"><<r>></span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">: </span><span class="identifier-syntax">K_direction</span><span class="plain-syntax"> = </span><span class="identifier-syntax">new_base</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>
|
||||
|
@ -297,11 +323,11 @@ Rules. (So there is no need to translate this to other languages.)
|
|||
<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>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b>Direction needs to be an abstract object, not a thing or a room, so:
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b>Direction needs to be an abstract object, not a thing or a room, so:
|
||||
</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">PL::Map::map_set_subkind_notify</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">PL::Map::map_set_subkind_notify</span></span>:<br/><a href="3-tm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sub</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">super</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::map_set_subkind_notify</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">PL::Map::map_set_subkind_notify</span></span>:<br/><a href="3-tm.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sub</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">super</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">sub</span><span class="plain-syntax"> == </span><span class="identifier-syntax">K_direction</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">super</span><span class="plain-syntax"> != </span><span class="identifier-syntax">K_object</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">problem_count</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">StandardProblems::sentence_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_DirectionAdrift</span><span class="plain-syntax">),</span>
|
||||
|
@ -336,15 +362,15 @@ Rules. (So there is no need to translate this to other languages.)
|
|||
<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>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b></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">PL::Map::map_new_subject_notify</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">PL::Map::map_new_subject_notify</span></span>:<br/><a href="3-tm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ATTACH_PLUGIN_DATA_TO_SUBJECT</span><span class="plain-syntax">(</span><span class="identifier-syntax">map</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><a href="3-tm.html#SP8" class="function-link"><span class="function-syntax">PL::Map::new_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">));</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::map_new_subject_notify</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">PL::Map::map_new_subject_notify</span></span>:<br/><a href="3-tm.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ATTACH_PLUGIN_DATA_TO_SUBJECT</span><span class="plain-syntax">(</span><span class="identifier-syntax">map</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><a href="3-tm.html#SP9" class="function-link"><span class="function-syntax">PL::Map::new_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">subj</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>
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b></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">PL::Map::object_is_a_direction</span><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
|
@ -354,10 +380,10 @@ Rules. (So there is no need to translate this to other languages.)
|
|||
<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>
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b></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">PL::Map::object_is_a_door</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">PL::Map::object_is_a_door</span></span>:<br/><a href="3-tm.html#SP36_2">§36.2</a>, <a href="3-tm.html#SP36_3">§36.3</a>, <a href="3-tm.html#SP36_4">§36.4</a>, <a href="3-tm.html#SP36_5">§36.5</a>, <a href="3-tm.html#SP36_6">§36.6</a>, <a href="3-tm.html#SP36_7">§36.7</a>, <a href="3-tm.html#SP36_8">§36.8</a><br/>Spatial Model - <a href="3-sm.html#SP32_3_3">§32.3.3</a>, <a href="3-sm.html#SP44">§44</a><br/>Spatial Map - <a href="3-sm2.html#SP7_16">§7.16</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::object_is_a_door</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">PL::Map::object_is_a_door</span></span>:<br/><a href="3-tm.html#SP35_2">§35.2</a>, <a href="3-tm.html#SP35_3">§35.3</a>, <a href="3-tm.html#SP35_4">§35.4</a>, <a href="3-tm.html#SP35_5">§35.5</a>, <a href="3-tm.html#SP35_6">§35.6</a>, <a href="3-tm.html#SP35_7">§35.7</a>, <a href="3-tm.html#SP35_8">§35.8</a><br/>Spatial Model - <a href="3-sm.html#SP32_3_3">§32.3.3</a>, <a href="3-sm.html#SP44">§44</a><br/>Spatial Map - <a href="3-sm2.html#SP7_16">§7.16</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</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">Plugins::Manage::plugged_in</span><span class="plain-syntax">(</span><span class="identifier-syntax">map_plugin</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">K_door</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">I</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_door</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>
|
||||
|
@ -365,11 +391,11 @@ Rules. (So there is no need to translate this to other languages.)
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::subject_is_a_door</span><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-tm.html#SP16" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="3-tm.html#SP15" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. Directions and their numbers. </b>Directions play a special role because sentences like "east of the treehouse
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. Directions and their numbers. </b>Directions play a special role because sentences like "east of the treehouse
|
||||
is the garden" are parsed differently from sentences like "the nearby place
|
||||
property of the treehouse is the garden"; they're also one domain of what
|
||||
amounts to the ternary map relation, though we actually implement it as a
|
||||
|
@ -377,12 +403,12 @@ sheaf of binary relations, one for each direction. Anyway:
|
|||
</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">PL::Map::is_a_direction</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">PL::Map::is_a_direction</span></span>:<br/><a href="3-tm.html#SP33">§33</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::is_a_direction</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">PL::Map::is_a_direction</span></span>:<br/><a href="3-tm.html#SP32">§32</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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_direction</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</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="comment-syntax"> in particular, if we aren't using the IF model</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">InferenceSubjects::is_within</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">KindSubjects::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K_direction</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b>When a new direction comes into existence (i.e., not when the underlying
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b>When a new direction comes into existence (i.e., not when the underlying
|
||||
object <span class="extract"><span class="extract-syntax">I</span></span> is created, but when its kind is first realised to be "direction"),
|
||||
we need to assign it a number:
|
||||
</p>
|
||||
|
@ -390,7 +416,7 @@ we need to assign it a number:
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">registered_directions</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="comment-syntax"> next direction number to be free</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. </b>These are direction names which Inform provides special support for; it
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b>These are direction names which Inform provides special support for; it
|
||||
recognises the English names when defined by the Standard Rules. (So there is
|
||||
no need to translate this to other languages.)
|
||||
</p>
|
||||
|
@ -401,15 +427,15 @@ no need to translate this to other languages.)
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">down</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. </b></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">PL::Map::map_set_kind_notify</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">PL::Map::map_set_kind_notify</span></span>:<br/><a href="3-tm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::map_set_kind_notify</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_set_kind_notify</span></span>:<br/><a href="3-tm.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</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="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kw</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</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_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">kw</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_direction</span><span class="plain-syntax">))) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::Behaviour::is_object_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_direction</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">IW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::get_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP20_1" class="named-paragraph-link"><span class="named-paragraph">Vet the direction name for acceptability</span><span class="named-paragraph-number">20.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP19_1" class="named-paragraph-link"><span class="named-paragraph">Vet the direction name for acceptability</span><span class="named-paragraph-number">19.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><notable-map-directions></span><span class="plain-syntax">(</span><span class="identifier-syntax">IW</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="function-syntax"><<r>></span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">: </span><span class="identifier-syntax">I_up</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
@ -417,12 +443,12 @@ no need to translate this to other languages.)
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tnt.html#SP7" class="function-link"><span class="function-syntax">PL::Naming::object_takes_definite_article</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP20_2" class="named-paragraph-link"><span class="named-paragraph">Assign the object a direction number and a mapped-D-of relation</span><span class="named-paragraph-number">20.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP19_2" class="named-paragraph-link"><span class="named-paragraph">Assign the object a direction number and a mapped-D-of relation</span><span class="named-paragraph-number">19.2</span></a></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>
|
||||
<p class="commentary firstcommentary"><a id="SP20_1" class="paragraph-anchor"></a><b>§20.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Vet the direction name for acceptability</span><span class="named-paragraph-number">20.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP19_1" class="paragraph-anchor"></a><b>§19.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Vet the direction name for acceptability</span><span class="named-paragraph-number">19.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -439,8 +465,8 @@ no need to translate this to other languages.)
|
|||
<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>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP20">§20</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP20_2" class="paragraph-anchor"></a><b>§20.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assign the object a direction number and a mapped-D-of relation</span><span class="named-paragraph-number">20.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP19">§19</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP19_2" class="paragraph-anchor"></a><b>§19.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assign the object a direction number and a mapped-D-of relation</span><span class="named-paragraph-number">19.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -450,8 +476,8 @@ no need to translate this to other languages.)
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-></span><span class="element-syntax">direction_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">dname</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="3-mcr.html#SP6" class="function-link"><span class="function-syntax">PL::MapDirections::make_mapped_predicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">dname</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP20">§20</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§21. The exits array. </b>The bulk of the map is stored in the arrays called <span class="extract"><span class="extract-syntax">exits</span></span>, which hold the
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP19">§19</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. The exits array. </b>The bulk of the map is stored in the arrays called <span class="extract"><span class="extract-syntax">exits</span></span>, which hold the
|
||||
map connections fanning out from each room. The direction numbers carefully
|
||||
noted above are keys into these arrays.
|
||||
</p>
|
||||
|
@ -466,7 +492,7 @@ quite crunchy algorithms, has the fastest possible access to the layout.
|
|||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="identifier-syntax">MAP_EXIT</span><span class="plain-syntax">(</span><span class="identifier-syntax">X</span><span class="plain-syntax">, </span><span class="identifier-syntax">Y</span><span class="plain-syntax">) </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">X</span><span class="plain-syntax">)-></span><span class="element-syntax">exits</span><span class="plain-syntax">[</span><span class="identifier-syntax">Y</span><span class="plain-syntax">]</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::build_exits_array</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">PL::Map::build_exits_array</span></span>:<br/><a href="3-tm.html#SP36">§36</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::build_exits_array</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">PL::Map::build_exits_array</span></span>:<br/><a href="3-tm.html#SP35">§35</a></span></button><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">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">d</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">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">) {</span>
|
||||
|
@ -478,7 +504,7 @@ quite crunchy algorithms, has the fastest possible access to the layout.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">DIRECTION_INF</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, *</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::get_references</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, &</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tm.html#SP5" class="function-link"><span class="function-syntax">PL::Map::get_map_references</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, &</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">dir</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</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">infs1</span><span class="plain-syntax">) </span><span class="identifier-syntax">to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs1</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">infs2</span><span class="plain-syntax">) </span><span class="identifier-syntax">dir</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">);</span>
|
||||
|
@ -493,18 +519,18 @@ quite crunchy algorithms, has the fastest possible access to the layout.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP22" class="paragraph-anchor"></a><b>§22. </b>This is easy to translate into I6 (though that's partly because I7 doesn't
|
||||
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§21. </b>This is easy to translate into I6 (though that's partly because I7 doesn't
|
||||
follow the traditional I6 library way to represent the map):
|
||||
</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">PL::Map::map_compile_model_tables</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_compile_model_tables</span></span>:<br/><a href="3-tm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP22_1" class="named-paragraph-link"><span class="named-paragraph">Declare I6 constants for the directions</span><span class="named-paragraph-number">22.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP22_2" class="named-paragraph-link"><span class="named-paragraph">Compile the I6 Map-Storage array</span><span class="named-paragraph-number">22.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::map_compile_model_tables</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_compile_model_tables</span></span>:<br/><a href="3-tm.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP21_1" class="named-paragraph-link"><span class="named-paragraph">Declare I6 constants for the directions</span><span class="named-paragraph-number">21.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP21_2" class="named-paragraph-link"><span class="named-paragraph">Compile the I6 Map-Storage array</span><span class="named-paragraph-number">21.2</span></a></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>
|
||||
<p class="commentary firstcommentary"><a id="SP22_1" class="paragraph-anchor"></a><b>§22.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Declare I6 constants for the directions</span><span class="named-paragraph-number">22.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary firstcommentary"><a id="SP21_1" class="paragraph-anchor"></a><b>§21.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Declare I6 constants for the directions</span><span class="named-paragraph-number">21.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -517,15 +543,15 @@ follow the traditional I6 library way to represent the map):
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::named_iname_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-></span><span class="element-syntax">direction_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">, </span><span class="identifier-syntax">RTInstances::emitted_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP22">§22</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP22_2" class="paragraph-anchor"></a><b>§22.2. </b>The <span class="extract"><span class="extract-syntax">Map_Storage</span></span> array consists only of the <span class="extract"><span class="extract-syntax">exits</span></span> arrays written out
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP21">§21</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP21_2" class="paragraph-anchor"></a><b>§21.2. </b>The <span class="extract"><span class="extract-syntax">Map_Storage</span></span> array consists only of the <span class="extract"><span class="extract-syntax">exits</span></span> arrays written out
|
||||
one after another. It looks wasteful of memory, since it is almost always
|
||||
going to be filled mostly with <span class="extract"><span class="extract-syntax">0</span></span> entries (meaning: no exit that way). But
|
||||
the memory needs to be there because map connections can be added dynamically
|
||||
at run-time, so we can't know now how many we will need.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the I6 Map-Storage array</span><span class="named-paragraph-number">22.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the I6 Map-Storage array</span><span class="named-paragraph-number">21.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -565,8 +591,8 @@ at run-time, so we can't know now how many we will need.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::array_end</span><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP22">§22</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP23" class="paragraph-anchor"></a><b>§23. Door connectivity. </b>We've seen how most of the map is represented, in the <span class="extract"><span class="extract-syntax">exits</span></span> arrays. The
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP21">§21</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP22" class="paragraph-anchor"></a><b>§22. Door connectivity. </b>We've seen how most of the map is represented, in the <span class="extract"><span class="extract-syntax">exits</span></span> arrays. The
|
||||
missing information has to do with doors. If east of the Carousel Room is
|
||||
the oak door, then <span class="extract"><span class="extract-syntax">Map_Storage</span></span> reveals only that fact, and not what's on
|
||||
the other side of the door. This will eventually be compiled into the
|
||||
|
@ -575,12 +601,12 @@ object has four pieces of data attached:
|
|||
</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">PL::Map::get_door_data</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">PL::Map::get_door_data</span></span>:<br/><a href="3-tm.html#SP38">§38</a><br/>Spatial Model - <a href="3-sm.html#SP44">§44</a><br/>Spatial Map - <a href="3-sm2.html#SP7_16">§7.16</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">door</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> **</span><span class="identifier-syntax">c1</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> **</span><span class="identifier-syntax">c2</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::get_door_data</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">PL::Map::get_door_data</span></span>:<br/><a href="3-tm.html#SP37">§37</a><br/>Spatial Model - <a href="3-sm.html#SP44">§44</a><br/>Spatial Map - <a href="3-sm2.html#SP7_16">§7.16</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">door</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> **</span><span class="identifier-syntax">c1</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> **</span><span class="identifier-syntax">c2</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">c1</span><span class="plain-syntax">) *</span><span class="identifier-syntax">c1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">door</span><span class="plain-syntax">)-></span><span class="element-syntax">map_connection_a</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">c2</span><span class="plain-syntax">) *</span><span class="identifier-syntax">c2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">door</span><span class="plain-syntax">)-></span><span class="element-syntax">map_connection_b</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP24" class="paragraph-anchor"></a><b>§24. Properties. </b>These are property names to do with mapping which Inform provides special
|
||||
<p class="commentary firstcommentary"><a id="SP23" class="paragraph-anchor"></a><b>§23. Properties. </b>These are property names to do with mapping which Inform provides special
|
||||
support for; it recognises the English names when they are defined by the
|
||||
Standard Rules. (So there is no need to translate this to other languages.)
|
||||
</p>
|
||||
|
@ -591,10 +617,10 @@ Standard Rules. (So there is no need to translate this to other languages.)
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">other</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">side</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP25" class="paragraph-anchor"></a><b>§25. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP24" class="paragraph-anchor"></a><b>§24. </b></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">PL::Map::map_new_property_notify</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_new_property_notify</span></span>:<br/><a href="3-tm.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>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::map_new_property_notify</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_new_property_notify</span></span>:<br/><a href="3-tm.html#SP8">§8</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">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><notable-map-properties>(prn-></span><span class="element-syntax">name</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="function-syntax"><<r>></span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">: </span><span class="identifier-syntax">P_opposite</span><span class="plain-syntax"> = </span><span class="identifier-syntax">prn</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
@ -604,7 +630,7 @@ Standard Rules. (So there is no need to translate this to other languages.)
|
|||
<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>
|
||||
<p class="commentary firstcommentary"><a id="SP26" class="paragraph-anchor"></a><b>§26. </b>We would like to deduce from a sentence like
|
||||
<p class="commentary firstcommentary"><a id="SP25" class="paragraph-anchor"></a><b>§25. </b>We would like to deduce from a sentence like
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
|
@ -617,18 +643,15 @@ deduction is made:
|
|||
</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">PL::Map::map_property_value_notify</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_property_value_notify</span></span>:<br/><a href="3-tm.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><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::map_property_value_notify</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_property_value_notify</span></span>:<br/><a href="3-tm.html#SP8">§8</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="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</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">P_other_side</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</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">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">IS_ROOM_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</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">I</span><span class="plain-syntax">) </span><a href="3-sm.html#SP4" class="function-link"><span class="function-syntax">PL::Spatial::infer_is_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</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>
|
||||
<p class="commentary firstcommentary"><a id="SP27" class="paragraph-anchor"></a><b>§27. </b>The I6 <span class="extract"><span class="extract-syntax">found_in</span></span> property is a general mechanism for multiply-present
|
||||
<p class="commentary firstcommentary"><a id="SP26" class="paragraph-anchor"></a><b>§26. </b>The I6 <span class="extract"><span class="extract-syntax">found_in</span></span> property is a general mechanism for multiply-present
|
||||
objects. This causes great complications, and I7 simplifies the model world
|
||||
by hiding it from the author, and using it internally to implement backdrops
|
||||
and two-sided doors. Two different plugins therefore need access to it (this
|
||||
|
@ -636,42 +659,42 @@ one and Backdrops), and this is where they set it.
|
|||
</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">PL::Map::set_found_in</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">PL::Map::set_found_in</span></span>:<br/><a href="3-tm.html#SP36_8_1">§36.8.1</a><br/>Backdrops - <a href="3-bck.html#SP17">§17</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::set_found_in</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">PL::Map::set_found_in</span></span>:<br/><a href="3-tm.html#SP35_8_1">§35.8.1</a><br/>Backdrops - <a href="3-bck.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</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">P_found_in</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">P_found_in</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::Valued::new_nameless</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"found_in"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">K_value</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">Inferences::get_prop_state</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">PropertyInferences::get_prop_state</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_found_in</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">"rival found_in interpretations"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::Valued::assert</span><span class="plain-syntax">(</span><span class="identifier-syntax">P_found_in</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Rvalues::from_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP28" class="paragraph-anchor"></a><b>§28. </b>This utility routine which looks for the "opposite"
|
||||
<p class="commentary firstcommentary"><a id="SP27" class="paragraph-anchor"></a><b>§27. </b>This utility routine which looks for the "opposite"
|
||||
property in the linked list of inferences belonging to an object.
|
||||
(This is a property of directions.) Crude, but not time-sensitive,
|
||||
and there seems little point in writing this any better.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Map::get_value_of_opposite_property</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">PL::Map::get_value_of_opposite_property</span></span>:<br/><a href="3-tm.html#SP35">§35</a>, <a href="3-tm.html#SP36_8_4">§36.8.4</a>, <a href="3-tm.html#SP37">§37</a><br/>Spatial Map - <a href="3-sm2.html#SP42_1">§42.1</a>, <a href="3-sm2.html#SP42_3">§42.3</a>, <a href="3-sm2.html#SP44">§44</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_prop_state</span><span class="plain-syntax">(</span>
|
||||
<span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Map::get_value_of_opposite_property</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">PL::Map::get_value_of_opposite_property</span></span>:<br/><a href="3-tm.html#SP34">§34</a>, <a href="3-tm.html#SP35_8_4">§35.8.4</a>, <a href="3-tm.html#SP36">§36</a><br/>Spatial Map - <a href="3-sm2.html#SP42_1">§42.1</a>, <a href="3-sm2.html#SP42_3">§42.3</a>, <a href="3-sm2.html#SP44">§44</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PropertyInferences::get_prop_state</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_opposite</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">val</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Rvalues::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</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">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP29" class="paragraph-anchor"></a><b>§29. </b>This really is very approximate, but:
|
||||
<p class="commentary firstcommentary"><a id="SP28" class="paragraph-anchor"></a><b>§28. </b>This really is very approximate, but:
|
||||
</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">PL::Map::map_estimate_property_usage</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_estimate_property_usage</span></span>:<br/><a href="3-tm.html#SP7">§7</a></span></button><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="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">words_used</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::map_estimate_property_usage</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_estimate_property_usage</span></span>:<br/><a href="3-tm.html#SP8">§8</a></span></button><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="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">words_used</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::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_door</span><span class="plain-syntax">)) *</span><span class="identifier-syntax">words_used</span><span class="plain-syntax"> += </span><span class="constant-syntax">14</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::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">)) *</span><span class="identifier-syntax">words_used</span><span class="plain-syntax"> += </span><span class="constant-syntax">2</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>
|
||||
<p class="commentary firstcommentary"><a id="SP30" class="paragraph-anchor"></a><b>§30. Linguistic extras. </b>These NPs allow us to refer to the special directions "up" and "down":
|
||||
<p class="commentary firstcommentary"><a id="SP29" class="paragraph-anchor"></a><b>§29. Linguistic extras. </b>These NPs allow us to refer to the special directions "up" and "down":
|
||||
</p>
|
||||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
|
@ -680,10 +703,10 @@ and there seems little point in writing this any better.
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">above</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This is <a href="../words-module/4-ap.html" class="internal">Preform grammar</a>, not regular C code.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP31" class="paragraph-anchor"></a><b>§31. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP30" class="paragraph-anchor"></a><b>§30. </b></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">PL::Map::map_act_on_special_NPs</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_act_on_special_NPs</span></span>:<br/><a href="3-tm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::map_act_on_special_NPs</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_act_on_special_NPs</span></span>:<br/><a href="3-tm.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><notable-map-noun-phrases></span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="function-syntax"><<r>></span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span><span class="plain-syntax">:</span>
|
||||
|
@ -703,11 +726,11 @@ and there seems little point in writing this any better.
|
|||
<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>
|
||||
<p class="commentary firstcommentary"><a id="SP32" class="paragraph-anchor"></a><b>§32. </b>We also add some optional clauses to the "going" action:
|
||||
<p class="commentary firstcommentary"><a id="SP31" class="paragraph-anchor"></a><b>§31. </b>We also add some optional clauses to the "going" action:
|
||||
</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">PL::Map::map_check_going</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_check_going</span></span>:<br/><a href="3-tm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::map_check_going</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_check_going</span></span>:<br/><a href="3-tm.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">by</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">through</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pushing</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-ap.html#SP5" class="function-link"><span class="function-syntax">PL::Actions::Patterns::check_going</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="string-syntax">"from"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_region</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">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
@ -722,7 +745,7 @@ and there seems little point in writing this any better.
|
|||
<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>
|
||||
<p class="commentary firstcommentary"><a id="SP33" class="paragraph-anchor"></a><b>§33. </b>Consider the sentences:
|
||||
<p class="commentary firstcommentary"><a id="SP32" class="paragraph-anchor"></a><b>§32. </b>Consider the sentences:
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
|
@ -749,13 +772,13 @@ because, of course, that does set its kind.
|
|||
</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">PL::Map::map_intervene_in_assertion</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_intervene_in_assertion</span></span>:<br/><a href="3-tm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">py</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::map_intervene_in_assertion</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_intervene_in_assertion</span></span>:<br/><a href="3-tm.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">py</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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">) == </span><span class="identifier-syntax">PROPER_NOUN_NT</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">) == </span><span class="identifier-syntax">COMMON_NOUN_NT</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">left_object</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">right_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-tm.html#SP17" class="function-link"><span class="function-syntax">PL::Map::is_a_direction</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">left_object</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="3-tm.html#SP17" class="function-link"><span class="function-syntax">PL::Map::is_a_direction</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_kind</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">if</span><span class="plain-syntax"> ((</span><a href="3-tm.html#SP16" class="function-link"><span class="function-syntax">PL::Map::is_a_direction</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">left_object</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="3-tm.html#SP16" class="function-link"><span class="function-syntax">PL::Map::is_a_direction</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_kind</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">Assertions::Creator::convert_instance_to_nounphrase</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</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>
|
||||
|
@ -769,7 +792,7 @@ because, of course, that does set its kind.
|
|||
<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>
|
||||
<p class="commentary firstcommentary"><a id="SP34" class="paragraph-anchor"></a><b>§34. The map-connector. </b>Now we come to the code which creates map connections. This needs special
|
||||
<p class="commentary firstcommentary"><a id="SP33" class="paragraph-anchor"></a><b>§33. The map-connector. </b>Now we come to the code which creates map connections. This needs special
|
||||
treatment only so that asserting \(M(X, Y)\) also asserts \(M'(Y, X)\), where
|
||||
\(M'\) is the predicate for the opposite direction to \(M\); but since this
|
||||
is only a guess, it drops from <span class="extract"><span class="extract-syntax">CERTAIN_CE</span></span> to merely <span class="extract"><span class="extract-syntax">LIKELY_CE</span></span>.
|
||||
|
@ -784,7 +807,7 @@ make this guess; so we begin with switching in and out.
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::enter_one_way_mode</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) { </span><span class="identifier-syntax">oneway_map_connections_only</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">; }</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::exit_one_way_mode</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) { </span><span class="identifier-syntax">oneway_map_connections_only</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">; }</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP35" class="paragraph-anchor"></a><b>§35. </b>Note that, in order to make the conjectural reverse map direction, we need
|
||||
<p class="commentary firstcommentary"><a id="SP34" class="paragraph-anchor"></a><b>§34. </b>Note that, in order to make the conjectural reverse map direction, we need
|
||||
to look up the "opposite" property of the forward one. This relies on all
|
||||
directions having their opposites defined before any map is built, and is the
|
||||
reason for Inform's insistence that directions are always created in matched
|
||||
|
@ -799,7 +822,7 @@ pairs.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">forwards_dir</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">i_dir</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">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">forwards_dir</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_direction</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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"unknown direction"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">reverse_dir</span><span class="plain-syntax"> = </span><a href="3-tm.html#SP28" class="function-link"><span class="function-syntax">PL::Map::get_value_of_opposite_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">forwards_dir</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">reverse_dir</span><span class="plain-syntax"> = </span><a href="3-tm.html#SP27" class="function-link"><span class="function-syntax">PL::Map::get_value_of_opposite_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">forwards_dir</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">go_from</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">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_object</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">forwards_dir</span><span class="plain-syntax">);</span>
|
||||
|
@ -812,7 +835,7 @@ pairs.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="3-tm.html#SP35" class="function-link"><span class="function-syntax">PL::Map::oneway_map_connection</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">go_from</span><span class="plain-syntax">, </span><span class="identifier-syntax">go_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">forwards_dir</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tm.html#SP34" class="function-link"><span class="function-syntax">PL::Map::oneway_map_connection</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">go_from</span><span class="plain-syntax">, </span><span class="identifier-syntax">go_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">forwards_dir</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</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">reverse_dir</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">go_to</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">oneway_map_connections_only</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">reverse_dir</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_direction</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">Problems::quote_object</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">forwards_dir</span><span class="plain-syntax">);</span>
|
||||
|
@ -825,7 +848,7 @@ pairs.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"which doesn't make sense since %2 isn't a direction. (Maybe "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"you forgot to say that it was?)"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="3-tm.html#SP35" class="function-link"><span class="function-syntax">PL::Map::oneway_map_connection</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">go_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">go_from</span><span class="plain-syntax">, </span><span class="identifier-syntax">reverse_dir</span><span class="plain-syntax">, </span><span class="identifier-syntax">LIKELY_CE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="3-tm.html#SP34" class="function-link"><span class="function-syntax">PL::Map::oneway_map_connection</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">go_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">go_from</span><span class="plain-syntax">, </span><span class="identifier-syntax">reverse_dir</span><span class="plain-syntax">, </span><span class="identifier-syntax">LIKELY_CE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -841,41 +864,41 @@ pairs.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax"> = </span><span class="identifier-syntax">x</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP36" class="paragraph-anchor"></a><b>§36. Model completion. </b>And here begins the fun. It's not as easy to write down the requirements for
|
||||
<p class="commentary firstcommentary"><a id="SP35" class="paragraph-anchor"></a><b>§35. Model completion. </b>And here begins the fun. It's not as easy to write down the requirements for
|
||||
the map as might be thought.
|
||||
</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">PL::Map::map_complete_model</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_complete_model</span></span>:<br/><a href="3-tm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::map_complete_model</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_complete_model</span></span>:<br/><a href="3-tm.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">stage</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span><span class="plain-syntax">:</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP36_1" class="named-paragraph-link"><span class="named-paragraph">Give each room a room-index property as workspace for route finding</span><span class="named-paragraph-number">36.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP36_2" class="named-paragraph-link"><span class="named-paragraph">Ensure that map connections are room-to-room, room-to-door or door-to-room</span><span class="named-paragraph-number">36.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP35_1" class="named-paragraph-link"><span class="named-paragraph">Give each room a room-index property as workspace for route finding</span><span class="named-paragraph-number">35.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP35_2" class="named-paragraph-link"><span class="named-paragraph">Ensure that map connections are room-to-room, room-to-door or door-to-room</span><span class="named-paragraph-number">35.2</span></a></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">problem_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP36_3" class="named-paragraph-link"><span class="named-paragraph">Ensure that every door has either one or two connections from it</span><span class="named-paragraph-number">36.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP35_3" class="named-paragraph-link"><span class="named-paragraph">Ensure that every door has either one or two connections from it</span><span class="named-paragraph-number">35.3</span></a></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">problem_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP36_4" class="named-paragraph-link"><span class="named-paragraph">Ensure that no door has spurious other connections to it</span><span class="named-paragraph-number">36.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP35_4" class="named-paragraph-link"><span class="named-paragraph">Ensure that no door has spurious other connections to it</span><span class="named-paragraph-number">35.4</span></a></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">problem_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP36_5" class="named-paragraph-link"><span class="named-paragraph">Ensure that no door uses both map connections and other side</span><span class="named-paragraph-number">36.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP35_5" class="named-paragraph-link"><span class="named-paragraph">Ensure that no door uses both map connections and other side</span><span class="named-paragraph-number">35.5</span></a></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">problem_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP36_6" class="named-paragraph-link"><span class="named-paragraph">Ensure that no door is present in a room to which it does not connect</span><span class="named-paragraph-number">36.6</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP35_6" class="named-paragraph-link"><span class="named-paragraph">Ensure that no door is present in a room to which it does not connect</span><span class="named-paragraph-number">35.6</span></a></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">problem_count</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP36_7" class="named-paragraph-link"><span class="named-paragraph">Place any one-sided door inside the room which connects to it</span><span class="named-paragraph-number">36.7</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP36_8" class="named-paragraph-link"><span class="named-paragraph">Assert found-in, door-to and door-dir properties for doors</span><span class="named-paragraph-number">36.8</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP35_7" class="named-paragraph-link"><span class="named-paragraph">Place any one-sided door inside the room which connects to it</span><span class="named-paragraph-number">35.7</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP35_8" class="named-paragraph-link"><span class="named-paragraph">Assert found-in, door-to and door-dir properties for doors</span><span class="named-paragraph-number">35.8</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax">: </span><a href="3-tm.html#SP21" class="function-link"><span class="function-syntax">PL::Map::build_exits_array</span></a><span class="plain-syntax">(); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span><span class="plain-syntax">: </span><a href="3-tm.html#SP20" class="function-link"><span class="function-syntax">PL::Map::build_exits_array</span></a><span class="plain-syntax">(); </span><span class="reserved-syntax">break</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>
|
||||
<p class="commentary firstcommentary"><a id="SP36_1" class="paragraph-anchor"></a><b>§36.1. </b>Every room has a <span class="extract"><span class="extract-syntax">room_index</span></span> property. It has no meaningful contents at
|
||||
<p class="commentary firstcommentary"><a id="SP35_1" class="paragraph-anchor"></a><b>§35.1. </b>Every room has a <span class="extract"><span class="extract-syntax">room_index</span></span> property. It has no meaningful contents at
|
||||
the start of play, and we initialise to \(-1\) since this marks the route-finding
|
||||
cache as being broken. (Route-finding is one of the few really time-critical
|
||||
tasks at run-time, which is why we keep complicating the I7 code to
|
||||
accommodate it.)
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Give each room a room-index property as workspace for route finding</span><span class="named-paragraph-number">36.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Give each room a room-index property as workspace for route finding</span><span class="named-paragraph-number">35.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -888,12 +911,12 @@ accommodate it.)
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::Valued::assert</span><span class="plain-syntax">(</span><span class="identifier-syntax">P_room_index</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">minus_one</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP36">§36</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP36_2" class="paragraph-anchor"></a><b>§36.2. </b>The following code does little if the source is correct: it mostly
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP35">§35</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP35_2" class="paragraph-anchor"></a><b>§35.2. </b>The following code does little if the source is correct: it mostly
|
||||
checks that various mapping impossibilities do not occur.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Ensure that map connections are room-to-room, room-to-door or door-to-room</span><span class="named-paragraph-number">36.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Ensure that map connections are room-to-room, room-to-door or door-to-room</span><span class="named-paragraph-number">35.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -902,10 +925,10 @@ checks that various mapping impossibilities do not occur.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">DIRECTION_INF</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::get_references</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tm.html#SP5" class="function-link"><span class="function-syntax">PL::Map::get_map_references</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &</span><span class="identifier-syntax">infs1</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">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-sm.html#SP15" class="function-link"><span class="function-syntax">PL::Spatial::object_is_a_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">to</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="3-tm.html#SP16" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="3-tm.html#SP15" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="3-sm.html#SP15" class="function-link"><span class="function-syntax">PL::Spatial::object_is_a_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</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">StandardProblems::contradiction_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_BadMapCell</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::get_creating_sentence</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">),</span>
|
||||
|
@ -913,7 +936,7 @@ checks that various mapping impossibilities do not occur.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"appears to be something which can be reached via a map "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"connection, but it seems to be neither a room nor a door"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"and these are the only possibilities allowed by Inform."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-tm.html#SP16" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-tm.html#SP15" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="3-sm.html#SP15" class="function-link"><span class="function-syntax">PL::Spatial::object_is_a_room</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</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">StandardProblems::object_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_DoorToNonRoom</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">,</span>
|
||||
|
@ -923,14 +946,14 @@ checks that various mapping impossibilities do not occur.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP36">§36</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP36_3" class="paragraph-anchor"></a><b>§36.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Ensure that every door has either one or two connections from it</span><span class="named-paragraph-number">36.3</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP35">§35</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP35_3" class="paragraph-anchor"></a><b>§35.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Ensure that every door has either one or two connections from it</span><span class="named-paragraph-number">35.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-tm.html#SP16" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-tm.html#SP15" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">connections_in</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">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">where</span><span class="plain-syntax">[3];</span>
|
||||
|
@ -938,7 +961,7 @@ checks that various mapping impossibilities do not occur.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">front_side_inf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">back_side_inf</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">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">DIRECTION_INF</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, *</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::get_references</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, &</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tm.html#SP5" class="function-link"><span class="function-syntax">PL::Map::get_map_references</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, &</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dir</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs2</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">to</span><span class="plain-syntax">) {</span>
|
||||
|
@ -971,12 +994,12 @@ checks that various mapping impossibilities do not occur.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PX</span><span class="plain-syntax"> = </span><span class="identifier-syntax">where</span><span class="plain-syntax">[0]; </span><span class="identifier-syntax">where</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">where</span><span class="plain-syntax">[1]; </span><span class="identifier-syntax">where</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">PX</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">connections_in</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP36_3_1" class="named-paragraph-link"><span class="named-paragraph">Issue a problem message for a stranded door</span><span class="named-paragraph-number">36.3.1</span></a></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">connections_in</span><span class="plain-syntax"> > </span><span class="constant-syntax">2</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP36_3_2" class="named-paragraph-link"><span class="named-paragraph">Issue a problem message for an overactive door</span><span class="named-paragraph-number">36.3.2</span></a></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">connections_in</span><span class="plain-syntax"> == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP35_3_1" class="named-paragraph-link"><span class="named-paragraph">Issue a problem message for a stranded door</span><span class="named-paragraph-number">35.3.1</span></a></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">connections_in</span><span class="plain-syntax"> > </span><span class="constant-syntax">2</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP35_3_2" class="named-paragraph-link"><span class="named-paragraph">Issue a problem message for an overactive door</span><span class="named-paragraph-number">35.3.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP36">§36</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP36_3_1" class="paragraph-anchor"></a><b>§36.3.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue a problem message for a stranded door</span><span class="named-paragraph-number">36.3.1</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP35">§35</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP35_3_1" class="paragraph-anchor"></a><b>§35.3.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue a problem message for a stranded door</span><span class="named-paragraph-number">35.3.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -987,8 +1010,8 @@ checks that various mapping impossibilities do not occur.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"on each side. You could do this by writing something like 'The blue door is "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"east of the Library and west of the Conservatory'."</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP36_3">§36.3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP36_3_2" class="paragraph-anchor"></a><b>§36.3.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue a problem message for an overactive door</span><span class="named-paragraph-number">36.3.2</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP35_3">§35.3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP35_3_2" class="paragraph-anchor"></a><b>§35.3.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue a problem message for an overactive door</span><span class="named-paragraph-number">35.3.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -1005,15 +1028,15 @@ checks that various mapping impossibilities do not occur.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"you really need a three-sided cavity, best to make it a room in its own right."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP36_3">§36.3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP36_4" class="paragraph-anchor"></a><b>§36.4. </b>Since map connections are not always reversible (only most of the time), we
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP35_3">§35.3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP35_4" class="paragraph-anchor"></a><b>§35.4. </b>Since map connections are not always reversible (only most of the time), we
|
||||
can't assume that having at most two ways out means there are at most two ways
|
||||
in. So we check here that any way in to a door corresponds to one of its ways
|
||||
out. (The reverse need not be true: it's possible for a door to lead to a room
|
||||
from which there's no way back.)
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Ensure that no door has spurious other connections to it</span><span class="named-paragraph-number">36.4</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Ensure that no door has spurious other connections to it</span><span class="named-paragraph-number">35.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -1023,9 +1046,9 @@ from which there's no way back.)
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">DIRECTION_INF</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::get_references</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tm.html#SP5" class="function-link"><span class="function-syntax">PL::Map::get_map_references</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &</span><span class="identifier-syntax">infs1</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">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-tm.html#SP16" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-tm.html#SP15" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">exit1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">)-></span><span class="element-syntax">map_connection_a</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">exit2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">)-></span><span class="element-syntax">map_connection_b</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">I</span><span class="plain-syntax"> != </span><span class="identifier-syntax">exit1</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">exit2</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) {</span>
|
||||
|
@ -1056,17 +1079,17 @@ from which there's no way back.)
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP36">§36</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP36_5" class="paragraph-anchor"></a><b>§36.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Ensure that no door uses both map connections and other side</span><span class="named-paragraph-number">36.5</span></span><span class="comment-syntax"> =</span>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP35">§35</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP35_5" class="paragraph-anchor"></a><b>§35.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Ensure that no door uses both map connections and other side</span><span class="named-paragraph-number">35.5</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-tm.html#SP16" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-tm.html#SP15" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-></span><span class="element-syntax">map_connection_a</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-></span><span class="element-syntax">map_connection_b</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Inferences::get_prop_state</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">PropertyInferences::get_prop_state</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_other_side</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::object_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_BothWaysDoor</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="string-syntax">"seems to be a door whose connections have been given in both "</span>
|
||||
|
@ -1076,8 +1099,8 @@ from which there's no way back.)
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"way to set up a one-sided door). As a door can't be both one- and "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"two-sided at once, I'm going to object to this."</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP36">§36</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP36_6" class="paragraph-anchor"></a><b>§36.6. </b>The Spatial model requires that rooms are free-standing, that is, not in, on
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP35">§35</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP35_6" class="paragraph-anchor"></a><b>§35.6. </b>The Spatial model requires that rooms are free-standing, that is, not in, on
|
||||
or part of anything else; but it knows nothing of doors. So if we are not
|
||||
careful, the source text could put a door on a shelf, or make it part of a
|
||||
robot, or something like that. (Testing showed, in fact, that some authors
|
||||
|
@ -1085,13 +1108,13 @@ actually wanted to do this, though the result was a horribly inconsistent
|
|||
model at run-time.) This is where we apply the kill-joy rule in question:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Ensure that no door is present in a room to which it does not connect</span><span class="named-paragraph-number">36.6</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Ensure that no door is present in a room to which it does not connect</span><span class="named-paragraph-number">35.6</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-tm.html#SP16" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-tm.html#SP15" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="3-sm.html#SP30" class="function-link"><span class="function-syntax">PL::Spatial::progenitor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="3-sm.html#SP30" class="function-link"><span class="function-syntax">PL::Spatial::progenitor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">) != </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-></span><span class="element-syntax">map_connection_a</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="3-sm.html#SP30" class="function-link"><span class="function-syntax">PL::Spatial::progenitor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">) != </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-></span><span class="element-syntax">map_connection_b</span><span class="plain-syntax">))</span>
|
||||
|
@ -1100,31 +1123,31 @@ model at run-time.) This is where we apply the kill-joy rule in question:
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"but this is not allowed. A door must be in one or both of the rooms it is "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"between, but not in a third place altogether."</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP36">§36</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP36_7" class="paragraph-anchor"></a><b>§36.7. </b>We don't need to do the following for two-sided doors since they will bypass
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP35">§35</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP35_7" class="paragraph-anchor"></a><b>§35.7. </b>We don't need to do the following for two-sided doors since they will bypass
|
||||
the object tree and use I6's <span class="extract"><span class="extract-syntax">found_in</span></span> to be present in both rooms connecting
|
||||
to them.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Place any one-sided door inside the room which connects to it</span><span class="named-paragraph-number">36.7</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Place any one-sided door inside the room which connects to it</span><span class="named-paragraph-number">35.7</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-tm.html#SP16" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-tm.html#SP15" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-></span><span class="element-syntax">map_connection_b</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="3-sm.html#SP30" class="function-link"><span class="function-syntax">PL::Spatial::progenitor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><a href="3-sm.html#SP30" class="function-link"><span class="function-syntax">PL::Spatial::set_progenitor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-></span><span class="element-syntax">map_connection_a</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP36">§36</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP36_8" class="paragraph-anchor"></a><b>§36.8. </b>At this point we know that the doors are correctly plumbed in, and all we
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP35">§35</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP35_8" class="paragraph-anchor"></a><b>§35.8. </b>At this point we know that the doors are correctly plumbed in, and all we
|
||||
need to do is compile properties to implement them. See the DM4 for details
|
||||
of how to compile one and two-sided doors in I6. Alternatively, take it on
|
||||
trust that there is nothing surprising here.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert found-in, door-to and door-dir properties for doors</span><span class="named-paragraph-number">36.8</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert found-in, door-to and door-dir properties for doors</span><span class="named-paragraph-number">35.8</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -1135,7 +1158,7 @@ trust that there is nothing surprising here.
|
|||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_object</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-tm.html#SP16" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-tm.html#SP15" class="function-link"><span class="function-syntax">PL::Map::object_is_a_door</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::EitherOr::assert</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">P_door</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-></span><span class="element-syntax">map_connection_a</span><span class="plain-syntax">;</span>
|
||||
|
@ -1143,19 +1166,19 @@ trust that there is nothing surprising here.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-></span><span class="element-syntax">map_direction_a</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-></span><span class="element-syntax">map_direction_b</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">R1</span><span class="plain-syntax"> && </span><span class="identifier-syntax">R2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP36_8_1" class="named-paragraph-link"><span class="named-paragraph">Assert found-in for a two-sided door</span><span class="named-paragraph-number">36.8.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP36_8_2" class="named-paragraph-link"><span class="named-paragraph">Assert door-dir for a two-sided door</span><span class="named-paragraph-number">36.8.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP36_8_3" class="named-paragraph-link"><span class="named-paragraph">Assert door-to for a two-sided door</span><span class="named-paragraph-number">36.8.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP35_8_1" class="named-paragraph-link"><span class="named-paragraph">Assert found-in for a two-sided door</span><span class="named-paragraph-number">35.8.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP35_8_2" class="named-paragraph-link"><span class="named-paragraph">Assert door-dir for a two-sided door</span><span class="named-paragraph-number">35.8.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP35_8_3" class="named-paragraph-link"><span class="named-paragraph">Assert door-to for a two-sided door</span><span class="named-paragraph-number">35.8.3</span></a></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">R1</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP36_8_4" class="named-paragraph-link"><span class="named-paragraph">Assert door-dir for a one-sided door</span><span class="named-paragraph-number">36.8.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tm.html#SP35_8_4" class="named-paragraph-link"><span class="named-paragraph">Assert door-dir for a one-sided door</span><span class="named-paragraph-number">35.8.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP36">§36</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP36_8_1" class="paragraph-anchor"></a><b>§36.8.1. </b>Here <span class="extract"><span class="extract-syntax">found_in</span></span> is a two-entry list.
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP35">§35</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP35_8_1" class="paragraph-anchor"></a><b>§35.8.1. </b>Here <span class="extract"><span class="extract-syntax">found_in</span></span> is a two-entry list.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert found-in for a two-sided door</span><span class="named-paragraph-number">36.8.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert found-in for a two-sided door</span><span class="named-paragraph-number">35.8.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -1166,14 +1189,14 @@ trust that there is nothing surprising here.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::array_iname_entry</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTInstances::iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">R2</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::array_end</span><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::annotate_i</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">INLINE_ARRAY_IANN</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tm.html#SP27" class="function-link"><span class="function-syntax">PL::Map::set_found_in</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tm.html#SP26" class="function-link"><span class="function-syntax">PL::Map::set_found_in</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP36_8">§36.8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP36_8_2" class="paragraph-anchor"></a><b>§36.8.2. </b>Here <span class="extract"><span class="extract-syntax">door_dir</span></span> is a routine looking at the current location and returning
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP35_8">§35.8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP35_8_2" class="paragraph-anchor"></a><b>§35.8.2. </b>Here <span class="extract"><span class="extract-syntax">door_dir</span></span> is a routine looking at the current location and returning
|
||||
always the way to the other room — the one we are not in.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert door-dir for a two-sided door</span><span class="named-paragraph-number">36.8.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert door-dir for a two-sided door</span><span class="named-paragraph-number">35.8.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -1186,12 +1209,12 @@ always the way to the other room — the one we are not in.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::Valued::assert</span><span class="plain-syntax">(</span><span class="identifier-syntax">P_door_dir</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Rvalues::from_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">notice</span><span class="plain-syntax">-></span><span class="element-syntax">ddn_iname</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP36_8">§36.8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP36_8_3" class="paragraph-anchor"></a><b>§36.8.3. </b>Here <span class="extract"><span class="extract-syntax">door_to</span></span> is a routine looking at the current location and returning
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP35_8">§35.8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP35_8_3" class="paragraph-anchor"></a><b>§35.8.3. </b>Here <span class="extract"><span class="extract-syntax">door_to</span></span> is a routine looking at the current location and returning
|
||||
always the other room — the one we are not in.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert door-to for a two-sided door</span><span class="named-paragraph-number">36.8.3</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert door-to for a two-sided door</span><span class="named-paragraph-number">35.8.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -1203,8 +1226,8 @@ always the other room — the one we are not in.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::Valued::assert</span><span class="plain-syntax">(</span><span class="identifier-syntax">P_door_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Rvalues::from_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">notice</span><span class="plain-syntax">-></span><span class="element-syntax">dtn_iname</span><span class="plain-syntax">), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP36_8">§36.8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP36_8_4" class="paragraph-anchor"></a><b>§36.8.4. </b>The reversal of direction here looks peculiar, but is correct. Suppose
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP35_8">§35.8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP35_8_4" class="paragraph-anchor"></a><b>§35.8.4. </b>The reversal of direction here looks peculiar, but is correct. Suppose
|
||||
the Drainage Room contains a one-sided door called the iron grating, and
|
||||
the iron grating is east of the Drainage Room. To get through, the player
|
||||
will type EAST. But that means the iron grating has one exit, west to the
|
||||
|
@ -1217,17 +1240,17 @@ property for the door; "other side" is an alias for <span class="extract"><span
|
|||
why we don't need to compile <span class="extract"><span class="extract-syntax">door_to</span></span> here.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert door-dir for a one-sided door</span><span class="named-paragraph-number">36.8.4</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Assert door-dir for a one-sided door</span><span class="named-paragraph-number">35.8.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">backwards</span><span class="plain-syntax"> = </span><a href="3-tm.html#SP28" class="function-link"><span class="function-syntax">PL::Map::get_value_of_opposite_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">backwards</span><span class="plain-syntax"> = </span><a href="3-tm.html#SP27" class="function-link"><span class="function-syntax">PL::Map::get_value_of_opposite_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D1</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">backwards</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::Valued::assert</span><span class="plain-syntax">(</span><span class="identifier-syntax">P_door_dir</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Rvalues::from_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTInstances::emitted_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">backwards</span><span class="plain-syntax">)), </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP36_8">§36.8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP37" class="paragraph-anchor"></a><b>§37. Redeeming those notices. </b></p>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm.html#SP35_8">§35.8</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP36" class="paragraph-anchor"></a><b>§36. Redeeming those notices. </b></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">PL::Map::write_door_dir_routines</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
|
@ -1271,7 +1294,7 @@ why we don't need to compile <span class="extract"><span class="extract-syntax">
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">RETURN_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTInstances::iname</span><span class="plain-syntax">(</span><a href="3-tm.html#SP28" class="function-link"><span class="function-syntax">PL::Map::get_value_of_opposite_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">notice</span><span class="plain-syntax">-></span><span class="element-syntax">D1</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTInstances::iname</span><span class="plain-syntax">(</span><a href="3-tm.html#SP27" class="function-link"><span class="function-syntax">PL::Map::get_value_of_opposite_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">notice</span><span class="plain-syntax">-></span><span class="element-syntax">D1</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||
|
@ -1279,7 +1302,7 @@ why we don't need to compile <span class="extract"><span class="extract-syntax">
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">RETURN_BIP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_iname</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTInstances::iname</span><span class="plain-syntax">(</span><a href="3-tm.html#SP28" class="function-link"><span class="function-syntax">PL::Map::get_value_of_opposite_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">notice</span><span class="plain-syntax">-></span><span class="element-syntax">D2</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTInstances::iname</span><span class="plain-syntax">(</span><a href="3-tm.html#SP27" class="function-link"><span class="function-syntax">PL::Map::get_value_of_opposite_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">notice</span><span class="plain-syntax">-></span><span class="element-syntax">D2</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">());</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Routines::end</span><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
|
||||
|
@ -1340,26 +1363,26 @@ why we don't need to compile <span class="extract"><span class="extract-syntax">
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP38" class="paragraph-anchor"></a><b>§38. Indexing. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP37" class="paragraph-anchor"></a><b>§37. Indexing. </b></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">PL::Map::map_add_to_World_index</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_add_to_World_index</span></span>:<br/><a href="3-tm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">O</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::map_add_to_World_index</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_add_to_World_index</span></span>:<br/><a href="3-tm.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">O</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">O</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">O</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><a href="3-sm2.html#SP44" class="function-link"><span class="function-syntax">PL::SpatialMap::index_room_connections</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">O</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>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::map_annotate_in_World_index</span><button class="popup" onclick="togglePopup('usagePopup23')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup23">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_annotate_in_World_index</span></span>:<br/><a href="3-tm.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">O</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::map_annotate_in_World_index</span><button class="popup" onclick="togglePopup('usagePopup25')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup25">Usage of <span class="code-font"><span class="function-syntax">PL::Map::map_annotate_in_World_index</span></span>:<br/><a href="3-tm.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">O</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">O</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Instances::of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">O</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_door</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">B</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tm.html#SP23" class="function-link"><span class="function-syntax">PL::Map::get_door_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">O</span><span class="plain-syntax">, &</span><span class="identifier-syntax">A</span><span class="plain-syntax">, &</span><span class="identifier-syntax">B</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tm.html#SP22" class="function-link"><span class="function-syntax">PL::Map::get_door_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">O</span><span class="plain-syntax">, &</span><span class="identifier-syntax">A</span><span class="plain-syntax">, &</span><span class="identifier-syntax">B</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">A</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">B</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" - <i>door to "</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" - <i>one-sided door to "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">X</span><span class="plain-syntax"> = </span><span class="identifier-syntax">A</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">A</span><span class="plain-syntax"> == </span><span class="identifier-syntax">Data::Objects::room_being_indexed</span><span class="plain-syntax">()) </span><span class="identifier-syntax">X</span><span class="plain-syntax"> = </span><span class="identifier-syntax">B</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">X</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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_prop_state</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PropertyInferences::get_prop_state</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">O</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_other_side</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">X</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -225,7 +225,7 @@ fact, end.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::anchor_numbered</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">sc</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<b>The <i>%+W</i> scene</b>"</span><span class="plain-syntax">, </span><a href="3-scn.html#SP13" class="function-link"><span class="function-syntax">PL::Scenes::get_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::link</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-></span><span class="element-syntax">scene_declared_at</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">Inferences::get_EO_state</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">PropertyInferences::either_or_state</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-></span><span class="element-syntax">as_instance</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_recurring</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"&nbsp;&nbsp;<i>recurring</i>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
|
@ -417,7 +417,7 @@ on the initial call when <span class="extract"><span class="extract-syntax">dept
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">sc</span><span class="plain-syntax">-></span><span class="element-syntax">as_instance</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">Inferences::get_EO_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_recurring</span><span class="plain-syntax">) > </span><span class="identifier-syntax">UNKNOWN_CE</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">PropertyInferences::either_or_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_recurring</span><span class="plain-syntax">) > </span><span class="identifier-syntax">UNKNOWN_CE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tm2.html#SP3" class="function-link"><span class="function-syntax">PL::Scenes::Index::scene_icon_append</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Recurring"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-tm2.html#SP2">§2</a>.</li></ul>
|
||||
|
|
|
@ -191,7 +191,7 @@ a room called the Counting House").
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text_of_word_the</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Naming::object_takes_definite_article</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">PL::Naming::object_takes_definite_article</span></span>:<br/>The Map - <a href="3-tm.html#SP20">§20</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Naming::object_takes_definite_article</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">PL::Naming::object_takes_definite_article</span></span>:<br/>The Map - <a href="3-tm.html#SP19">§19</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</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">text_of_word_the</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">text_of_word_the</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Rvalues::from_wording</span><span class="plain-syntax">(</span><span class="identifier-syntax">Feeds::feed_C_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="string-syntax">"\"the\""</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::Valued::assert</span><span class="plain-syntax">(</span><span class="identifier-syntax">P_article</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_of_word_the</span><span class="plain-syntax">, </span><span class="identifier-syntax">LIKELY_CE</span><span class="plain-syntax">);</span>
|
||||
|
@ -205,9 +205,9 @@ a room called the Counting House").
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Naming::transfer_details</span><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">to</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wto</span><span class="plain-syntax"> = </span><span class="identifier-syntax">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">to</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">wto</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">Inferences::get_EO_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_proper_named</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</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">PropertyInferences::either_or_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_proper_named</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tnt.html#SP6" class="function-link"><span class="function-syntax">PL::Naming::now_has_proper_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">to</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">art</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_prop_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_article</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">art</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PropertyInferences::get_prop_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_article</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">art</span><span class="plain-syntax">) </span><span class="identifier-syntax">Properties::Valued::assert</span><span class="plain-syntax">(</span><span class="identifier-syntax">P_article</span><span class="plain-syntax">, </span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">art</span><span class="plain-syntax">, </span><span class="identifier-syntax">LIKELY_CE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -224,7 +224,7 @@ we do here is provide its state on request.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Naming::object_is_privately_named</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">PL::Naming::object_is_privately_named</span></span>:<br/>Grammar Properties - <a href="5-gp.html#SP10_1">§10.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">certainty</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_EO_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_privately_named</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">certainty</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PropertyInferences::either_or_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_privately_named</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">certainty</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</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><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">certainty</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</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">NOT_APPLICABLE</span><span class="plain-syntax">;</span>
|
||||
|
@ -369,7 +369,7 @@ actually means it's rarely needed.)
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">this_is_named_for_something_with_a_printed_name</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tnt.html#SP10_1_2_2_2" class="named-paragraph-link"><span class="named-paragraph">Compose the I6 cap-short-name as a routine dynamically using its owner's cap-short-name</span><span class="named-paragraph-number">10.1.2.2.2</span></a></span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</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">Inferences::get_EO_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_proper_named</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</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">PropertyInferences::either_or_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_proper_named</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">begins_with_lower_case</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-tnt.html#SP10_1_2_2_1" class="named-paragraph-link"><span class="named-paragraph">Compose the I6 cap-short-name as a piece of text</span><span class="named-paragraph-number">10.1.2.2.1</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">set_csn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
@ -456,7 +456,7 @@ together in lists.
|
|||
<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">Kinds::Behaviour::is_object_of_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_room</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">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_thing</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">Inferences::get_prop_state_without_inheritance</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">PropertyInferences::get_prop_state_without_inheritance</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_printed_plural_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NULL</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">PW</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">PROP</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
|
||||
|
@ -474,7 +474,7 @@ together in lists.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_prop_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_grammatical_gender</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PropertyInferences::get_prop_state</span><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_grammatical_gender</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">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">g</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Annotations::read_int</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">constant_enumeration_ANNOT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">g</span><span class="plain-syntax">) {</span>
|
||||
|
@ -658,7 +658,7 @@ this because we need access to it very quickly when parsing text substitutions.)
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">adaptive_person</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">adaptive_person</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">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">adaptive_person</span><span class="plain-syntax"> == -1) && (</span><span class="identifier-syntax">P_adaptive_text_viewpoint</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">nl_instance</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Inferences::get_prop_state</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PropertyInferences::get_prop_state</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">P_adaptive_text_viewpoint</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">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">CONSTANT_NT</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">V</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_constant_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -469,7 +469,7 @@ an action.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">spec</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">PL::Actions::Patterns::check_going</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::check_going</span></span>:<br/>The Map - <a href="3-tm.html#SP32">§32</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">keyword</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::Patterns::check_going</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::Patterns::check_going</span></span>:<br/>The Map - <a href="3-tm.html#SP31">§31</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">keyword</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">ka</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kb</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">spec</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</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><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Specifications::is_description_like</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">)) {</span>
|
||||
|
|
|
@ -104,7 +104,7 @@ prefaced "(of a rulebook)", "(of an activity)", and so on.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-adj.html#SP1">§1</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ins.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresscurrent">adj</li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progressnext"><a href="2-vrb.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ins.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresscurrent">adj</li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progressnext"><a href="2-vrb.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -472,7 +472,7 @@ and we need to search fairly seldom:
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-dr.html#SP12">§12</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ifs.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresscurrent">dr</li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progressnext"><a href="2-li.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ifs.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresscurrent">dr</li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progressnext"><a href="2-li.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -379,7 +379,7 @@ dictionary.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ki.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresscurrent">ie</li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progressnext"><a href="2-ih.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ki.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresscurrent">ie</li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progressnext"><a href="2-ih.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -943,7 +943,7 @@ the source text in the application.
|
|||
</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">Index::link</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">Index::link</span></span>:<br/>Lexicon Index - <a href="2-li.html#SP7_11_2">§7.11.2</a>, <a href="2-li.html#SP8">§8</a><br/>Index Physical World - <a href="2-ipw.html#SP3_5">§3.5</a>, <a href="2-ipw.html#SP3_8">§3.8</a>, <a href="2-ipw.html#SP4">§4</a><br/>Kinds Index - <a href="2-ki.html#SP6">§6</a><br/>Index Extensions - <a href="2-ie.html#SP1">§1</a><br/>Instances - <a href="2-ins.html#SP5">§5</a><br/>Adjectives - <a href="2-adj.html#SP1">§1</a><br/>Variables - <a href="2-vrb.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">wn</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::link</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">Index::link</span></span>:<br/>Lexicon Index - <a href="2-li.html#SP7_11_2">§7.11.2</a>, <a href="2-li.html#SP8">§8</a><br/>Index Physical World - <a href="2-ipw.html#SP3_5">§3.5</a>, <a href="2-ipw.html#SP3_8">§3.8</a>, <a href="2-ipw.html#SP4">§4</a><br/>Kinds Index - <a href="2-ki.html#SP6">§6</a><br/>Index Extensions - <a href="2-ie.html#SP1">§1</a><br/>Instances - <a href="2-ins.html#SP5">§5</a><br/>Adjectives - <a href="2-adj.html#SP1">§1</a><br/>Variables - <a href="2-vrb.html#SP3">§3</a><br/>Inferences - <a href="2-inf.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">wn</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ifs.html#SP9" class="function-link"><span class="function-syntax">Index::link_to_location</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Lexer::word_location</span><span class="plain-syntax">(</span><span class="identifier-syntax">wn</span><span class="plain-syntax">), </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -1079,7 +1079,7 @@ quotes.
|
|||
</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">Index::dequote</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::dequote</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Index::dequote</span></span>:<br/>Inferences - <a href="2-inf.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</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">p</span><span class="plain-syntax">[0] == </span><span class="constant-syntax">0</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">p</span><span class="plain-syntax">[1] == </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=1; </span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">+1]; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++) {</span>
|
||||
|
@ -1092,7 +1092,7 @@ quotes.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-im.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">ifs</li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progressnext"><a href="2-dr.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-im.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">ifs</li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progressnext"><a href="2-dr.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -350,7 +350,7 @@ but should this arise then the best recourse is to ignore the heading.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-ih.html#SP4">§4</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ie.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresscurrent">ih</li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progressnext"><a href="2-ins.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ie.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresscurrent">ih</li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progressnext"><a href="2-ins.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
203
docs/index-module/2-inf.html
Normal file
203
docs/index-module/2-inf.html
Normal file
|
@ -0,0 +1,203 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Inferences</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">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="../core-module/index.html">core</a></li>
|
||||
<li><a href="../assertions-module/index.html">assertions</a></li>
|
||||
<li><a href="../values-module/index.html">values</a></li>
|
||||
<li><a href="../knowledge-module/index.html">knowledge</a></li>
|
||||
<li><a href="../imperative-module/index.html">imperative</a></li>
|
||||
<li><a href="../runtime-module/index.html">runtime</a></li>
|
||||
<li><a href="../if-module/index.html">if</a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="index.html"><span class="selectedlink">index</span></a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../bytecode-module/index.html">bytecode</a></li>
|
||||
<li><a href="../building-module/index.html">building</a></li>
|
||||
<li><a href="../codegen-module/index.html">codegen</a></li>
|
||||
</ul><h2>Services</h2><ul>
|
||||
<li><a href="../arch-module/index.html">arch</a></li>
|
||||
<li><a href="../calculus-module/index.html">calculus</a></li>
|
||||
<li><a href="../html-module/index.html">html</a></li>
|
||||
<li><a href="../inflections-module/index.html">inflections</a></li>
|
||||
<li><a href="../kinds-module/index.html">kinds</a></li>
|
||||
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
||||
<li><a href="../problems-module/index.html">problems</a></li>
|
||||
<li><a href="../syntax-module/index.html">syntax</a></li>
|
||||
<li><a href="../words-module/index.html">words</a></li>
|
||||
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Inferences' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">index</a></li><li><a href="index.html#2">Chapter 2: Indexing</a></li><li><b>Inferences</b></li></ul></div>
|
||||
<p class="purpose">To index inferences.</p>
|
||||
|
||||
<ul class="toc"><li><a href="2-inf.html#SP1">§1. Indexing properties of a subject</a></li><li><a href="2-inf.html#SP3">§3. Indexing properties of a specific subject</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Indexing properties of a subject. </b>This is where the detailed description of a given kind — what properties it
|
||||
has, and so on — is generated.
|
||||
</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">IXInferences::index</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">IXInferences::index</span></span>:<br/>Index Physical World - <a href="2-ipw.html#SP3_7">§3.7</a><br/>Kinds Index - <a href="2-ki.html#SP1_11">§1.11</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">brief</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</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">PropertyInferences::get_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_specification</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PropertyInferences::get_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ifs.html#SP15" class="function-link"><span class="function-syntax">Index::dequote</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Lexer::word_raw_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">))));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">);</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="identifier-syntax">Properties::set_indexed_already_flag</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</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">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">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">; </span><span class="identifier-syntax">c</span><span class="plain-syntax"> >= </span><span class="identifier-syntax">IMPOSSIBLE_CE</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">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cert</span><span class="plain-syntax"> = </span><span class="string-syntax">"Text only put here to stop gcc -O2 wrongly reporting an error"</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">c</span><span class="plain-syntax"> == </span><span class="identifier-syntax">UNKNOWN_CE</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</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">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CERTAIN_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">cert</span><span class="plain-syntax"> = </span><span class="string-syntax">"Always"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">LIKELY_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">cert</span><span class="plain-syntax"> = </span><span class="string-syntax">"Usually"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">UNLIKELY_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">cert</span><span class="plain-syntax"> = </span><span class="string-syntax">"Usually not"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">IMPOSSIBLE_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">cert</span><span class="plain-syntax"> = </span><span class="string-syntax">"Never"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">INITIALLY_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">cert</span><span class="plain-syntax"> = </span><span class="string-syntax">"Initially"</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="2-inf.html#SP2" class="function-link"><span class="function-syntax">IXInferences::index_provided</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">c</span><span class="plain-syntax">, </span><span class="identifier-syntax">cert</span><span class="plain-syntax">, </span><span class="identifier-syntax">brief</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="2-inf.html#SP2" class="function-link"><span class="function-syntax">IXInferences::index_provided</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">LIKELY_CE</span><span class="plain-syntax">, </span><span class="string-syntax">"Can have"</span><span class="plain-syntax">, </span><span class="identifier-syntax">brief</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>The following lists off the properties of the kind, with the given
|
||||
state of being boolean, and the given certainty levels:
|
||||
</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">IXInferences::index_provided</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">IXInferences::index_provided</span></span>:<br/><a href="2-inf.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">bool</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="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">cert</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">brief</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">f</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">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_shown_in_index</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</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::get_indexed_already_flag</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) </span><span class="reserved-syntax">continue</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">bool</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</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="identifier-syntax">PropertyInferences::has_or_can_have</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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">state</span><span class="plain-syntax"> != </span><span class="identifier-syntax">c</span><span class="plain-syntax">) </span><span class="reserved-syntax">continue</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">inherited_state</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PropertyInferences::has_or_can_have</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InferenceSubjects::narrowest_broader_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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">state</span><span class="plain-syntax"> == </span><span class="identifier-syntax">inherited_state</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">brief</span><span class="plain-syntax">)) </span><span class="reserved-syntax">continue</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">f</span><span class="plain-syntax">) { </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<i>%s</i> "</span><span class="plain-syntax">, </span><span class="identifier-syntax">cert</span><span class="plain-syntax">); </span><span class="identifier-syntax">f</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">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">", "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%+W"</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="plain-syntax"> </span><span class="identifier-syntax">Properties::set_indexed_already_flag</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="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">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prnbar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::EitherOr::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">prnbar</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" <i>not</i> %+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">prnbar</span><span class="plain-syntax">-></span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Properties::set_indexed_already_flag</span><span class="plain-syntax">(</span><span class="identifier-syntax">prnbar</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="reserved-syntax">else</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">Properties::Valued::kind</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">K</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" (<i>"</span><span class="plain-syntax">); </span><span class="identifier-syntax">Kinds::Textual::write</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</i>)"</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">f</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. Indexing properties of a specific subject. </b>This only tells about specific property settings for a given instance.
|
||||
</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">IXInferences::index_specific</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">IXInferences::index_specific</span></span>:<br/>Index Physical World - <a href="2-ipw.html#SP3_9">§3.9</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">k</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">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_shown_in_index</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">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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">World::Permissions::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PropertyInferences::either_or_state_without_inheritance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, &</span><span class="identifier-syntax">P</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">prnbar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Properties::EitherOr::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">prnbar</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">S</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="reserved-syntax">continue</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">S</span><span class="plain-syntax"> != </span><span class="identifier-syntax">UNKNOWN_CE</span><span class="plain-syntax">) {</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">k</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"; "</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">S</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"not "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%+W"</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P</span><span class="plain-syntax">) </span><a href="2-ifs.html#SP9" class="function-link"><span class="function-syntax">Index::link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">k</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</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_shown_in_index</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">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">FALSE</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">World::Permissions::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PropertyInferences::get_prop_state_without_inheritance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, &</span><span class="identifier-syntax">P</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">S</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">)))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">, </span><span class="string-syntax">"hanging"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%+W: "</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="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"000080"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">P</span><span class="plain-syntax">) </span><a href="2-ifs.html#SP9" class="function-link"><span class="function-syntax">Index::link</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-prp.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresscurrent">inf</li><li class="progressnextoff">❯</li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -203,7 +203,7 @@ constant value.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ih.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresscurrent">ins</li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progressnext"><a href="2-adj.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ih.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresscurrent">ins</li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progressnext"><a href="2-adj.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -423,8 +423,8 @@ table of Kinds.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::open_indented_p</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">, </span><span class="string-syntax">"tight"</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">I</span><span class="plain-syntax">) </span><span class="identifier-syntax">Inferences::index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</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="identifier-syntax">Inferences::index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">TRUE</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">I</span><span class="plain-syntax">) </span><a href="2-inf.html#SP1" class="function-link"><span class="function-syntax">IXInferences::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</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><a href="2-inf.html#SP1" class="function-link"><span class="function-syntax">IXInferences::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">TRUE</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="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ipw.html#SP4" class="function-link"><span class="function-syntax">Data::Objects::index_instances</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">depth</span><span class="plain-syntax">);</span>
|
||||
|
@ -462,7 +462,7 @@ table of Kinds.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::index_specific</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-inf.html#SP3" class="function-link"><span class="function-syntax">IXInferences::index_specific</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Instances::as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-ipw.html#SP3">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b></p>
|
||||
|
@ -509,7 +509,7 @@ table of Kinds.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-li.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresscurrent">ipw</li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progressnext"><a href="2-ki.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-li.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresscurrent">ipw</li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progressnext"><a href="2-ki.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -372,7 +372,7 @@ is made, so that the following sentence can't have an empty list in it.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">explanation</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_TAG</span><span class="plain-syntax">(</span><span class="string-syntax">"br"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::index</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-inf.html#SP1" class="function-link"><span class="function-syntax">IXInferences::index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">FALSE</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_12" class="paragraph-anchor"></a><b>§1.12. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Explain about covariance and contravariance</span><span class="named-paragraph-number">1.12</span></span><span class="comment-syntax"> =</span>
|
||||
|
@ -571,7 +571,7 @@ as "0 kg", "0 hectares", or whatever is appropriate.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-ki.html#SP6">§6</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ipw.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresscurrent">ki</li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progressnext"><a href="2-ie.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ipw.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresscurrent">ki</li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progressnext"><a href="2-ie.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -654,7 +654,7 @@ be able to print out a table of just those verbs created in that extension.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-dr.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresscurrent">li</li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progressnext"><a href="2-ipw.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-dr.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresscurrent">li</li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progressnext"><a href="2-ipw.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -96,7 +96,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-vrb.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresscurrent">prp</li><li class="progressnextoff">❯</li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-vrb.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresssection"><a href="2-vrb.html">vrb</a></li><li class="progresscurrent">prp</li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progressnext"><a href="2-inf.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -152,7 +152,7 @@ the following:
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-adj.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresscurrent">vrb</li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progressnext"><a href="2-prp.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-adj.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifs.html">ifs</a></li><li class="progresssection"><a href="2-dr.html">dr</a></li><li class="progresssection"><a href="2-li.html">li</a></li><li class="progresssection"><a href="2-ipw.html">ipw</a></li><li class="progresssection"><a href="2-ki.html">ki</a></li><li class="progresssection"><a href="2-ie.html">ie</a></li><li class="progresssection"><a href="2-ih.html">ih</a></li><li class="progresssection"><a href="2-ins.html">ins</a></li><li class="progresssection"><a href="2-adj.html">adj</a></li><li class="progresscurrent">vrb</li><li class="progresssection"><a href="2-prp.html">prp</a></li><li class="progresssection"><a href="2-inf.html">inf</a></li><li class="progressnext"><a href="2-prp.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -133,6 +133,11 @@
|
|||
<spon class="sectiontitle">Properties</span></a> -
|
||||
<span class="sectionpurpose">To index properties.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="2-inf.html">
|
||||
<spon class="sectiontitle">Inferences</span></a> -
|
||||
<span class="sectionpurpose">To index inferences.</span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
@ -464,8 +464,8 @@ these kind atoms.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec0</span><span class="plain-syntax"> = </span><a href="1-ap.html#SP8" class="function-link"><span class="function-syntax">Assert::spec_of_term</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pt0</span><span class="plain-syntax">), *</span><span class="identifier-syntax">spec1</span><span class="plain-syntax"> = </span><a href="1-ap.html#SP8" class="function-link"><span class="function-syntax">Assert::spec_of_term</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pt1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj0</span><span class="plain-syntax"> = </span><a href="1-ap.html#SP9" class="function-link"><span class="function-syntax">Assert::subject_of_term</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pt0</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">subj1</span><span class="plain-syntax"> = </span><a href="1-ap.html#SP9" class="function-link"><span class="function-syntax">Assert::subject_of_term</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pt1</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">subj0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">spec0</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="identifier-syntax">spec0</span><span class="plain-syntax"> = </span><a href="4-is.html#SP14" class="function-link"><span class="function-syntax">InferenceSubjects::as_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">subj0</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">subj1</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">spec1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="identifier-syntax">spec1</span><span class="plain-syntax"> = </span><a href="4-is.html#SP14" class="function-link"><span class="function-syntax">InferenceSubjects::as_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">subj1</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">subj0</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">spec0</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="identifier-syntax">spec0</span><span class="plain-syntax"> = </span><a href="4-is.html#SP15" class="function-link"><span class="function-syntax">InferenceSubjects::as_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">subj0</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">subj1</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">spec1</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="identifier-syntax">spec1</span><span class="plain-syntax"> = </span><a href="4-is.html#SP15" class="function-link"><span class="function-syntax">InferenceSubjects::as_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">subj1</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> != </span><span class="identifier-syntax">R_regional_containment</span><span class="plain-syntax">) {</span>
|
||||
|
@ -614,7 +614,7 @@ but just in case.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pt</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">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">CONSTANT_NT</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-is.html#SP13" class="function-link"><span class="function-syntax">InferenceSubjects::from_specification</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-is.html#SP14" class="function-link"><span class="function-syntax">InferenceSubjects::from_specification</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">spec</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">Specifications::is_description</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</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">Descriptions::to_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">))</span>
|
||||
|
|
|
@ -76,11 +76,11 @@ which use this module:
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="identifier-syntax">booking</span><span class="plain-syntax"> *, </span><span class="identifier-syntax">Rules::Bookings::log</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *, </span><a href="5-inf.html#SP24" class="function-link"><span class="function-syntax">Inferences::log</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *, </span><a href="4-is.html#SP16" class="function-link"><span class="function-syntax">InferenceSubjects::log</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *, </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">Inferences::log</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *, </span><a href="4-is.html#SP17" class="function-link"><span class="function-syntax">InferenceSubjects::log</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *, </span><a href="3-prp.html#SP14" class="function-link"><span class="function-syntax">Properties::log</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="identifier-syntax">rulebook</span><span class="plain-syntax"> *, </span><span class="identifier-syntax">Rulebooks::log</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_family</span><span class="plain-syntax"> *, </span><a href="5-inf.html#SP24" class="function-link"><span class="function-syntax">Inferences::log_kind</span></a><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">COMPILE_WRITER</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_family</span><span class="plain-syntax"> *, </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">Inferences::log_family</span></a><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b></p>
|
||||
|
||||
|
@ -98,7 +98,6 @@ which use this module:
|
|||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">KnowledgeModule::start</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">Inferences::start</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::start</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ri.html#SP2" class="function-link"><span class="function-syntax">RelationInferences::start</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="2-iaa.html#SP1" class="function-link"><span class="function-syntax">InstanceAdjectives::start</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -109,10 +108,10 @@ which use this module:
|
|||
<span class="plain-syntax"> </span><a href="3-cr.html#SP1" class="function-link"><span class="function-syntax">Properties::ComparativeRelations::start</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="3-tpr.html#SP2" class="function-link"><span class="function-syntax">Properties::ProvisionRelation::start</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'b'</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rules::Bookings::log</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'I'</span><span class="plain-syntax">, </span><a href="5-inf.html#SP24" class="function-link"><span class="function-syntax">Inferences::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'j'</span><span class="plain-syntax">, </span><a href="4-is.html#SP16" class="function-link"><span class="function-syntax">InferenceSubjects::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'I'</span><span class="plain-syntax">, </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">Inferences::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'j'</span><span class="plain-syntax">, </span><a href="4-is.html#SP17" class="function-link"><span class="function-syntax">InferenceSubjects::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'K'</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rulebooks::log</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'n'</span><span class="plain-syntax">, </span><a href="5-inf.html#SP24" class="function-link"><span class="function-syntax">Inferences::log_kind</span></a><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'n'</span><span class="plain-syntax">, </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">Inferences::log_family</span></a><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">REGISTER_WRITER</span><span class="plain-syntax">(</span><span class="character-syntax">'Y'</span><span class="plain-syntax">, </span><a href="3-prp.html#SP14" class="function-link"><span class="function-syntax">Properties::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Log::declare_aspect</span><span class="plain-syntax">(</span><span class="constant-syntax">ACTIVITY_CREATIONS_DA</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"activity creations"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</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">Log::declare_aspect</span><span class="plain-syntax">(</span><span class="constant-syntax">INFERENCES_DA</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"inferences"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
|
@ -134,7 +133,7 @@ on its hooks:
|
|||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">TERM_DOMAIN_CALCULUS_TYPE</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">TERM_DOMAIN_WORDING_FUNCTION</span><span class="plain-syntax"> </span><a href="4-is.html#SP18" class="function-link"><span class="function-syntax">InferenceSubjects::get_name_text</span></a>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">TERM_DOMAIN_WORDING_FUNCTION</span><span class="plain-syntax"> </span><a href="4-is.html#SP19" class="function-link"><span class="function-syntax">InferenceSubjects::get_name_text</span></a>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">TERM_DOMAIN_TO_KIND_FUNCTION</span><span class="plain-syntax"> </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::to_kind</span></a>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">TERM_DOMAIN_FROM_KIND_FUNCTION</span><span class="plain-syntax"> </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::from_kind</span></a>
|
||||
</pre>
|
||||
|
|
|
@ -114,7 +114,7 @@ instance, though a noun, must be used as an adjective: for example, "red".
|
|||
Inform has run through the permissions for the property ("colour") in
|
||||
question, and found that, say, it's a property of doors, scenes and also
|
||||
a single piece of litmus paper. Each of these three is an inference subject,
|
||||
so <a href="4-is.html#SP21" class="internal">InferenceSubjects::make_adj_const_domain</a> was called for each in turn.
|
||||
so <a href="4-is.html#SP22" class="internal">InferenceSubjects::make_adj_const_domain</a> was called for each in turn.
|
||||
</p>
|
||||
|
||||
<p class="commentary">By different means, those calls all ended up by passing the buck onto the
|
||||
|
@ -187,7 +187,7 @@ to infer from, e.g., "the ball is not green": is it red, or blue?
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">-></span><span class="identifier-syntax">family_specific_data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="3-cp.html#SP5" class="function-link"><span class="function-syntax">Properties::Conditions::get_coinciding_property</span></a><span class="plain-syntax">(</span><a href="2-ins.html#SP10" class="function-link"><span class="function-syntax">Instances::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</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">P</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">"enumerative adjective on non-property"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::draw</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rvalues::from_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::draw</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">, </span><span class="identifier-syntax">Rvalues::from_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</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>
|
||||
|
|
|
@ -245,7 +245,7 @@ be done later on: see <a href="../runtime-module/4-ic.html" class="internal">Ins
|
|||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. Subject and source references. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">Instances::as_subject</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">Instances::as_subject</span></span>:<br/>Assert Propositions - <a href="1-ap.html#SP6_5_2">§6.5.2</a>, <a href="1-ap.html#SP9">§9</a><br/>Properties - <a href="3-prp.html#SP26">§26</a><br/>Properties of Values - <a href="3-pov.html#SP4">§4</a><br/>Inference Subjects - <a href="4-is.html#SP8">§8</a>, <a href="4-is.html#SP13">§13</a>, <a href="4-is.html#SP28">§28</a><br/>Inferences - <a href="5-inf.html#SP21">§21</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">Instances::as_subject</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">Instances::as_subject</span></span>:<br/>Assert Propositions - <a href="1-ap.html#SP6_5_2">§6.5.2</a>, <a href="1-ap.html#SP9">§9</a><br/>Properties - <a href="3-prp.html#SP26">§26</a><br/>Properties of Values - <a href="3-pov.html#SP4">§4</a><br/>Inference Subjects - <a href="4-is.html#SP8">§8</a>, <a href="4-is.html#SP9">§9</a>, <a href="4-is.html#SP14">§14</a>, <a href="4-is.html#SP29">§29</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</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">I</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</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>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="element-syntax">as_subject</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -319,7 +319,7 @@ turns up subsequently, e.g., in response to
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">property_permission</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_PERMISSIONS_FOR_PROPERTY</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><a href="5-pp.html#SP5" class="function-link"><span class="function-syntax">World::Permissions::get_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-is.html#SP21" class="function-link"><span class="function-syntax">InferenceSubjects::make_adj_const_domain</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-is.html#SP22" class="function-link"><span class="function-syntax">InferenceSubjects::make_adj_const_domain</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -343,7 +343,7 @@ specialised than which other ones, and by making a call, we can find out.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Instances::to_kind</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">Instances::to_kind</span></span>:<br/><a href="2-ins.html#SP11">§11</a>, <a href="2-ins.html#SP15">§15</a>, <a href="2-ins.html#SP16_1">§16.1</a>, <a href="2-ins.html#SP16_2">§16.2</a><br/>Instances as Adjectives - <a href="2-iaa.html#SP2_1">§2.1</a>, <a href="2-iaa.html#SP3">§3</a><br/>Condition Properties - <a href="3-cp.html#SP3">§3</a><br/>Emit Property Values - <a href="3-epv.html#SP1_1">§1.1</a>, <a href="3-epv.html#SP1_1_1">§1.1.1</a><br/>Instance Subjects - <a href="4-is2.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</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">I</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</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>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inherits_from</span><span class="plain-syntax"> = </span><a href="4-is.html#SP10" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="element-syntax">as_subject</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inherits_from</span><span class="plain-syntax"> = </span><a href="4-is.html#SP11" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="element-syntax">as_subject</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inherits_from</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -374,7 +374,7 @@ are allowed to refine it. Such revisions are allowed to specialise the kind
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Plugins::Call::set_kind_notify</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">new</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-is.html#SP11" class="function-link"><span class="function-syntax">InferenceSubjects::falls_within</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="element-syntax">as_subject</span><span class="plain-syntax">, </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::from_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">new</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="4-is.html#SP12" class="function-link"><span class="function-syntax">InferenceSubjects::falls_within</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="element-syntax">as_subject</span><span class="plain-syntax">, </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::from_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">new</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Assertions::Assemblies::satisfies_generalisations</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="element-syntax">as_subject</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="element-syntax">where_kind_is_set</span><span class="plain-syntax"> = </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">KIND_CHANGES</span><span class="plain-syntax">, </span><span class="string-syntax">"Setting kind of $O to %u\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">new</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -135,7 +135,7 @@ closer to global variables than to literals such as <span class="extract"><span
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">nonlocal_variable</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure nonlocal_variable is accessed in 2/ins, 3/prp, 3/ep, 3/vp, 3/spr, 4/vs, 5/inf, 5/pi, 5/tmw and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure nonlocal_variable is accessed in 2/ins, 3/prp, 3/ep, 3/vp, 3/spr, 4/vs, 5/pi, 5/tmw and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>We can create a new variable provided we give its name, kind and scope.
|
||||
When the scope isn't global, the variable is said to be "stacked", which is a
|
||||
reference to how it's stored at run-time.
|
||||
|
@ -321,9 +321,9 @@ data variable (such as "story title") to be treated as text.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><a href="2-nv.html#SP8" class="function-link"><span class="function-syntax">NonlocalVariables::to_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_variable_initial_value</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_variable_initial_value</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">Node::get_text</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::set_value_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_text</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::set_value_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_text</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">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -406,7 +406,7 @@ become an inference about "yourself", the actual default player instance.
|
|||
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">NonlocalVariables::get_alias</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">NonlocalVariables::get_alias</span></span>:<br/>Assert Propositions - <a href="1-ap.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</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">nlv</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><a href="4-vs.html#SP2" class="function-link"><span class="function-syntax">VariableSubjects::get_initial_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vals</span><span class="plain-syntax"> = </span><a href="4-is.html#SP13" class="function-link"><span class="function-syntax">InferenceSubjects::from_specification</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vals</span><span class="plain-syntax"> = </span><a href="4-is.html#SP14" class="function-link"><span class="function-syntax">InferenceSubjects::from_specification</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</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">vals</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">vals</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">nlv</span><span class="plain-syntax">-></span><span class="element-syntax">alias_subject</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -201,7 +201,7 @@ nameless subjects.)
|
|||
<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="element-syntax">condition_of</span><span class="plain-syntax"> == </span><span class="identifier-syntax">infs</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">condition_anonymously_named</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ct</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">feed_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::begin</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W2</span><span class="plain-syntax"> = </span><a href="4-is.html#SP18" class="function-link"><span class="function-syntax">InferenceSubjects::get_name_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W2</span><span class="plain-syntax"> = </span><a href="4-is.html#SP19" class="function-link"><span class="function-syntax">InferenceSubjects::get_name_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W2</span><span class="plain-syntax">)) </span><span class="identifier-syntax">Feeds::feed_wording</span><span class="plain-syntax">(</span><span class="identifier-syntax">W2</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">Feeds::feed_C_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="string-syntax">" nameless "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Feeds::feed_C_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="string-syntax">" condition "</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -219,7 +219,7 @@ around), but not to break one.
|
|||
<span class="plain-syntax"> </span><a href="3-ep.html#SP7" class="function-link"><span class="function-syntax">Properties::EitherOr::make_stored_in_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">neg</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::EitherOr::get_negation</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">Properties::EitherOr::get_negation</span></span>:<br/><a href="3-ep.html#SP13_1">§13.1</a>, <a href="3-ep.html#SP13_2">§13.2</a>, <a href="3-ep.html#SP15">§15</a><br/>Properties - <a href="3-prp.html#SP14">§14</a>, <a href="3-prp.html#SP20">§20</a>, <a href="3-prp.html#SP21_2">§21.2</a>, <a href="3-prp.html#SP22">§22</a>, <a href="3-prp.html#SP25">§25</a>, <a href="3-prp.html#SP26">§26</a><br/>Emit Property Values - <a href="3-epv.html#SP2">§2</a>, <a href="3-epv.html#SP2_1">§2.1</a>, <a href="3-epv.html#SP4">§4</a><br/>Inferences - <a href="5-inf.html#SP16">§16</a>, <a href="5-inf.html#SP18">§18</a>, <a href="5-inf.html#SP19">§19</a><br/>Property Inferences - <a href="5-pi.html#SP2">§2</a><br/>Property Permissions - <a href="5-pp.html#SP2">§2</a><br/>The Model World - <a href="5-tmw.html#SP4_2">§4.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::EitherOr::get_negation</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">Properties::EitherOr::get_negation</span></span>:<br/><a href="3-ep.html#SP13_1">§13.1</a>, <a href="3-ep.html#SP13_2">§13.2</a>, <a href="3-ep.html#SP15">§15</a><br/>Properties - <a href="3-prp.html#SP14">§14</a>, <a href="3-prp.html#SP20">§20</a>, <a href="3-prp.html#SP21_2">§21.2</a>, <a href="3-prp.html#SP22">§22</a>, <a href="3-prp.html#SP25">§25</a>, <a href="3-prp.html#SP26">§26</a><br/>Emit Property Values - <a href="3-epv.html#SP2">§2</a>, <a href="3-epv.html#SP2_1">§2.1</a>, <a href="3-epv.html#SP4">§4</a><br/>Property Inferences - <a href="5-pi.html#SP3">§3</a>, <a href="5-pi.html#SP4">§4</a><br/>Property Permissions - <a href="5-pp.html#SP2">§2</a><br/>The Model World - <a href="5-tmw.html#SP4_2">§4.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-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">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">either_or</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</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>
|
||||
<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="element-syntax">negation</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -227,7 +227,7 @@ around), but not to break one.
|
|||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b></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">Properties::EitherOr::stored_in_negation</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">Properties::EitherOr::stored_in_negation</span></span>:<br/><a href="3-ep.html#SP13_1">§13.1</a>, <a href="3-ep.html#SP13_2">§13.2</a><br/>Emit Property Values - <a href="3-epv.html#SP2">§2</a>, <a href="3-epv.html#SP2_1">§2.1</a>, <a href="3-epv.html#SP3">§3</a>, <a href="3-epv.html#SP4">§4</a><br/>Inferences - <a href="5-inf.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-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="function-syntax">Properties::EitherOr::stored_in_negation</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">Properties::EitherOr::stored_in_negation</span></span>:<br/><a href="3-ep.html#SP13_1">§13.1</a>, <a href="3-ep.html#SP13_2">§13.2</a><br/>Emit Property Values - <a href="3-epv.html#SP2">§2</a>, <a href="3-epv.html#SP2_1">§2.1</a>, <a href="3-epv.html#SP3">§3</a>, <a href="3-epv.html#SP4">§4</a><br/>Property Inferences - <a href="5-pi.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-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">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">either_or</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</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>
|
||||
<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="element-syntax">stored_in_negation</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -458,8 +458,8 @@ property.
|
|||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::EitherOr::assert_adj</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Properties::EitherOr::assert_adj</span></span>:<br/><a href="3-ep.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">adjective_meaning_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">,</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="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">parity</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property</span><span class="plain-syntax">(</span><span class="identifier-syntax">am</span><span class="plain-syntax">-></span><span class="identifier-syntax">family_specific_data</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">parity</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::draw_negated</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_to_assert_on</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="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::draw</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_to_assert_on</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">parity</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::draw_negated</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_to_assert_on</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="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::draw</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_to_assert_on</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="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>
|
||||
|
|
|
@ -162,8 +162,8 @@ the class hierarchy at I6 level exactly match the kind hierarchy at I7 level.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">OBJECT_COMPILATION</span><span class="plain-syntax">, </span><span class="string-syntax">"Compiling property $Y\n"</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">words_used</span><span class="plain-syntax"> += </span><a href="3-epv.html#SP2" class="function-link"><span class="function-syntax">Properties::Emit::emit_propertyvalue</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -178,7 +178,7 @@ no actual knowledge about.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">subj</span><span class="plain-syntax">; </span><span class="identifier-syntax">infs</span><span class="plain-syntax">; </span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><a href="4-is.html#SP10" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">subj</span><span class="plain-syntax">; </span><span class="identifier-syntax">infs</span><span class="plain-syntax">; </span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><a href="4-is.html#SP11" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property_permission</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_PERMISSIONS_FOR_INFS</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="5-pp.html#SP5" class="function-link"><span class="function-syntax">World::Permissions::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">);</span>
|
||||
|
@ -262,8 +262,8 @@ For now, though, we make a parallel decision here.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">property_permission</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_PERMISSIONS_FOR_PROPERTY</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</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">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><a href="5-pp.html#SP5" class="function-link"><span class="function-syntax">World::Permissions::get_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-is.html#SP15" class="function-link"><span class="function-syntax">InferenceSubjects::is_an_object</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="4-is.html#SP15" class="function-link"><span class="function-syntax">InferenceSubjects::is_a_kind_of_object</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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">if</span><span class="plain-syntax"> ((</span><a href="4-is.html#SP16" class="function-link"><span class="function-syntax">InferenceSubjects::is_an_object</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="4-is.html#SP16" class="function-link"><span class="function-syntax">InferenceSubjects::is_a_kind_of_object</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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">make_attribute</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
|
|
|
@ -94,12 +94,12 @@ So as an interim measure the text is inferred into a pseudo-property called
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Appearance::infer</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_indefinite_appearance_text</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_indefinite_appearance_text</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-ia.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Issue a problem for a second appearance</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="4-is.html#SP9" class="function-link"><span class="function-syntax">InferenceSubjects::is_within</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::from_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">))))</span>
|
||||
<span class="plain-syntax"> (</span><a href="4-is.html#SP10" class="function-link"><span class="function-syntax">InferenceSubjects::is_within</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::from_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">K_object</span><span class="plain-syntax">))))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LIKELY_CE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="3-vp.html#SP10" class="function-link"><span class="function-syntax">Properties::Valued::assert</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P_indefinite_appearance_text</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">prevailing_mood</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -113,7 +113,7 @@ ambiguously.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::infs_contradiction_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_TwoAppearances</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">), </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">), </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"seems to have two different descriptions"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"perhaps because you intended the second description to apply to something "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"mentioned in between, but declared it in such a way that it was never the "</span>
|
||||
|
@ -139,9 +139,9 @@ available;
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::Appearance::reallocate</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">Properties::Appearance::reallocate</span></span>:<br/>The Model World - <a href="5-tmw.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_indefinite_appearance_text</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">txt</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_indefinite_appearance_text</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">txt</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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">Plugins::Call::default_appearance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">txt</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">P_description</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="5-pp.html#SP2" class="function-link"><span class="function-syntax">World::Permissions::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">P_description</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">))) {</span>
|
||||
|
|
|
@ -564,7 +564,7 @@ can't normally be unravelled at compile time.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><s-literal>(mdef-></span><span class="element-syntax">region_threshold_text</span><span class="plain-syntax">)) </span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><span class="function-syntax"><<rp>></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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"literal unreadable"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::draw</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::draw</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs_to_assert_on</span><span class="plain-syntax">, </span><span class="identifier-syntax">mdef</span><span class="plain-syntax">-></span><span class="element-syntax">prop</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</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>
|
||||
<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>
|
||||
|
|
|
@ -147,7 +147,7 @@ and it seems best to reject the extra complexity needed.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I_of</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_INSTANCES</span><span class="plain-syntax">(</span><span class="identifier-syntax">I_of</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">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><a href="2-ins.html#SP6" class="function-link"><span class="function-syntax">Instances::as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I_of</span><span class="plain-syntax">); </span><span class="identifier-syntax">infs</span><span class="plain-syntax">; </span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><a href="4-is.html#SP10" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><a href="2-ins.html#SP6" class="function-link"><span class="function-syntax">Instances::as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I_of</span><span class="plain-syntax">); </span><span class="identifier-syntax">infs</span><span class="plain-syntax">; </span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><a href="4-is.html#SP11" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_PERMISSIONS_FOR_INFS</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</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><a href="5-pp.html#SP5" class="function-link"><span class="function-syntax">World::Permissions::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">))) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="3-prp.html#SP16" class="function-link"><span class="function-syntax">Properties::can_be_compiled</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)))</span>
|
||||
|
|
|
@ -143,7 +143,7 @@ a value with the owner; it isn't that either/or properties are unloved.)
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">property</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure property is accessed in 2/nv, 3/ep, 3/vp, 3/cp, 3/spr, 4/vs, 5/inf, 5/pi, 5/tmw and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure property is accessed in 2/nv, 3/ep, 3/vp, 3/cp, 3/spr, 4/vs, 5/pi, 5/tmw and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>The only four properties which have special significance to core Inform
|
||||
(though plugins are interested in many others):
|
||||
</p>
|
||||
|
@ -538,10 +538,10 @@ of the other:
|
|||
</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">Properties::is_either_or</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">Properties::is_either_or</span></span>:<br/><a href="3-prp.html#SP20">§20</a>, <a href="3-prp.html#SP22">§22</a>, <a href="3-prp.html#SP24">§24</a>, <a href="3-prp.html#SP25">§25</a>, <a href="3-prp.html#SP26">§26</a><br/>Instances - <a href="2-ins.html#SP8">§8</a><br/>Properties of Values - <a href="3-pov.html#SP4_1">§4.1</a><br/>Emit Property Values - <a href="3-epv.html#SP2">§2</a>, <a href="3-epv.html#SP2_1">§2.1</a>, <a href="3-epv.html#SP3">§3</a><br/>Inferences - <a href="5-inf.html#SP16">§16</a>, <a href="5-inf.html#SP18">§18</a>, <a href="5-inf.html#SP19">§19</a><br/>Property Inferences - <a href="5-pi.html#SP2">§2</a><br/>Property Permissions - <a href="5-pp.html#SP2">§2</a><br/>The Model World - <a href="5-tmw.html#SP4_2">§4.2</a>, <a href="5-tmw.html#SP4_2_1_1">§4.2.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-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="function-syntax">Properties::is_either_or</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">Properties::is_either_or</span></span>:<br/><a href="3-prp.html#SP20">§20</a>, <a href="3-prp.html#SP22">§22</a>, <a href="3-prp.html#SP24">§24</a>, <a href="3-prp.html#SP25">§25</a>, <a href="3-prp.html#SP26">§26</a><br/>Instances - <a href="2-ins.html#SP8">§8</a><br/>Properties of Values - <a href="3-pov.html#SP4_1">§4.1</a><br/>Emit Property Values - <a href="3-epv.html#SP2">§2</a>, <a href="3-epv.html#SP2_1">§2.1</a>, <a href="3-epv.html#SP3">§3</a><br/>Property Inferences - <a href="5-pi.html#SP3">§3</a>, <a href="5-pi.html#SP4">§4</a><br/>Property Permissions - <a href="5-pp.html#SP2">§2</a><br/>The Model World - <a href="5-tmw.html#SP4_2">§4.2</a>, <a href="5-tmw.html#SP4_2_1_1">§4.2.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-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="element-syntax">either_or</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">Properties::is_value_property</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">Properties::is_value_property</span></span>:<br/>The Provision Relation - <a href="3-tpr.html#SP6_1">§6.1</a><br/>Same Property Relation - <a href="3-spr.html#SP2">§2</a><br/>Property Inferences - <a href="5-pi.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-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="function-syntax">Properties::is_value_property</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">Properties::is_value_property</span></span>:<br/>The Provision Relation - <a href="3-tpr.html#SP6_1">§6.1</a><br/>Same Property Relation - <a href="3-spr.html#SP2">§2</a><br/>Property Inferences - <a href="5-pi.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-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="element-syntax">either_or</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">TRUE</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>
|
||||
|
@ -563,10 +563,10 @@ sake:
|
|||
</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">Properties::is_shown_in_index</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">Properties::is_shown_in_index</span></span>:<br/>Inferences - <a href="5-inf.html#SP18">§18</a>, <a href="5-inf.html#SP19">§19</a></span></button><span class="plain-syntax">(</span><span class="reserved-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="function-syntax">Properties::is_shown_in_index</span><span class="plain-syntax">(</span><span class="reserved-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="element-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">Properties::exclude_from_index</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Properties::exclude_from_index</span></span>:<br/><a href="3-prp.html#SP4">§4</a><br/>Either-Or Properties - <a href="3-ep.html#SP4">§4</a><br/>Valued Properties - <a href="3-vp.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::exclude_from_index</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">Properties::exclude_from_index</span></span>:<br/><a href="3-prp.html#SP4">§4</a><br/>Either-Or Properties - <a href="3-ep.html#SP4">§4</a><br/>Valued Properties - <a href="3-vp.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-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="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>
|
||||
</pre>
|
||||
|
@ -574,10 +574,10 @@ sake:
|
|||
</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">Properties::set_indexed_already_flag</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Properties::set_indexed_already_flag</span></span>:<br/>Inferences - <a href="5-inf.html#SP17">§17</a>, <a href="5-inf.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::set_indexed_already_flag</span><span class="plain-syntax">(</span><span class="reserved-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="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">Properties::get_indexed_already_flag</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Properties::get_indexed_already_flag</span></span>:<br/>Inferences - <a href="5-inf.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-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="function-syntax">Properties::get_indexed_already_flag</span><span class="plain-syntax">(</span><span class="reserved-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="element-syntax">indexed_already</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -602,7 +602,7 @@ run-time support code to work.
|
|||
</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">Properties::set_translation</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Properties::set_translation</span></span>:<br/><a href="3-prp.html#SP21">§21</a><br/>Either-Or Properties - <a href="3-ep.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::set_translation</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">Properties::set_translation</span></span>:<br/><a href="3-prp.html#SP21">§21</a><br/>Either-Or Properties - <a href="3-ep.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">t</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">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"translation set 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><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><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="element-syntax">stored_in_negation</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="3-prp.html#SP20" class="function-link"><span class="function-syntax">Properties::set_translation</span></a><span class="plain-syntax">(</span><a href="3-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">), </span><span class="identifier-syntax">t</span><span class="plain-syntax">);</span>
|
||||
|
@ -622,7 +622,7 @@ run-time support code to work.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::set_translation_S</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Properties::set_translation_S</span></span>:<br/>Valued Properties - <a href="3-vp.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::set_translation_S</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Properties::set_translation_S</span></span>:<br/>Valued Properties - <a href="3-vp.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-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="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">"translation set 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><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><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="element-syntax">stored_in_negation</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="3-prp.html#SP20" class="function-link"><span class="function-syntax">Properties::set_translation_S</span></a><span class="plain-syntax">(</span><a href="3-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">), </span><span class="identifier-syntax">t</span><span class="plain-syntax">);</span>
|
||||
|
@ -643,7 +643,7 @@ run-time support code to work.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::has_been_translated</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Properties::has_been_translated</span></span>:<br/>Properties of Values - <a href="3-pov.html#SP4_1">§4.1</a><br/>Emit Property Values - <a href="3-epv.html#SP3_2">§3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-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="function-syntax">Properties::has_been_translated</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">Properties::has_been_translated</span></span>:<br/>Properties of Values - <a href="3-pov.html#SP4_1">§4.1</a><br/>Emit Property Values - <a href="3-epv.html#SP3_2">§3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-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="element-syntax">translated</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -730,11 +730,11 @@ property also visits its negation.)
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">property_traverse_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::begin_traverse</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Properties::begin_traverse</span></span>:<br/>Emit Property Values - <a href="3-epv.html#SP1_1">§1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::begin_traverse</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">Properties::begin_traverse</span></span>:<br/>Emit Property Values - <a href="3-epv.html#SP1_1">§1.1</a></span></button><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_traverse_count</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">Properties::visited_in_traverse</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Properties::visited_in_traverse</span></span>:<br/>Emit Property Values - <a href="3-epv.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-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="function-syntax">Properties::visited_in_traverse</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">Properties::visited_in_traverse</span></span>:<br/>Emit Property Values - <a href="3-epv.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-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="element-syntax">visited_on_traverse</span><span class="plain-syntax"> == </span><span class="identifier-syntax">property_traverse_count</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><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">visited_on_traverse</span><span class="plain-syntax"> = </span><span class="identifier-syntax">property_traverse_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) {</span>
|
||||
|
@ -761,11 +761,11 @@ in a default value.
|
|||
</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">Properties::compile_inferred_value</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">Properties::compile_inferred_value</span></span>:<br/>Emit Property Values - <a href="3-epv.html#SP2">§2</a></span></button><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="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Properties::compile_inferred_value</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Properties::compile_inferred_value</span></span>:<br/>Emit Property Values - <a href="3-epv.html#SP2">§2</a></span></button><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="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-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">NULL</span><span class="plain-syntax">) || (</span><a href="3-prp.html#SP16" class="function-link"><span class="function-syntax">Properties::can_be_compiled</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</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="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-prp.html#SP25" class="function-link"><span class="function-syntax">Properties::compile_property_value_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><a href="4-is.html#SP10" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><a href="4-is.html#SP11" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ep.html#SP11" class="function-link"><span class="function-syntax">Properties::EitherOr::compile_default_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
|
||||
|
@ -779,13 +779,13 @@ we find it, we compile it and return <span class="extract"><span class="extract-
|
|||
</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">Properties::compile_property_value_inner</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">Properties::compile_property_value_inner</span></span>:<br/><a href="3-prp.html#SP24">§24</a></span></button><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="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-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="function-syntax">Properties::compile_property_value_inner</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Properties::compile_property_value_inner</span></span>:<br/><a href="3-prp.html#SP24">§24</a></span></button><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="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-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">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::get_inference_type</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sense</span><span class="plain-syntax"> = (</span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">)?</span><span class="identifier-syntax">TRUE:FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inferred_property</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::get_inference_type</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sense</span><span class="plain-syntax"> = (</span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">)?</span><span class="identifier-syntax">TRUE:FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inferred_property</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><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">inferred_property</span><span class="plain-syntax"> == </span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ep.html#SP11" class="function-link"><span class="function-syntax">Properties::EitherOr::compile_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">inferred_property</span><span class="plain-syntax">, </span><span class="identifier-syntax">sense</span><span class="plain-syntax">);</span>
|
||||
|
@ -798,7 +798,7 @@ we find it, we compile it and return <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</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">inferred_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">sense</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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">val</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">"malformed property inference"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-vp.html#SP11" class="function-link"><span class="function-syntax">Properties::Valued::compile_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">inferred_property</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</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>
|
||||
|
@ -815,7 +815,7 @@ we find it, we compile it and return <span class="extract"><span class="extract-
|
|||
<p class="commentary firstcommentary"><a id="SP26" class="paragraph-anchor"></a><b>§26. Emitting to Inter. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::iname</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">Properties::iname</span></span>:<br/><a href="3-prp.html#SP20">§20</a>, <a href="3-prp.html#SP21_1">§21.1</a><br/>Instances as Adjectives - <a href="2-iaa.html#SP2_3">§2.3</a><br/>Either-Or Properties - <a href="3-ep.html#SP13_1">§13.1</a>, <a href="3-ep.html#SP13_2">§13.2</a><br/>Comparative Relations - <a href="3-cr.html#SP5_1">§5.1</a><br/>Measurement Adjectives - <a href="3-ma.html#SP14_1">§14.1</a><br/>Same Property Relation - <a href="3-spr.html#SP2">§2</a><br/>Setting Property Relation - <a href="3-spr2.html#SP8">§8</a>, <a href="3-spr2.html#SP11">§11</a><br/>Emit Property Values - <a href="3-epv.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::iname</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">Properties::iname</span></span>:<br/><a href="3-prp.html#SP20">§20</a>, <a href="3-prp.html#SP21_1">§21.1</a><br/>Instances as Adjectives - <a href="2-iaa.html#SP2_3">§2.3</a><br/>Either-Or Properties - <a href="3-ep.html#SP13_1">§13.1</a>, <a href="3-ep.html#SP13_2">§13.2</a><br/>Comparative Relations - <a href="3-cr.html#SP5_1">§5.1</a><br/>Measurement Adjectives - <a href="3-ma.html#SP14_1">§14.1</a><br/>Same Property Relation - <a href="3-spr.html#SP2">§2</a><br/>Setting Property Relation - <a href="3-spr2.html#SP8">§8</a>, <a href="3-spr2.html#SP11">§11</a><br/>Emit Property Values - <a href="3-epv.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-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">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><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><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="element-syntax">stored_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="3-prp.html#SP26" class="function-link"><span class="function-syntax">Properties::iname</span></a><span class="plain-syntax">(</span><a href="3-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">));</span>
|
||||
|
|
|
@ -363,7 +363,7 @@ be caught later on Inform's run.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property_setting_bp_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PSD</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RETRIEVE_POINTER_property_setting_bp_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">family_specific</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::draw</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs0</span><span class="plain-syntax">, </span><span class="identifier-syntax">PSD</span><span class="plain-syntax">-></span><span class="element-syntax">set_property</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::draw</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs0</span><span class="plain-syntax">, </span><span class="identifier-syntax">PSD</span><span class="plain-syntax">-></span><span class="element-syntax">set_property</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec1</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>
|
||||
|
|
|
@ -188,7 +188,7 @@ to the end user.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Valued::kind</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">Properties::Valued::kind</span></span>:<br/><a href="3-vp.html#SP11">§11</a><br/>Instances - <a href="2-ins.html#SP8">§8</a><br/>Properties - <a href="3-prp.html#SP14">§14</a><br/>Measurement Adjectives - <a href="3-ma.html#SP7_2">§7.2</a><br/>Setting Property Relation - <a href="3-spr2.html#SP8">§8</a>, <a href="3-spr2.html#SP9">§9</a><br/>Emit Property Values - <a href="3-epv.html#SP1_1_4">§1.1.4</a><br/>Inferences - <a href="5-inf.html#SP16">§16</a>, <a href="5-inf.html#SP18">§18</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Valued::kind</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">Properties::Valued::kind</span></span>:<br/><a href="3-vp.html#SP11">§11</a><br/>Instances - <a href="2-ins.html#SP8">§8</a><br/>Properties - <a href="3-prp.html#SP14">§14</a><br/>Measurement Adjectives - <a href="3-ma.html#SP7_2">§7.2</a><br/>Setting Property Relation - <a href="3-spr2.html#SP8">§8</a>, <a href="3-spr2.html#SP9">§9</a><br/>Emit Property Values - <a href="3-epv.html#SP1_1_4">§1.1.4</a><br/>Property Inferences - <a href="5-pi.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-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">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">either_or</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><span class="comment-syntax"> for better type-checking Problems</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="element-syntax">property_value_kind</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -261,7 +261,7 @@ then say that a thing has a weight: that makes a property also called
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">stored_bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">bp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Valued::get_stored_relation</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">Properties::Valued::get_stored_relation</span></span>:<br/>Property Inferences - <a href="5-pi.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">Properties::Valued::get_stored_relation</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">Properties::Valued::get_stored_relation</span></span>:<br/>Property Inferences - <a href="5-pi.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-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">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">either_or</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>
|
||||
<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="element-syntax">stored_bp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -91,7 +91,7 @@ MathJax = {
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">knowledge</a></li><li><a href="index.html#4">Chapter 4: Subjects</a></li><li><b>Inference Subjects</b></li></ul></div>
|
||||
<p class="purpose">A unified way to refer to the things propositions talk about.</p>
|
||||
|
||||
<ul class="toc"><li><a href="4-is.html#SP1">§1. Families</a></li><li><a href="4-is.html#SP3">§3. Hierarchy</a></li><li><a href="4-is.html#SP6">§6. Creation of subjects</a></li><li><a href="4-is.html#SP8">§8. Aliasing</a></li><li><a href="4-is.html#SP9">§9. Breadth</a></li><li><a href="4-is.html#SP12">§12. Access functions</a></li><li><a href="4-is.html#SP13">§13. Conversions to and from kinds and instances</a></li><li><a href="4-is.html#SP16">§16. Logging</a></li><li><a href="4-is.html#SP18">§18. Methods</a></li><li><a href="4-is.html#SP27">§27. Plugin data</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="4-is.html#SP1">§1. Families</a></li><li><a href="4-is.html#SP3">§3. Hierarchy</a></li><li><a href="4-is.html#SP6">§6. Creation of subjects</a></li><li><a href="4-is.html#SP8">§8. Aliasing</a></li><li><a href="4-is.html#SP10">§10. Breadth</a></li><li><a href="4-is.html#SP13">§13. Access functions</a></li><li><a href="4-is.html#SP14">§14. Conversions to and from kinds and instances</a></li><li><a href="4-is.html#SP17">§17. Logging</a></li><li><a href="4-is.html#SP19">§19. Methods</a></li><li><a href="4-is.html#SP28">§28. Plugin data</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Families. </b><a href="4-is.html#SP6" class="internal">inference_subject</a> is a type which can represent anything in the model
|
||||
which a proposition can discuss: in particular, kinds, relations, variables
|
||||
|
@ -248,7 +248,7 @@ kind once the kind itself is created.)
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">general_pointer</span><span class="plain-syntax"> </span><span class="identifier-syntax">gp</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">family</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">log_name</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">from</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) && (++</span><span class="identifier-syntax">no_roots</span><span class="plain-syntax"> > </span><span class="constant-syntax">1</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-is.html#SP17" class="function-link"><span class="function-syntax">InferenceSubjects::log_infs_hierarchy</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="4-is.html#SP18" class="function-link"><span class="function-syntax">InferenceSubjects::log_infs_hierarchy</span></a><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">"subject tree now disconnected"</span><span class="plain-syntax">);</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">from</span><span class="plain-syntax"> == </span><span class="identifier-syntax">infs</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"made sub-subject of itself"</span><span class="plain-syntax">);</span>
|
||||
|
@ -276,7 +276,7 @@ It has to do with the difference between "yourself" and "the player".
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::aliased_but_diverted</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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">infs</span><span class="plain-syntax">-></span><span class="element-syntax">alias_variable</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">infs</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="element-syntax">alias_variable</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vs</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ins.html#SP6" class="function-link"><span class="function-syntax">Instances::as_subject</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Rvalues::to_object_instance</span><span class="plain-syntax">(</span>
|
||||
|
@ -287,7 +287,29 @@ It has to do with the difference between "yourself" and "the player".
|
|||
<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>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. Breadth. </b>Some subjects are broad, covering many things, and others narrow — perhaps
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>Diversion is a similar tactic used to re-route knowledge about the "yourself"
|
||||
instance to become knowledge about the initial value of "player" instead:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::divert</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">InferenceSubjects::divert</span></span>:<br/>Inferences - <a href="5-inf.html#SP5">§5</a>, <a href="5-inf.html#SP8">§8</a><br/>Relation Inferences - <a href="5-ri.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-tmw.html#SP1" class="function-link"><span class="function-syntax">World::current_building_stage</span></a><span class="plain-syntax">() == </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="comment-syntax"> if ((I_yourself) && (player_VAR) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> == </span><a href="2-ins.html#SP6" class="function-link"><span class="function-syntax">Instances::as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I_yourself</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><a href="4-vs.html#SP2" class="function-link"><span class="function-syntax">VariableSubjects::get_initial_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">player_VAR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">divert</span><span class="plain-syntax"> = </span><a href="4-is.html#SP14" class="function-link"><span class="function-syntax">InferenceSubjects::from_specification</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</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">divert</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">divert</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="element-syntax">alias_variable</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><a href="4-vs.html#SP2" class="function-link"><span class="function-syntax">VariableSubjects::get_initial_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="element-syntax">alias_variable</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">divert</span><span class="plain-syntax"> = </span><a href="4-is.html#SP14" class="function-link"><span class="function-syntax">InferenceSubjects::from_specification</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</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">divert</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">divert</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">infs</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. Breadth. </b>Some subjects are broad, covering many things, and others narrow — perhaps
|
||||
used to specify facts about only a single person or value.
|
||||
</p>
|
||||
|
||||
|
@ -296,7 +318,7 @@ This makes testing for containment simple:
|
|||
</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">InferenceSubjects::is_within</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">InferenceSubjects::is_within</span></span>:<br/><a href="4-is.html#SP11">§11</a><br/>Indefinite Appearance - <a href="3-ia.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">smaller</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">larger</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::is_within</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">InferenceSubjects::is_within</span></span>:<br/><a href="4-is.html#SP12">§12</a><br/>Indefinite Appearance - <a href="3-ia.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">smaller</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">larger</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">smaller</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">smaller</span><span class="plain-syntax"> == </span><span class="identifier-syntax">larger</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><span class="identifier-syntax">smaller</span><span class="plain-syntax"> = </span><span class="identifier-syntax">smaller</span><span class="plain-syntax">-></span><span class="element-syntax">broader_than</span><span class="plain-syntax">;</span>
|
||||
|
@ -306,33 +328,33 @@ This makes testing for containment simple:
|
|||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::is_strictly_within</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">larger</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">subj</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</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><a href="4-is.html#SP9" class="function-link"><span class="function-syntax">InferenceSubjects::is_within</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">-></span><span class="element-syntax">broader_than</span><span class="plain-syntax">, </span><span class="identifier-syntax">larger</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-is.html#SP10" class="function-link"><span class="function-syntax">InferenceSubjects::is_within</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">-></span><span class="element-syntax">broader_than</span><span class="plain-syntax">, </span><span class="identifier-syntax">larger</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>Where possible, we use the above tests; where we need to perform other
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>Where possible, we use the above tests; where we need to perform other
|
||||
operations scaling the subject tree, we use the following:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</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">InferenceSubjects::narrowest_broader_subject</span></span>:<br/>Instances - <a href="2-ins.html#SP10">§10</a><br/>Properties - <a href="3-prp.html#SP24">§24</a><br/>Properties of Values - <a href="3-pov.html#SP4">§4</a><br/>Emit Property Values - <a href="3-epv.html#SP1_1_4">§1.1.4</a><br/>Kind Subjects - <a href="4-ks.html#SP10">§10</a><br/>Inferences - <a href="5-inf.html#SP16">§16</a>, <a href="5-inf.html#SP18">§18</a><br/>Property Permissions - <a href="5-pp.html#SP2">§2</a><br/>The Model World - <a href="5-tmw.html#SP4_2_1">§4.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</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">InferenceSubjects::narrowest_broader_subject</span></span>:<br/>Instances - <a href="2-ins.html#SP10">§10</a><br/>Properties - <a href="3-prp.html#SP24">§24</a><br/>Properties of Values - <a href="3-pov.html#SP4">§4</a><br/>Emit Property Values - <a href="3-epv.html#SP1_1_4">§1.1.4</a><br/>Kind Subjects - <a href="4-ks.html#SP10">§10</a><br/>Property Inferences - <a href="5-pi.html#SP4">§4</a><br/>Property Permissions - <a href="5-pp.html#SP2">§2</a><br/>The Model World - <a href="5-tmw.html#SP4_2_1">§4.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">narrow</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">narrow</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</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>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">narrow</span><span class="plain-syntax">-></span><span class="element-syntax">broader_than</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>The containment hierarchy is a fluid one, but subjects may only be demoted.
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. </b>The containment hierarchy is a fluid one, but subjects may only be demoted.
|
||||
This means that any information derived from a subject's position relative to
|
||||
other subjects, before the change, continues to be valid. If \(S\subseteq T\)
|
||||
before, then this remains true afterwards.
|
||||
</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">InferenceSubjects::falls_within</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">InferenceSubjects::falls_within</span></span>:<br/>Instances - <a href="2-ins.html#SP11">§11</a><br/>Kind Subjects - <a href="4-ks.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">broad</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-is.html#SP9" class="function-link"><span class="function-syntax">InferenceSubjects::is_within</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">broad</span><span class="plain-syntax">, </span><span class="identifier-syntax">narrow</span><span class="plain-syntax">-></span><span class="element-syntax">broader_than</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::falls_within</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">InferenceSubjects::falls_within</span></span>:<br/>Instances - <a href="2-ins.html#SP11">§11</a><br/>Kind Subjects - <a href="4-ks.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">broad</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-is.html#SP10" class="function-link"><span class="function-syntax">InferenceSubjects::is_within</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">broad</span><span class="plain-syntax">, </span><span class="identifier-syntax">narrow</span><span class="plain-syntax">-></span><span class="element-syntax">broader_than</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">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"subject breadth change leads to inconsistency"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">narrow</span><span class="plain-syntax">-></span><span class="element-syntax">broader_than</span><span class="plain-syntax"> = </span><span class="identifier-syntax">broad</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP12" class="paragraph-anchor"></a><b>§12. Access functions. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. Access functions. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::where_created</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
|
@ -345,7 +367,7 @@ before, then this remains true afterwards.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> &(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="element-syntax">assemblies</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::get_inferences</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">InferenceSubjects::get_inferences</span></span>:<br/><a href="4-is.html#SP16">§16</a><br/>Inferences - <a href="5-inf.html#SP15">§15</a>, <a href="5-inf.html#SP22">§22</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::get_inferences</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">InferenceSubjects::get_inferences</span></span>:<br/><a href="4-is.html#SP17">§17</a><br/>Inferences - <a href="5-inf.html#SP5">§5</a>, <a href="5-inf.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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">infs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="element-syntax">inf_list</span><span class="plain-syntax">):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -353,17 +375,17 @@ before, then this remains true afterwards.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="element-syntax">imp_list</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::get_permissions</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">InferenceSubjects::get_permissions</span></span>:<br/>Property Permissions - <a href="5-pp.html#SP2">§2</a>, <a href="5-pp.html#SP3_2">§3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::get_permissions</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::get_permissions</span></span>:<br/>Property Permissions - <a href="5-pp.html#SP2">§2</a>, <a href="5-pp.html#SP3_2">§3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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">infs</span><span class="plain-syntax">-></span><span class="element-syntax">permissions_list</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. Conversions to and from kinds and instances. </b>Note that the following does not pick up variables (in the form of their lvalue
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. Conversions to and from kinds and instances. </b>Note that the following does not pick up variables (in the form of their lvalue
|
||||
specifications) or relations (from their rvalue constants): it handles only
|
||||
kinds and instances.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::from_specification</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::from_specification</span></span>:<br/>Assert Propositions - <a href="1-ap.html#SP9">§9</a><br/>Nonlocal Variables - <a href="2-nv.html#SP14">§14</a><br/>Relation Subjects - <a href="4-rs.html#SP4">§4</a><br/>Inferences - <a href="5-inf.html#SP21">§21</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::from_specification</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::from_specification</span></span>:<br/><a href="4-is.html#SP9">§9</a><br/>Assert Propositions - <a href="1-ap.html#SP9">§9</a><br/>Nonlocal Variables - <a href="2-nv.html#SP14">§14</a><br/>Relation Subjects - <a href="4-rs.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</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">Specifications::is_kind_like</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</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">Specifications::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
|
@ -375,11 +397,11 @@ kinds and instances.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b>And this amounts to a partial inverse of that function:
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b>And this amounts to a partial inverse of that function:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::as_constant</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::as_constant</span></span>:<br/>Assert Propositions - <a href="1-ap.html#SP6_7">§6.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">InferenceSubjects::as_constant</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::as_constant</span></span>:<br/>Assert Propositions - <a href="1-ap.html#SP6_7">§6.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Specifications::from_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
|
||||
|
@ -389,15 +411,15 @@ kinds and instances.
|
|||
<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>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b>...and, because it makes conditions more legible,
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. </b>...and, because it makes conditions more legible,
|
||||
</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">InferenceSubjects::is_an_object</span><button class="popup" onclick="togglePopup('usagePopup12')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup12">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::is_an_object</span></span>:<br/>Emit Property Values - <a href="3-epv.html#SP3_1">§3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::is_an_object</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::is_an_object</span></span>:<br/>Emit Property Values - <a href="3-epv.html#SP3_1">§3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-is2.html#SP1" class="function-link"><span class="function-syntax">InstanceSubjects::to_object_instance</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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><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">int</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::is_a_kind_of_object</span><button class="popup" onclick="togglePopup('usagePopup13')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup13">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::is_a_kind_of_object</span></span>:<br/>Emit Property Values - <a href="3-epv.html#SP3_1">§3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::is_a_kind_of_object</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::is_a_kind_of_object</span></span>:<br/>Emit Property Values - <a href="3-epv.html#SP3_1">§3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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">infs</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><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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="identifier-syntax">Kinds::Behaviour::is_subkind_of_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">TRUE</span><span class="plain-syntax">;</span>
|
||||
|
@ -405,14 +427,14 @@ kinds and instances.
|
|||
<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>
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. Logging. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. Logging. </b></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">InferenceSubjects::log</span><button class="popup" onclick="togglePopup('usagePopup14')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup14">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::log</span></span>:<br/>Knowledge Module - <a href="1-km.html#SP2">§2</a>, <a href="1-km.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::log</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::log</span></span>:<br/>Knowledge Module - <a href="1-km.html#SP2">§2</a>, <a href="1-km.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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">infs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"<null infs>"</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</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">infs</span><span class="plain-syntax">-></span><span class="element-syntax">infs_name_in_log</span><span class="plain-syntax">) { </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"infs<%s>"</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="element-syntax">infs_name_in_log</span><span class="plain-syntax">); </span><span class="reserved-syntax">return</span><span class="plain-syntax">; }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><a href="4-is.html#SP18" class="function-link"><span class="function-syntax">InferenceSubjects::get_name_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><a href="4-is.html#SP19" class="function-link"><span class="function-syntax">InferenceSubjects::get_name_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::to_nonobject_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"infs'%u'-k"</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>
|
||||
|
||||
|
@ -427,21 +449,21 @@ kinds and instances.
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::log_knowledge_about</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Inferences drawn about $j:\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">); </span><span class="identifier-syntax">LOG_INDENT</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax">, </span><a href="4-is.html#SP12" class="function-link"><span class="function-syntax">InferenceSubjects::get_inferences</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax">, </span><a href="4-is.html#SP13" class="function-link"><span class="function-syntax">InferenceSubjects::get_inferences</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"$I\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG_OUTDENT</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b>The subjects hierarchy is unlikely to reach a depth of 20 except by a bug,
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b>The subjects hierarchy is unlikely to reach a depth of 20 except by a bug,
|
||||
but that's exactly when we need the debugging log most, so the following is
|
||||
coded to ensure that it terminates whether or not the subjects form a connected
|
||||
DAG.
|
||||
</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">InferenceSubjects::log_infs_hierarchy</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::log_infs_hierarchy</span></span>:<br/><a href="4-is.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::log_infs_hierarchy</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::log_infs_hierarchy</span></span>:<br/><a href="4-is.html#SP7">§7</a></span></button><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">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Subjects hierarchy:\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-is.html#SP17" class="function-link"><span class="function-syntax">InferenceSubjects::log_subjects_hierarchically</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-is.html#SP18" class="function-link"><span class="function-syntax">InferenceSubjects::log_subjects_hierarchically</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="constant-syntax">0</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">InferenceSubjects::log_subjects_hierarchically</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">count</span><span class="plain-syntax">) {</span>
|
||||
|
@ -451,12 +473,12 @@ DAG.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">narrower</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</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">narrower</span><span class="plain-syntax">-></span><span class="element-syntax">broader_than</span><span class="plain-syntax"> == </span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG_INDENT</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="4-is.html#SP17" class="function-link"><span class="function-syntax">InferenceSubjects::log_subjects_hierarchically</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrower</span><span class="plain-syntax">, </span><span class="identifier-syntax">count</span><span class="plain-syntax">+1);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-is.html#SP18" class="function-link"><span class="function-syntax">InferenceSubjects::log_subjects_hierarchically</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrower</span><span class="plain-syntax">, </span><span class="identifier-syntax">count</span><span class="plain-syntax">+1);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG_OUTDENT</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. Methods. </b>The first of these should fill in a name, if one is available, placing the
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. Methods. </b>The first of these should fill in a name, if one is available, placing the
|
||||
word range into the wording.
|
||||
</p>
|
||||
|
||||
|
@ -466,7 +488,7 @@ word range into the wording.
|
|||
<span class="identifier-syntax">VOID_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">GET_NAME_TEXT_INFS_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">)</span>
|
||||
|
||||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::get_name_text</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::get_name_text</span></span>:<br/><a href="4-is.html#SP16">§16</a><br/>Knowledge Module - <a href="1-km.html#SP4">§4</a><br/>Condition Properties - <a href="3-cp.html#SP3_1">§3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::get_name_text</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::get_name_text</span></span>:<br/><a href="4-is.html#SP17">§17</a><br/>Knowledge Module - <a href="1-km.html#SP4">§4</a><br/>Condition Properties - <a href="3-cp.html#SP3_1">§3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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">infs</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">"null INFS"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VOID_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="element-syntax">infs_family</span><span class="plain-syntax">, </span><span class="constant-syntax">GET_NAME_TEXT_INFS_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, &</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
|
@ -478,7 +500,7 @@ word range into the wording.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. </b>The default certainty level is the level assumed in sentences which give
|
||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. </b>The default certainty level is the level assumed in sentences which give
|
||||
no specific certainty: so it affects "a window is open" but not "a window
|
||||
is usually open". This depends on the subject rather than the inference,
|
||||
and in general a subject which is broad will choose to reduce the default
|
||||
|
@ -491,13 +513,13 @@ level of certainty.
|
|||
<span class="identifier-syntax">INT_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">GET_DEFAULT_CERTAINTY_INFS_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::get_default_certainty</span><button class="popup" onclick="togglePopup('usagePopup17')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup17">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::get_default_certainty</span></span>:<br/>Inferences - <a href="5-inf.html#SP22_3">§22.3</a><br/>Property Inferences - <a href="5-pi.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::get_default_certainty</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::get_default_certainty</span></span>:<br/>Inferences - <a href="5-inf.html#SP8_2">§8.2</a><br/>Property Inferences - <a href="5-pi.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cert</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">INT_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">cert</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="element-syntax">infs_family</span><span class="plain-syntax">, </span><span class="constant-syntax">GET_DEFAULT_CERTAINTY_INFS_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</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">cert</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. </b>In general property permissions work just as well whatever subject is getting
|
||||
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§21. </b>In general property permissions work just as well whatever subject is getting
|
||||
the new property, but the following is called to give the subject a chance to
|
||||
react. It should return a general pointer to any extra data it wants to attach
|
||||
to the permission, or <span class="extract"><span class="extract-syntax">NULL_GENERAL_POINTER</span></span> if it has nothing to add.
|
||||
|
@ -509,14 +531,14 @@ to the permission, or <span class="extract"><span class="extract-syntax">NULL_GE
|
|||
<span class="identifier-syntax">VOID_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">NEW_PERMISSION_GRANTED_INFS_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">general_pointer</span><span class="plain-syntax"> *</span><span class="identifier-syntax">G</span><span class="plain-syntax">)</span>
|
||||
|
||||
<span class="identifier-syntax">general_pointer</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::new_permission_granted</span><button class="popup" onclick="togglePopup('usagePopup18')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup18">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::new_permission_granted</span></span>:<br/>Property Permissions - <a href="5-pp.html#SP3_1">§3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">general_pointer</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::new_permission_granted</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::new_permission_granted</span></span>:<br/>Property Permissions - <a href="5-pp.html#SP3_1">§3.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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">infs</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">"null INFS"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">general_pointer</span><span class="plain-syntax"> </span><span class="identifier-syntax">G</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL_GENERAL_POINTER</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VOID_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="element-syntax">infs_family</span><span class="plain-syntax">, </span><span class="constant-syntax">NEW_PERMISSION_GRANTED_INFS_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, &</span><span class="identifier-syntax">G</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">G</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§21. </b>Suppose there is an instance, such as "green", belonging to a kind of
|
||||
<p class="commentary firstcommentary"><a id="SP22" class="paragraph-anchor"></a><b>§22. </b>Suppose there is an instance, such as "green", belonging to a kind of
|
||||
value which coincides with a property of some subject. Then the following is
|
||||
called to tell the subject in question that it needs to become the domain
|
||||
of "green" as an adjective.
|
||||
|
@ -528,13 +550,13 @@ of "green" as an adjective.
|
|||
<span class="identifier-syntax">VOID_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">MAKE_ADJ_CONST_DOMAIN_INFS_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nc</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::make_adj_const_domain</span><button class="popup" onclick="togglePopup('usagePopup19')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup19">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::make_adj_const_domain</span></span>:<br/>Instances - <a href="2-ins.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::make_adj_const_domain</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::make_adj_const_domain</span></span>:<br/>Instances - <a href="2-ins.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nc</span><span class="plain-syntax">, </span><span class="reserved-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">infs</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">"null INFS"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VOID_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="element-syntax">infs_family</span><span class="plain-syntax">, </span><span class="constant-syntax">MAKE_ADJ_CONST_DOMAIN_INFS_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">nc</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP22" class="paragraph-anchor"></a><b>§22. </b>Part of the process of "completing" the model — that is, filling in detail
|
||||
<p class="commentary firstcommentary"><a id="SP23" class="paragraph-anchor"></a><b>§23. </b>Part of the process of "completing" the model — that is, filling in detail
|
||||
not spelled out explicitly in assertion sentences — is to ask each subject
|
||||
to fill in anything missing about itself:
|
||||
</p>
|
||||
|
@ -544,12 +566,12 @@ to fill in anything missing about itself:
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">VOID_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">COMPLETE_MODEL_INFS_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::complete_model</span><button class="popup" onclick="togglePopup('usagePopup20')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup20">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::complete_model</span></span>:<br/>The Model World - <a href="5-tmw.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::complete_model</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::complete_model</span></span>:<br/>The Model World - <a href="5-tmw.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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">infs</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">"null INFS"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VOID_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="element-syntax">infs_family</span><span class="plain-syntax">, </span><span class="constant-syntax">COMPLETE_MODEL_INFS_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP23" class="paragraph-anchor"></a><b>§23. </b>Each subject also has a chance to check the knowledge about it for
|
||||
<p class="commentary firstcommentary"><a id="SP24" class="paragraph-anchor"></a><b>§24. </b>Each subject also has a chance to check the knowledge about it for
|
||||
consistency, and to issue problem messages if something is wrong:
|
||||
</p>
|
||||
|
||||
|
@ -558,12 +580,12 @@ consistency, and to issue problem messages if something is wrong:
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">VOID_METHOD_TYPE</span><span class="plain-syntax">(</span><span class="constant-syntax">CHECK_MODEL_INFS_MTID</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::check_model</span><button class="popup" onclick="togglePopup('usagePopup21')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup21">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::check_model</span></span>:<br/>The Model World - <a href="5-tmw.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">InferenceSubjects::check_model</span><button class="popup" onclick="togglePopup('usagePopup22')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup22">Usage of <span class="code-font"><span class="function-syntax">InferenceSubjects::check_model</span></span>:<br/>The Model World - <a href="5-tmw.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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">infs</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">"null INFS"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VOID_METHOD_CALL</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="element-syntax">infs_family</span><span class="plain-syntax">, </span><span class="constant-syntax">CHECK_MODEL_INFS_MTID</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP24" class="paragraph-anchor"></a><b>§24. </b>Here we must compile run-time code which tests whether the value in <span class="extract"><span class="extract-syntax">t_0</span></span>
|
||||
<p class="commentary firstcommentary"><a id="SP25" class="paragraph-anchor"></a><b>§25. </b>Here we must compile run-time code which tests whether the value in <span class="extract"><span class="extract-syntax">t_0</span></span>
|
||||
is a constant which the subject gives information about, given that we already
|
||||
know it has the right atomic kind. (In some cases there will be nothing to
|
||||
test — if we know that <span class="extract"><span class="extract-syntax">t_0</span></span> has kind "number" then it must be what we want.
|
||||
|
@ -589,12 +611,12 @@ condition blank.)
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP25" class="paragraph-anchor"></a><b>§25. </b>The model world needs to have its complex initial state stored somewhere
|
||||
<p class="commentary firstcommentary"><a id="SP26" class="paragraph-anchor"></a><b>§26. </b>The model world needs to have its complex initial state stored somewhere
|
||||
at run-time. Each subject may need its own data structure, and we want no
|
||||
part of thinking about what it looks like.
|
||||
</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP26" class="paragraph-anchor"></a><b>§26. </b><span class="extract"><span class="extract-syntax">EMIT_ALL_INFS_MTID</span></span> has a chance to compile all its subjects at once,
|
||||
<p class="commentary firstcommentary"><a id="SP27" class="paragraph-anchor"></a><b>§27. </b><span class="extract"><span class="extract-syntax">EMIT_ALL_INFS_MTID</span></span> has a chance to compile all its subjects at once,
|
||||
which enables this to be done in a funny order or in some consolidated
|
||||
array, or else have its subjects compiled one at a time in order of their
|
||||
creation. <span class="extract"><span class="extract-syntax">EMIT_ALL_INFS_MTID</span></span> should return <span class="extract"><span class="extract-syntax">TRUE</span></span> to indicate the former
|
||||
|
@ -612,7 +634,7 @@ for an individual subject.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP16" class="function-link"><span class="function-syntax">Inferences::verify_prop_states</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-pi.html#SP4" class="function-link"><span class="function-syntax">PropertyInferences::verify_prop_states</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">family</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">family</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax">) {</span>
|
||||
|
@ -628,7 +650,7 @@ for an individual subject.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP27" class="paragraph-anchor"></a><b>§27. Plugin data. </b>See <a href="../runtime-module/4-plg.html" class="internal">Plugins (in runtime)</a>, but to recap, plugins are inessential components
|
||||
<p class="commentary firstcommentary"><a id="SP28" class="paragraph-anchor"></a><b>§28. Plugin data. </b>See <a href="../runtime-module/4-plg.html" class="internal">Plugins (in runtime)</a>, but to recap, plugins are inessential components
|
||||
of Inform which might or might not be in use for any given compilation run.
|
||||
</p>
|
||||
|
||||
|
@ -641,7 +663,7 @@ returning a pointer to it.
|
|||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="identifier-syntax">ATTACH_PLUGIN_DATA_TO_SUBJECT</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">S</span><span class="plain-syntax">)-></span><span class="element-syntax">additional_data_for_plugins</span><span class="plain-syntax">[</span><span class="identifier-syntax">name</span><span class="plain-syntax">##</span><span class="identifier-syntax">_plugin</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">] = (</span><span class="reserved-syntax">void</span><span class="plain-syntax"> *) (</span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP28" class="paragraph-anchor"></a><b>§28. </b>Then, to access that same data, the following — though in practice each
|
||||
<p class="commentary firstcommentary"><a id="SP29" class="paragraph-anchor"></a><b>§29. </b>Then, to access that same data, the following — though in practice each
|
||||
plugin will define further macros to make more abbreviated forms. Many of
|
||||
the plugins from the <a href="../if-module/index.html" class="internal">if</a> module are concerned only with instances — rooms
|
||||
and doors, say — so <span class="extract"><span class="extract-syntax">PLUGIN_DATA_ON_INSTANCE</span></span> pays its way.
|
||||
|
|
|
@ -110,13 +110,13 @@ a go-between.
|
|||
<span class="plain-syntax"> </span><a href="4-is2.html#SP1" class="function-link"><span class="function-syntax">InstanceSubjects::family</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">STORE_POINTER_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">InstanceSubjects::to_instance</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">InstanceSubjects::to_instance</span></span>:<br/>Emit Property Values - <a href="3-epv.html#SP1">§1</a>, <a href="3-epv.html#SP2">§2</a>, <a href="3-epv.html#SP2_1">§2.1</a><br/>Inference Subjects - <a href="4-is.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">InstanceSubjects::to_instance</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">InstanceSubjects::to_instance</span></span>:<br/>Emit Property Values - <a href="3-epv.html#SP1">§1</a>, <a href="3-epv.html#SP2">§2</a>, <a href="3-epv.html#SP2_1">§2.1</a><br/>Inference Subjects - <a href="4-is.html#SP15">§15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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">infs</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="element-syntax">infs_family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">instances_family</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">RETRIEVE_POINTER_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="element-syntax">represents</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">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">InstanceSubjects::to_object_instance</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">InstanceSubjects::to_object_instance</span></span>:<br/>Assert Propositions - <a href="1-ap.html#SP7">§7</a><br/>Inference Subjects - <a href="4-is.html#SP15">§15</a><br/>Inferences - <a href="5-inf.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">InstanceSubjects::to_object_instance</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">InstanceSubjects::to_object_instance</span></span>:<br/>Assert Propositions - <a href="1-ap.html#SP7">§7</a><br/>Inference Subjects - <a href="4-is.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><a href="4-is2.html#SP1" class="function-link"><span class="function-syntax">InstanceSubjects::to_instance</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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">I</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Kinds::Behaviour::is_object</span><span class="plain-syntax">(</span><a href="2-ins.html#SP10" class="function-link"><span class="function-syntax">Instances::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)))) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</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">NULL</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -134,12 +134,12 @@ a little trickier than for other subject families:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">KindSubjects::from_kind</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">KindSubjects::from_kind</span></span>:<br/><a href="4-ks.html#SP4">§4</a>, <a href="4-ks.html#SP10">§10</a><br/>Knowledge Module - <a href="1-km.html#SP4">§4</a><br/>Assert Propositions - <a href="1-ap.html#SP6_5_2">§6.5.2</a>, <a href="1-ap.html#SP9">§9</a><br/>Instances - <a href="2-ins.html#SP11">§11</a><br/>Indefinite Appearance - <a href="3-ia.html#SP1">§1</a><br/>The Provision Relation - <a href="3-tpr.html#SP6_2">§6.2</a><br/>Setting Property Relation - <a href="3-spr2.html#SP3">§3</a><br/>Inference Subjects - <a href="4-is.html#SP13">§13</a><br/>Instance Subjects - <a href="4-is2.html#SP1">§1</a></span></button><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="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">KindSubjects::from_kind</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">KindSubjects::from_kind</span></span>:<br/><a href="4-ks.html#SP4">§4</a>, <a href="4-ks.html#SP10">§10</a><br/>Knowledge Module - <a href="1-km.html#SP4">§4</a><br/>Assert Propositions - <a href="1-ap.html#SP6_5_2">§6.5.2</a>, <a href="1-ap.html#SP9">§9</a><br/>Instances - <a href="2-ins.html#SP11">§11</a><br/>Indefinite Appearance - <a href="3-ia.html#SP1">§1</a><br/>The Provision Relation - <a href="3-tpr.html#SP6_2">§6.2</a><br/>Setting Property Relation - <a href="3-spr2.html#SP3">§3</a><br/>Inference Subjects - <a href="4-is.html#SP14">§14</a><br/>Instance Subjects - <a href="4-is2.html#SP1">§1</a></span></button><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="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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</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">K</span><span class="plain-syntax">-></span><span class="identifier-syntax">construct</span><span class="plain-syntax">-></span><span class="identifier-syntax">base_as_infs</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">KindSubjects::to_kind</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">KindSubjects::to_kind</span></span>:<br/><a href="4-ks.html#SP7">§7</a>, <a href="4-ks.html#SP8">§8</a>, <a href="4-ks.html#SP10">§10</a><br/>Knowledge Module - <a href="1-km.html#SP4">§4</a><br/>Instances - <a href="2-ins.html#SP10">§10</a><br/>Properties - <a href="3-prp.html#SP26">§26</a><br/>Either-Or Properties - <a href="3-ep.html#SP3">§3</a><br/>Indefinite Appearance - <a href="3-ia.html#SP1">§1</a><br/>Emit Property Values - <a href="3-epv.html#SP1">§1</a>, <a href="3-epv.html#SP2">§2</a>, <a href="3-epv.html#SP2_1">§2.1</a><br/>Inference Subjects - <a href="4-is.html#SP14">§14</a>, <a href="4-is.html#SP15">§15</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">KindSubjects::to_kind</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">KindSubjects::to_kind</span></span>:<br/><a href="4-ks.html#SP7">§7</a>, <a href="4-ks.html#SP8">§8</a>, <a href="4-ks.html#SP10">§10</a><br/>Knowledge Module - <a href="1-km.html#SP4">§4</a><br/>Instances - <a href="2-ins.html#SP10">§10</a><br/>Properties - <a href="3-prp.html#SP26">§26</a><br/>Either-Or Properties - <a href="3-ep.html#SP3">§3</a><br/>Indefinite Appearance - <a href="3-ia.html#SP1">§1</a><br/>Emit Property Values - <a href="3-epv.html#SP1">§1</a>, <a href="3-epv.html#SP2">§2</a>, <a href="3-epv.html#SP2_1">§2.1</a><br/>Inference Subjects - <a href="4-is.html#SP15">§15</a>, <a href="4-is.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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">infs</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="element-syntax">infs_family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">kinds_family</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">Kinds::base_construction</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RETRIEVE_POINTER_kind_constructor</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="element-syntax">represents</span><span class="plain-syntax">));</span>
|
||||
|
@ -148,7 +148,7 @@ a little trickier than for other subject families:
|
|||
<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>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">KindSubjects::to_nonobject_kind</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">KindSubjects::to_nonobject_kind</span></span>:<br/>Inference Subjects - <a href="4-is.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">KindSubjects::to_nonobject_kind</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">KindSubjects::to_nonobject_kind</span></span>:<br/>Inference Subjects - <a href="4-is.html#SP17">§17</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::to_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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="identifier-syntax">Kinds::Behaviour::is_subkind_of_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">NULL</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">K</span><span class="plain-syntax">;</span>
|
||||
|
@ -248,12 +248,12 @@ to know if one base kind contains another.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="function-syntax">KindSubjects::super</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="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::from_kind</span></a><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">return</span><span class="plain-syntax"> </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::to_kind</span></a><span class="plain-syntax">(</span><a href="4-is.html#SP10" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::to_kind</span></a><span class="plain-syntax">(</span><a href="4-is.html#SP11" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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">KindSubjects::move_within</span><span class="plain-syntax">(</span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sub</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">super</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">super</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><a href="4-is.html#SP11" class="function-link"><span class="function-syntax">InferenceSubjects::falls_within</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="4-is.html#SP12" class="function-link"><span class="function-syntax">InferenceSubjects::falls_within</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::from_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">sub</span><span class="plain-syntax">), </span><a href="4-ks.html#SP3" class="function-link"><span class="function-syntax">KindSubjects::from_kind</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">super</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
|
|
@ -92,12 +92,16 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">relations_family</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">RelationSubjects::from_bp</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">RelationSubjects::from_bp</span></span>:<br/><a href="4-rs.html#SP3">§3</a>, <a href="4-rs.html#SP4">§4</a><br/>Relation Inferences - <a href="5-ri.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</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">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">knowledge_about_bp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="function-syntax">RelationSubjects::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-is.html#SP7" class="function-link"><span class="function-syntax">InferenceSubjects::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">relations</span><span class="plain-syntax">, </span><a href="4-rs.html#SP1" class="function-link"><span class="function-syntax">RelationSubjects::family</span></a><span class="plain-syntax">(),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STORE_POINTER_binary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</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">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">RelationSubjects::to_bp</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">RelationSubjects::to_bp</span></span>:<br/><a href="4-rs.html#SP3">§3</a>, <a href="4-rs.html#SP4">§4</a><br/>Inference Subjects - <a href="4-is.html#SP16">§16</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">RelationSubjects::to_bp</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">RelationSubjects::to_bp</span></span>:<br/><a href="4-rs.html#SP3">§3</a>, <a href="4-rs.html#SP4">§4</a><br/>Inference Subjects - <a href="4-is.html#SP17">§17</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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">infs</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="element-syntax">infs_family</span><span class="plain-syntax"> == </span><span class="identifier-syntax">relations_family</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">RETRIEVE_POINTER_binary_predicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="element-syntax">represents</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">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -106,11 +110,11 @@ function togglePopup(material_id) {
|
|||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></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">RelationSubjects::certainty</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">RelationSubjects::certainty</span></span>:<br/><a href="4-rs.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">RelationSubjects::certainty</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">RelationSubjects::certainty</span></span>:<br/><a href="4-rs.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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">CERTAIN_CE</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">RelationSubjects::get_name</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">RelationSubjects::get_name</span></span>:<br/><a href="4-rs.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">family</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RelationSubjects::get_name</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">RelationSubjects::get_name</span></span>:<br/><a href="4-rs.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">family</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> *</span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">; </span><span class="comment-syntax"> nameless</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -119,7 +123,7 @@ function togglePopup(material_id) {
|
|||
</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">RelationSubjects::complete_model</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">RelationSubjects::complete_model</span></span>:<br/><a href="4-rs.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">family</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RelationSubjects::complete_model</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">RelationSubjects::complete_model</span></span>:<br/><a href="4-rs.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">family</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">domain_size</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NUMBER_CREATED</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="4-rs.html#SP1" class="function-link"><span class="function-syntax">RelationSubjects::to_bp</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
|
@ -130,9 +134,9 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> (</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">right_way_round</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTRelations::equivalence_relation_make_singleton_partitions</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">domain_size</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><a href="5-inf.html#SP11" class="function-link"><span class="function-syntax">Inferences::bp_as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">), </span><span class="identifier-syntax">arbitrary_relation_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><a href="4-rs.html#SP1" class="function-link"><span class="function-syntax">RelationSubjects::from_bp</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">), </span><span class="identifier-syntax">arbitrary_relation_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs0</span><span class="plain-syntax">, *</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP14" class="function-link"><span class="function-syntax">Inferences::get_references</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, &</span><span class="identifier-syntax">infs0</span><span class="plain-syntax">, &</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ri.html#SP2" class="function-link"><span class="function-syntax">RelationInferences::get_term_subjects</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, &</span><span class="identifier-syntax">infs0</span><span class="plain-syntax">, &</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTRelations::equivalence_relation_merge_classes</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">domain_size</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">infs0</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs1</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -149,7 +153,7 @@ checking in.
|
|||
</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">RelationSubjects::check_model</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">RelationSubjects::check_model</span></span>:<br/><a href="4-rs.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">family</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RelationSubjects::check_model</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">RelationSubjects::check_model</span></span>:<br/><a href="4-rs.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">family</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><a href="4-rs.html#SP1" class="function-link"><span class="function-syntax">RelationSubjects::to_bp</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">f</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Relations::Explicit::get_form_of_relation</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
|
||||
|
@ -177,10 +181,10 @@ checking in.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">leftc</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">prn</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs2</span><span class="plain-syntax"> = </span><a href="4-is.html#SP13" class="function-link"><span class="function-syntax">InferenceSubjects::from_specification</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">prn</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs2</span><span class="plain-syntax"> = </span><a href="4-is.html#SP14" class="function-link"><span class="function-syntax">InferenceSubjects::from_specification</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">leftc</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">infs2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">m</span><span class="plain-syntax"> = </span><span class="identifier-syntax">right_counts</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]++;</span>
|
||||
|
@ -190,8 +194,8 @@ checking in.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">leftc</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">inf1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">inf</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">leftc</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::infs_contradiction_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">BelievedImpossible</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf1</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf1</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="string-syntax">"can only relate to one other thing in this way"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"since the relation in question is one-to-one."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -201,8 +205,8 @@ checking in.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</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">right_counts</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">] >= </span><span class="constant-syntax">2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::infs_contradiction_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_Relation1to1Right</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_first</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_second</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_first</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_second</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="string-syntax">"can only relate to one other thing in this way"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"since the relation in question is one-to-one."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -232,12 +236,12 @@ checking in.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax">) </span><span class="identifier-syntax">right_counts</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">] = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><a href="5-inf.html#SP11" class="function-link"><span class="function-syntax">Inferences::bp_as_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">), </span><span class="identifier-syntax">arbitrary_relation_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><a href="4-rs.html#SP1" class="function-link"><span class="function-syntax">RelationSubjects::from_bp</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">), </span><span class="identifier-syntax">arbitrary_relation_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">left_val</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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">right_val</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP14" class="function-link"><span class="function-syntax">Inferences::get_references_spec</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &</span><span class="identifier-syntax">left_val</span><span class="plain-syntax">, &</span><span class="identifier-syntax">right_val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">left_infs</span><span class="plain-syntax"> = </span><a href="4-is.html#SP13" class="function-link"><span class="function-syntax">InferenceSubjects::from_specification</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">left_val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">right_infs</span><span class="plain-syntax"> = </span><a href="4-is.html#SP13" class="function-link"><span class="function-syntax">InferenceSubjects::from_specification</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ri.html#SP2" class="function-link"><span class="function-syntax">RelationInferences::get_term_specs</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &</span><span class="identifier-syntax">left_val</span><span class="plain-syntax">, &</span><span class="identifier-syntax">right_val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">left_infs</span><span class="plain-syntax"> = </span><a href="4-is.html#SP14" class="function-link"><span class="function-syntax">InferenceSubjects::from_specification</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">left_val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">right_infs</span><span class="plain-syntax"> = </span><a href="4-is.html#SP14" class="function-link"><span class="function-syntax">InferenceSubjects::from_specification</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">left_id</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">left_infs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">left_infs</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">):(-1);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">right_id</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">right_infs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">right_infs</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">):(-1);</span>
|
||||
|
||||
|
@ -259,8 +263,8 @@ checking in.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">left_counts</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">] >= </span><span class="constant-syntax">2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::infs_contradiction_problem</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_RelationVtoOContradiction</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">left_first</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">left_second</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">left_first</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">left_second</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="string-syntax">"can only relate to one other thing in this way"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"since the relation in question is various-to-one."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -270,8 +274,8 @@ checking in.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">right_counts</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">] >= </span><span class="constant-syntax">2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::infs_contradiction_problem</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_RelationOtoVContradiction</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_first</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_second</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_first</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_second</span><span class="plain-syntax">[</span><span class="identifier-syntax">infs</span><span class="plain-syntax">-></span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">]),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="string-syntax">"can only be related to by one other thing in this way"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"since the relation in question is one-to-various."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -130,21 +130,21 @@ about the same subject.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = </span><a href="2-nv.html#SP8" class="function-link"><span class="function-syntax">NonlocalVariables::to_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_variable_initial_value</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) == </span><span class="identifier-syntax">P_variable_initial_value</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">inf</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">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">VariableSubjects::get_initial_value</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">VariableSubjects::get_initial_value</span></span>:<br/><a href="4-vs.html#SP4">§4</a><br/>Nonlocal Variables - <a href="2-nv.html#SP13">§13</a>, <a href="2-nv.html#SP14">§14</a><br/>Inference Subjects - <a href="4-is.html#SP8">§8</a><br/>Inferences - <a href="5-inf.html#SP21">§21</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">VariableSubjects::get_initial_value</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">VariableSubjects::get_initial_value</span></span>:<br/><a href="4-vs.html#SP4">§4</a><br/>Nonlocal Variables - <a href="2-nv.html#SP13">§13</a>, <a href="2-nv.html#SP14">§14</a><br/>Inference Subjects - <a href="4-is.html#SP8">§8</a>, <a href="4-is.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax"> = </span><a href="4-vs.html#SP2" class="function-link"><span class="function-syntax">VariableSubjects::get_initial_value_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</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">inf</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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">inf</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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">Specifications::new_UNKNOWN</span><span class="plain-syntax">(</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">VariableSubjects::origin_of_initial_value</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">VariableSubjects::origin_of_initial_value</span></span>:<br/><a href="4-vs.html#SP4">§4</a>, <a href="4-vs.html#SP4_1">§4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax"> = </span><a href="4-vs.html#SP2" class="function-link"><span class="function-syntax">VariableSubjects::get_initial_value_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</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">inf</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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">inf</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -72,6 +72,8 @@ function togglePopup(material_id) {
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inform7</a></li><li><a href="index.html">knowledge</a></li><li><a href="index.html#5">Chapter 5: Modelling</a></li><li><b>Property Inferences</b></li></ul></div>
|
||||
<p class="purpose">Inferences that a property of something is true, or has a particular value.</p>
|
||||
|
||||
<ul class="toc"><li><a href="5-pi.html#SP4">§4. Finding property states</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>We will make:
|
||||
</p>
|
||||
|
||||
|
@ -82,11 +84,11 @@ function togglePopup(material_id) {
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PropertyInferences::start</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">PropertyInferences::start</span></span>:<br/>Knowledge Module - <a href="1-km.html#SP3">§3</a></span></button><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_inf</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP2" class="function-link"><span class="function-syntax">Inferences::new_family</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"property_inf"</span><span class="plain-syntax">, </span><span class="constant-syntax">CI_DIFFER_IN_PROPERTY_VALUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">, </span><span class="constant-syntax">LOG_INF_MTID</span><span class="plain-syntax">, </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">, </span><span class="constant-syntax">COMPARE_INF_MTID</span><span class="plain-syntax">, </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::cmp</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP10" class="function-link"><span class="function-syntax">Inferences::new_family</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"property_inf"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">, </span><span class="constant-syntax">LOG_DETAILS_INF_MTID</span><span class="plain-syntax">, </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">, </span><span class="constant-syntax">COMPARE_INF_MTID</span><span class="plain-syntax">, </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::cmp</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">, </span><span class="constant-syntax">JOIN_INF_MTID</span><span class="plain-syntax">, </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::join</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">, </span><span class="constant-syntax">EXPLAIN_CONTRADICTION_INF_MTID</span><span class="plain-syntax">, </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::explain_contradiction</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">, </span><span class="constant-syntax">EXPLAIN_CONTRADICTION_INF_MTID</span><span class="plain-syntax">, </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::explain_contradiction</span></a><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">PropertyInferences::join</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
|
@ -94,8 +96,14 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Plugins::Call::property_value_notify</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">inferred_property</span><span class="plain-syntax">, </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">inferred_property_value</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>By convention, a pair of attached either/or properties which are negations of
|
||||
each other — say "open" and "closed" — are treated as if they were the
|
||||
same property but with different values.
|
||||
</p>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PropertyInferences::cmp</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i2</span><span class="plain-syntax">) {</span>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PropertyInferences::cmp</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">PropertyInferences::cmp</span></span>:<br/><a href="5-pi.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i1</span><span class="plain-syntax">-></span><span class="element-syntax">data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i2</span><span class="plain-syntax">-></span><span class="element-syntax">data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pr1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">data1</span><span class="plain-syntax">-></span><span class="element-syntax">inferred_property</span><span class="plain-syntax">;</span>
|
||||
|
@ -104,24 +112,26 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> (</span><span class="identifier-syntax">pr2</span><span class="plain-syntax">) && (</span><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pr2</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> ((</span><span class="identifier-syntax">pr1</span><span class="plain-syntax"> == </span><a href="3-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pr2</span><span class="plain-syntax">)) ||</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">pr2</span><span class="plain-syntax"> == </span><a href="3-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pr1</span><span class="plain-syntax">)))) </span><span class="identifier-syntax">pr2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pr1</span><span class="plain-syntax">;</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><a href="5-inf.html#SP21" class="function-link"><span class="function-syntax">Inferences::measure_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pr1</span><span class="plain-syntax">) - </span><a href="5-inf.html#SP21" class="function-link"><span class="function-syntax">Inferences::measure_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pr2</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">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">CI_DIFFER_IN_PROPERTY</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="constant-syntax">CI_DIFFER_IN_PROPERTY</span><span class="plain-syntax">;</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><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">Inferences::measure_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pr1</span><span class="plain-syntax">) - </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">Inferences::measure_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pr2</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">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">CI_DIFFER_IN_TOPIC</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="constant-syntax">CI_DIFFER_IN_TOPIC</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP21" class="function-link"><span class="function-syntax">Inferences::measure_inf</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i1</span><span class="plain-syntax">) - </span><a href="5-inf.html#SP21" class="function-link"><span class="function-syntax">Inferences::measure_inf</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">Inferences::measure_inf</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i1</span><span class="plain-syntax">) - </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">Inferences::measure_inf</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i2</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">data1</span><span class="plain-syntax">-></span><span class="element-syntax">inferred_property_value</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">data2</span><span class="plain-syntax">-></span><span class="element-syntax">inferred_property_value</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">data1</span><span class="plain-syntax">-></span><span class="element-syntax">inferred_property</span><span class="plain-syntax"> != </span><span class="identifier-syntax">data2</span><span class="plain-syntax">-></span><span class="element-syntax">inferred_property</span><span class="plain-syntax">) || </span><span class="comment-syntax"> in case they are an either-or pair</span>
|
||||
<span class="plain-syntax"> ((</span><span class="identifier-syntax">val1</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">val2</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Rvalues::compare_CONSTANT</span><span class="plain-syntax">(</span><span class="identifier-syntax">val1</span><span class="plain-syntax">, </span><span class="identifier-syntax">val2</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">CI_DIFFER_IN_PROPERTY_VALUE</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">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="constant-syntax">CI_DIFFER_IN_PROPERTY_VALUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">M</span><span class="plain-syntax"> = </span><span class="constant-syntax">CI_DIFFER_IN_CONTENT</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pr1</span><span class="plain-syntax">)) </span><span class="identifier-syntax">M</span><span class="plain-syntax"> = </span><span class="constant-syntax">CI_DIFFER_IN_BOOLEAN_CONTENT</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">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">M</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">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="identifier-syntax">M</span><span class="plain-syntax">;</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">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">CI_DIFFER_IN_COPY_ONLY</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="constant-syntax">CI_DIFFER_IN_COPY_ONLY</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">CI_IDENTICAL</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">PropertyInferences::explain_contradiction</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PropertyInferences::explain_contradiction</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">PropertyInferences::explain_contradiction</span></span>:<br/><a href="5-pi.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">similarity</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A_data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">-></span><span class="element-syntax">data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B_data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">B</span><span class="plain-syntax">-></span><span class="element-syntax">data</span><span class="plain-syntax">);</span>
|
||||
|
@ -181,7 +191,7 @@ function togglePopup(material_id) {
|
|||
<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">void</span><span class="plain-syntax"> </span><span class="function-syntax">PropertyInferences::log</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PropertyInferences::log</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">PropertyInferences::log</span></span>:<br/><a href="5-pi.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">-></span><span class="element-syntax">data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"(%W)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">inferred_property</span><span class="plain-syntax">-></span><span class="element-syntax">name</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">data</span><span class="plain-syntax">-></span><span class="element-syntax">inferred_property_value</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">":=$P"</span><span class="plain-syntax">, </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">inferred_property_value</span><span class="plain-syntax">);</span>
|
||||
|
@ -202,40 +212,169 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="identifier-syntax">inferred_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">data</span><span class="plain-syntax">-></span><span class="identifier-syntax">inferred_property_value</span><span class="plain-syntax"> = </span><span class="identifier-syntax">val</span><span class="plain-syntax">;</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="identifier-syntax">prevailing_mood</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">c</span><span class="plain-syntax"> == </span><span class="identifier-syntax">UNKNOWN_CE</span><span class="plain-syntax">) </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><a href="4-is.html#SP19" class="function-link"><span class="function-syntax">InferenceSubjects::get_default_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP9" class="function-link"><span class="function-syntax">Inferences::create_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">property_inf</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">c</span><span class="plain-syntax"> == </span><span class="identifier-syntax">UNKNOWN_CE</span><span class="plain-syntax">) </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><a href="4-is.html#SP20" class="function-link"><span class="function-syntax">InferenceSubjects::get_default_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP2" class="function-link"><span class="function-syntax">Inferences::create_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STORE_POINTER_property_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">data</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</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">PropertyInferences::draw</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">PropertyInferences::draw</span></span>:<br/>Instances as Adjectives - <a href="2-iaa.html#SP3">§3</a><br/>Either-Or Properties - <a href="3-ep.html#SP14">§14</a><br/>Measurement Adjectives - <a href="3-ma.html#SP12">§12</a><br/>Setting Property Relation - <a href="3-spr2.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP22" class="function-link"><span class="function-syntax">Inferences::join_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PropertyInferences::draw</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">PropertyInferences::draw</span></span>:<br/>Instances as Adjectives - <a href="2-iaa.html#SP3">§3</a><br/>Either-Or Properties - <a href="3-ep.html#SP14">§14</a><br/>Measurement Adjectives - <a href="3-ma.html#SP12">§12</a><br/>Setting Property Relation - <a href="3-spr2.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP8" class="function-link"><span class="function-syntax">Inferences::join_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</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">PropertyInferences::draw_negated</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">PropertyInferences::draw_negated</span></span>:<br/>Either-Or Properties - <a href="3-ep.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PropertyInferences::draw_negated</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">PropertyInferences::draw_negated</span></span>:<br/>Either-Or Properties - <a href="3-ep.html#SP14">§14</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">-></span><span class="element-syntax">certainty</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">i</span><span class="plain-syntax">-></span><span class="element-syntax">certainty</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP22" class="function-link"><span class="function-syntax">Inferences::join_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP8" class="function-link"><span class="function-syntax">Inferences::join_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">PropertyInferences::get_property</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">PropertyInferences::get_property</span></span>:<br/>Nonlocal Variables - <a href="2-nv.html#SP11">§11</a><br/>Properties - <a href="3-prp.html#SP25">§25</a><br/>Indefinite Appearance - <a href="3-ia.html#SP1">§1</a>, <a href="3-ia.html#SP2">§2</a><br/>Emit Property Values - <a href="3-epv.html#SP1_1_3">§1.1.3</a><br/>Variable Subjects - <a href="4-vs.html#SP2">§2</a><br/>Relation Subjects - <a href="4-rs.html#SP4">§4</a><br/>Inferences - <a href="5-inf.html#SP16">§16</a>, <a href="5-inf.html#SP17">§17</a><br/>The Model World - <a href="5-tmw.html#SP4_1">§4.1</a>, <a href="5-tmw.html#SP4_2">§4.2</a>, <a href="5-tmw.html#SP4_2_1">§4.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="function-syntax">PropertyInferences::get_property</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">PropertyInferences::get_property</span></span>:<br/><a href="5-pi.html#SP4">§4</a><br/>Nonlocal Variables - <a href="2-nv.html#SP11">§11</a><br/>Properties - <a href="3-prp.html#SP25">§25</a><br/>Indefinite Appearance - <a href="3-ia.html#SP1">§1</a>, <a href="3-ia.html#SP2">§2</a><br/>Emit Property Values - <a href="3-epv.html#SP1_1_3">§1.1.3</a><br/>Variable Subjects - <a href="4-vs.html#SP2">§2</a><br/>Relation Subjects - <a href="4-rs.html#SP4">§4</a><br/>The Model World - <a href="5-tmw.html#SP4_1">§4.1</a>, <a href="5-tmw.html#SP4_2">§4.2</a>, <a href="5-tmw.html#SP4_2_1">§4.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">-></span><span class="element-syntax">data</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">data</span><span class="plain-syntax">-></span><span class="element-syntax">inferred_property</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">PropertyInferences::get_value</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">PropertyInferences::get_value</span></span>:<br/>Properties - <a href="3-prp.html#SP25">§25</a><br/>Indefinite Appearance - <a href="3-ia.html#SP2">§2</a><br/>Variable Subjects - <a href="4-vs.html#SP2">§2</a><br/>Relation Subjects - <a href="4-rs.html#SP4">§4</a><br/>Inferences - <a href="5-inf.html#SP16">§16</a>, <a href="5-inf.html#SP17">§17</a><br/>The Model World - <a href="5-tmw.html#SP4_2_1_1">§4.2.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">PropertyInferences::get_value</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">PropertyInferences::get_value</span></span>:<br/><a href="5-pi.html#SP4">§4</a><br/>Properties - <a href="3-prp.html#SP25">§25</a><br/>Indefinite Appearance - <a href="3-ia.html#SP2">§2</a><br/>Variable Subjects - <a href="4-vs.html#SP2">§2</a><br/>Relation Subjects - <a href="4-rs.html#SP4">§4</a><br/>The Model World - <a href="5-tmw.html#SP4_2_1_1">§4.2.1.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">-></span><span class="element-syntax">data</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">data</span><span class="plain-syntax">-></span><span class="element-syntax">inferred_property_value</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">PropertyInferences::set_value_kind</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">PropertyInferences::set_value_kind</span></span>:<br/>Nonlocal Variables - <a href="2-nv.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</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">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">PropertyInferences::set_value_kind</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">PropertyInferences::set_value_kind</span></span>:<br/>Nonlocal Variables - <a href="2-nv.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</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="plain-syntax"> </span><span class="reserved-syntax">property_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_property_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">-></span><span class="element-syntax">data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">inferred_property_value</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">inferred_property_value</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure property_inference_data is private to this section.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Finding property states. </b></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">PropertyInferences::either_or_state</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-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">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">UNKNOWN_CE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</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">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prnbar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) </span><span class="identifier-syntax">prnbar</span><span class="plain-syntax"> = </span><a href="3-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><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">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">k</span><span class="plain-syntax"> = </span><span class="identifier-syntax">infs</span><span class="plain-syntax">; </span><span class="identifier-syntax">k</span><span class="plain-syntax">; </span><span class="identifier-syntax">k</span><span class="plain-syntax"> = </span><a href="4-is.html#SP11" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><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">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">known</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</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><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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">known</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">known</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> != </span><span class="identifier-syntax">UNKNOWN_CE</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</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">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">prnbar</span><span class="plain-syntax"> == </span><span class="identifier-syntax">known</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> != </span><span class="identifier-syntax">UNKNOWN_CE</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="identifier-syntax">c</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">UNKNOWN_CE</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">PropertyInferences::either_or_state_without_inheritance</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> **</span><span class="identifier-syntax">where</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">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">UNKNOWN_CE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prnbar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) </span><span class="identifier-syntax">prnbar</span><span class="plain-syntax"> = </span><a href="3-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><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">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">known</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</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><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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">known</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">known</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> != </span><span class="identifier-syntax">UNKNOWN_CE</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">where</span><span class="plain-syntax">) *</span><span class="identifier-syntax">where</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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">c</span><span class="plain-syntax">;</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">prnbar</span><span class="plain-syntax"> == </span><span class="identifier-syntax">known</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> != </span><span class="identifier-syntax">UNKNOWN_CE</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">where</span><span class="plain-syntax">) *</span><span class="identifier-syntax">where</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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">c</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">UNKNOWN_CE</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">PropertyInferences::verify_prop_states</span><button class="popup" onclick="togglePopup('usagePopup10')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup10">Usage of <span class="code-font"><span class="function-syntax">PropertyInferences::verify_prop_states</span></span>:<br/>Inference Subjects - <a href="4-is.html#SP27">§27</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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">PK</span><span class="plain-syntax"> = </span><a href="3-vp.html#SP5" class="function-link"><span class="function-syntax">Properties::Valued::kind</span></a><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">VK</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::to_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</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::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">VK</span><span class="plain-syntax">, </span><span class="identifier-syntax">PK</span><span class="plain-syntax">) != </span><span class="identifier-syntax">ALWAYS_MATCH</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Property value given as %u not %u\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">VK</span><span class="plain-syntax">, </span><span class="identifier-syntax">PK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">inf</span><span class="plain-syntax">-></span><span class="element-syntax">inferred_from</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_property</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_kind</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">VK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_kind</span><span class="plain-syntax">(4, </span><span class="identifier-syntax">PK</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_LateInferenceProblem</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"You wrote %1, but that tries to set the value of the '%2' "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"property to %3 - which must be wrong because this property "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"has to be %4."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">PropertyInferences::get_prop_state</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-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">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</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>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</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">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">k</span><span class="plain-syntax"> = </span><span class="identifier-syntax">infs</span><span class="plain-syntax">; </span><span class="identifier-syntax">k</span><span class="plain-syntax">; </span><span class="identifier-syntax">k</span><span class="plain-syntax"> = </span><a href="4-is.html#SP11" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><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">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">known</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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">known</span><span class="plain-syntax"> == </span><span class="identifier-syntax">prn</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">PropertyInferences::get_prop_state_at</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-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">parse_node</span><span class="plain-syntax"> **</span><span class="identifier-syntax">where</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">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</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>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</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">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">k</span><span class="plain-syntax"> = </span><span class="identifier-syntax">infs</span><span class="plain-syntax">; </span><span class="identifier-syntax">k</span><span class="plain-syntax">; </span><span class="identifier-syntax">k</span><span class="plain-syntax"> = </span><a href="4-is.html#SP11" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><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">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">known</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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">known</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">where</span><span class="plain-syntax">) *</span><span class="identifier-syntax">where</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">PropertyInferences::get_prop_state_without_inheritance</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> **</span><span class="identifier-syntax">where</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">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">infs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</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>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">known</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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">known</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">where</span><span class="plain-syntax">) *</span><span class="identifier-syntax">where</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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">NULL</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">PropertyInferences::has_or_can_have</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="reserved-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><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">has</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP4" class="function-link"><span class="function-syntax">PropertyInferences::either_or_state</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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">has</span><span class="plain-syntax"> == </span><span class="identifier-syntax">UNKNOWN_CE</span><span class="plain-syntax">) && (</span><a href="5-pp.html#SP2" class="function-link"><span class="function-syntax">World::Permissions::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-ep.html#SP7" class="function-link"><span class="function-syntax">Properties::EitherOr::stored_in_negation</span></a><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">LIKELY_CE</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">UNLIKELY_CE</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">has</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-pp.html#SP2" class="function-link"><span class="function-syntax">World::Permissions::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">LIKELY_CE</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">UNKNOWN_CE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-inf.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-km.html">1</a></li><li class="progresschapter"><a href="2-ins.html">2</a></li><li class="progresschapter"><a href="3-prp.html">3</a></li><li class="progresschapter"><a href="4-is.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-inf.html">inf</a></li><li class="progresscurrent">pi</li><li class="progresssection"><a href="5-ri.html">ri</a></li><li class="progresssection"><a href="5-pp.html">pp</a></li><li class="progresssection"><a href="5-tmw.html">tmw</a></li><li class="progressnext"><a href="5-ri.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -125,10 +125,10 @@ whereas the unpredictable order might make testing Inform more annoying.
|
|||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="identifier-syntax">LOOP_OVER_PERMISSIONS_FOR_PROPERTY</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</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_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">, </span><span class="reserved-syntax">property_permission</span><span class="plain-syntax">, </span><a href="3-prp.html#SP13" class="function-link"><span class="function-syntax">Properties::get_permissions</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">))</span>
|
||||
<span class="definition-keyword">define</span> <span class="identifier-syntax">LOOP_OVER_PERMISSIONS_FOR_INFS</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">, </span><span class="reserved-syntax">property_permission</span><span class="plain-syntax">, </span><a href="4-is.html#SP12" class="function-link"><span class="function-syntax">InferenceSubjects::get_permissions</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">pp</span><span class="plain-syntax">, </span><span class="reserved-syntax">property_permission</span><span class="plain-syntax">, </span><a href="4-is.html#SP13" class="function-link"><span class="function-syntax">InferenceSubjects::get_permissions</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">))</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">property_permission</span><span class="plain-syntax"> *</span><span class="function-syntax">World::Permissions::find</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">World::Permissions::find</span></span>:<br/><a href="5-pp.html#SP3">§3</a><br/>Indefinite Appearance - <a href="3-ia.html#SP2">§2</a><br/>The Provision Relation - <a href="3-tpr.html#SP6_2">§6.2</a><br/>Inferences - <a href="5-inf.html#SP18">§18</a>, <a href="5-inf.html#SP19">§19</a><br/>The Model World - <a href="5-tmw.html#SP4_1">§4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">property_permission</span><span class="plain-syntax"> *</span><span class="function-syntax">World::Permissions::find</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">World::Permissions::find</span></span>:<br/><a href="5-pp.html#SP3">§3</a><br/>Indefinite Appearance - <a href="3-ia.html#SP2">§2</a><br/>The Provision Relation - <a href="3-tpr.html#SP6_2">§6.2</a><br/>Property Inferences - <a href="5-pi.html#SP4">§4</a><br/>The Model World - <a href="5-tmw.html#SP4_1">§4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-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">allow_inheritance</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prnbar</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) </span><span class="identifier-syntax">prnbar</span><span class="plain-syntax"> = </span><a href="3-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">);</span>
|
||||
|
@ -140,7 +140,7 @@ whereas the unpredictable order might make testing Inform more annoying.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">pp</span><span class="plain-syntax">-></span><span class="element-syntax">property_granted</span><span class="plain-syntax"> == </span><span class="identifier-syntax">prn</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">pp</span><span class="plain-syntax">-></span><span class="element-syntax">property_granted</span><span class="plain-syntax"> == </span><span class="identifier-syntax">prnbar</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">pp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">allow_inheritance</span><span class="plain-syntax">)?</span>
|
||||
<span class="plain-syntax"> (</span><a href="4-is.html#SP10" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)):</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> (</span><a href="4-is.html#SP11" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">)):</span><span class="identifier-syntax">NULL</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">NULL</span><span class="plain-syntax">;</span>
|
||||
|
@ -178,14 +178,14 @@ applied to specific instances — see the example of the jar below.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_pp</span><span class="plain-syntax">-></span><span class="element-syntax">property_owner</span><span class="plain-syntax"> = </span><span class="identifier-syntax">infs</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_pp</span><span class="plain-syntax">-></span><span class="element-syntax">property_granted</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">new_pp</span><span class="plain-syntax">-></span><span class="element-syntax">where_granted</span><span class="plain-syntax"> = </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_pp</span><span class="plain-syntax">-></span><span class="element-syntax">pp_storage_data</span><span class="plain-syntax"> = </span><a href="4-is.html#SP20" class="function-link"><span class="function-syntax">InferenceSubjects::new_permission_granted</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">new_pp</span><span class="plain-syntax">-></span><span class="element-syntax">pp_storage_data</span><span class="plain-syntax"> = </span><a href="4-is.html#SP21" class="function-link"><span class="function-syntax">InferenceSubjects::new_permission_granted</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-pp.html#SP3">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_2" class="paragraph-anchor"></a><b>§3.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Add the new permission to the owner's list</span><span class="named-paragraph-number">3.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><a href="4-is.html#SP12" class="function-link"><span class="function-syntax">InferenceSubjects::get_permissions</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><a href="4-is.html#SP13" class="function-link"><span class="function-syntax">InferenceSubjects::get_permissions</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">new_pp</span><span class="plain-syntax">, </span><span class="reserved-syntax">property_permission</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-pp.html#SP3">§3</a>.</li></ul>
|
||||
|
|
|
@ -82,9 +82,91 @@ function togglePopup(material_id) {
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RelationInferences::start</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">RelationInferences::start</span></span>:<br/>Knowledge Module - <a href="1-km.html#SP3">§3</a></span></button><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">arbitrary_relation_inf</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP2" class="function-link"><span class="function-syntax">Inferences::new_family</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"arbitrary_relation_inf"</span><span class="plain-syntax">, </span><span class="constant-syntax">CI_DIFFER_IN_COPY_ONLY</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">arbitrary_relation_inf</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP10" class="function-link"><span class="function-syntax">Inferences::new_family</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"arbitrary_relation_inf"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">arbitrary_relation_inf</span><span class="plain-syntax">, </span><span class="constant-syntax">LOG_DETAILS_INF_MTID</span><span class="plain-syntax">, </span><a href="5-ri.html#SP2" class="function-link"><span class="function-syntax">RelationInferences::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">arbitrary_relation_inf</span><span class="plain-syntax">, </span><span class="constant-syntax">COMPARE_INF_MTID</span><span class="plain-syntax">, </span><a href="5-ri.html#SP2" class="function-link"><span class="function-syntax">RelationInferences::cmp</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<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">relation_inference_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="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">terms_as_subjects</span><span class="plain-syntax">[2];</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">terms_as_values</span><span class="plain-syntax">[2];</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">relation_inference_data</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="function-syntax">RelationInferences::new</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs0</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec0</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="constant-syntax">PROTECTED_MODEL_PROCEDURE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">relation_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">relation_inference_data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="identifier-syntax">terms_as_subjects</span><span class="plain-syntax">[0] = </span><a href="4-is.html#SP9" class="function-link"><span class="function-syntax">InferenceSubjects::divert</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="identifier-syntax">terms_as_subjects</span><span class="plain-syntax">[1] = </span><a href="4-is.html#SP9" class="function-link"><span class="function-syntax">InferenceSubjects::divert</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="identifier-syntax">terms_as_values</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">spec0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="identifier-syntax">terms_as_values</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">spec1</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-inf.html#SP2" class="function-link"><span class="function-syntax">Inferences::create_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arbitrary_relation_inf</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STORE_POINTER_relation_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">data</span><span class="plain-syntax">), </span><span class="identifier-syntax">prevailing_mood</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">RelationInferences::get_term_subjects</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">RelationInferences::get_term_subjects</span></span>:<br/>Relation Subjects - <a href="4-rs.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> **</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> **</span><span class="identifier-syntax">infs2</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">i</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">i</span><span class="plain-syntax">-></span><span class="element-syntax">family</span><span class="plain-syntax"> != </span><span class="identifier-syntax">arbitrary_relation_inf</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">"not a relation inf"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">relation_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_relation_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">-></span><span class="element-syntax">data</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">infs1</span><span class="plain-syntax">) *</span><span class="identifier-syntax">infs1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">terms_as_subjects</span><span class="plain-syntax">[0];</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">infs2</span><span class="plain-syntax">) *</span><span class="identifier-syntax">infs2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">terms_as_subjects</span><span class="plain-syntax">[1];</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RelationInferences::get_term_specs</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">RelationInferences::get_term_specs</span></span>:<br/>Relation Subjects - <a href="4-rs.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> **</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> **</span><span class="identifier-syntax">spec2</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">i</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">i</span><span class="plain-syntax">-></span><span class="element-syntax">family</span><span class="plain-syntax"> != </span><span class="identifier-syntax">arbitrary_relation_inf</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">"not a relation inf"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">relation_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_relation_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">-></span><span class="element-syntax">data</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">spec1</span><span class="plain-syntax">) *</span><span class="identifier-syntax">spec1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">terms_as_values</span><span class="plain-syntax">[0];</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">spec2</span><span class="plain-syntax">) *</span><span class="identifier-syntax">spec2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">terms_as_values</span><span class="plain-syntax">[1];</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RelationInferences::log</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">relation_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_relation_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">-></span><span class="element-syntax">data</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">data</span><span class="plain-syntax">-></span><span class="element-syntax">terms_as_subjects</span><span class="plain-syntax">[0]) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"-1:$j"</span><span class="plain-syntax">, </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">terms_as_subjects</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">terms_as_subjects</span><span class="plain-syntax">[1]) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"-2:$j"</span><span class="plain-syntax">, </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">terms_as_subjects</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">terms_as_values</span><span class="plain-syntax">[0]) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"-s1:$P"</span><span class="plain-syntax">, </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">terms_as_values</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">terms_as_values</span><span class="plain-syntax">[1]) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"-s2:$P"</span><span class="plain-syntax">, </span><span class="identifier-syntax">data</span><span class="plain-syntax">-></span><span class="element-syntax">terms_as_values</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">RelationInferences::cmp</span><span class="plain-syntax">(</span><span class="reserved-syntax">inference_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">f</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i1</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">relation_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_relation_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i1</span><span class="plain-syntax">-></span><span class="element-syntax">data</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">relation_inference_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">data2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_relation_inference_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">i2</span><span class="plain-syntax">-></span><span class="element-syntax">data</span><span class="plain-syntax">);</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><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">Inferences::measure_infs</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">data1</span><span class="plain-syntax">-></span><span class="element-syntax">terms_as_subjects</span><span class="plain-syntax">[1]) -</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">Inferences::measure_infs</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">data2</span><span class="plain-syntax">-></span><span class="element-syntax">terms_as_subjects</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">CI_DIFFER_IN_TOPIC</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="constant-syntax">CI_DIFFER_IN_TOPIC</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">Inferences::measure_infs</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">data1</span><span class="plain-syntax">-></span><span class="element-syntax">terms_as_subjects</span><span class="plain-syntax">[0]) -</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">Inferences::measure_infs</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">data2</span><span class="plain-syntax">-></span><span class="element-syntax">terms_as_subjects</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">CI_DIFFER_IN_TOPIC</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="constant-syntax">CI_DIFFER_IN_TOPIC</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">Inferences::measure_pn</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">data1</span><span class="plain-syntax">-></span><span class="element-syntax">terms_as_values</span><span class="plain-syntax">[1]) -</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">Inferences::measure_pn</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">data2</span><span class="plain-syntax">-></span><span class="element-syntax">terms_as_values</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">CI_DIFFER_IN_TOPIC</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="constant-syntax">CI_DIFFER_IN_TOPIC</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">Inferences::measure_pn</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">data1</span><span class="plain-syntax">-></span><span class="element-syntax">terms_as_values</span><span class="plain-syntax">[0]) -</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">Inferences::measure_pn</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">data2</span><span class="plain-syntax">-></span><span class="element-syntax">terms_as_values</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">CI_DIFFER_IN_TOPIC</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="constant-syntax">CI_DIFFER_IN_TOPIC</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">Inferences::measure_inf</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i1</span><span class="plain-syntax">) - </span><a href="5-inf.html#SP7" class="function-link"><span class="function-syntax">Inferences::measure_inf</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i2</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">c</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">CI_DIFFER_IN_COPY_ONLY</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> -</span><span class="constant-syntax">CI_DIFFER_IN_COPY_ONLY</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">CI_IDENTICAL</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">RelationInferences::draw</span><span class="plain-syntax">(</span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs0</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs1</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><a href="5-ri.html#SP2" class="function-link"><span class="function-syntax">RelationInferences::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs0</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs1</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP8" class="function-link"><span class="function-syntax">Inferences::join_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><a href="4-rs.html#SP1" class="function-link"><span class="function-syntax">RelationSubjects::from_bp</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</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">RelationInferences::draw_spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">bp</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec0</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec1</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">spec0</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">spec1</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">"malformed value relation"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><a href="5-ri.html#SP2" class="function-link"><span class="function-syntax">RelationInferences::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec0</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP8" class="function-link"><span class="function-syntax">Inferences::join_inference</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><a href="4-rs.html#SP1" class="function-link"><span class="function-syntax">RelationSubjects::from_bp</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure relation_inference_data is private to this section.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-pi.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-km.html">1</a></li><li class="progresschapter"><a href="2-ins.html">2</a></li><li class="progresschapter"><a href="3-prp.html">3</a></li><li class="progresschapter"><a href="4-is.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-inf.html">inf</a></li><li class="progresssection"><a href="5-pi.html">pi</a></li><li class="progresscurrent">ri</li><li class="progresssection"><a href="5-pp.html">pp</a></li><li class="progresssection"><a href="5-tmw.html">tmw</a></li><li class="progressnext"><a href="5-pp.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -95,7 +95,7 @@ wisdom to the process.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Plugins::Call::complete_model</span><span class="plain-syntax">(</span><span class="identifier-syntax">S</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">World::current_building_stage</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">World::current_building_stage</span></span>:<br/>Inferences - <a href="5-inf.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">World::current_building_stage</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">World::current_building_stage</span></span>:<br/>Inference Subjects - <a href="4-is.html#SP9">§9</a><br/>Inferences - <a href="5-inf.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</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">current_model_world_stage</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -132,7 +132,7 @@ spatial-model plugin does), it must do so during Stage III, not Stage II.
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">World::stages_II_and_III</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-is.html#SP22" class="function-link"><span class="function-syntax">InferenceSubjects::complete_model</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-is.html#SP23" class="function-link"><span class="function-syntax">InferenceSubjects::complete_model</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ia.html#SP2" class="function-link"><span class="function-syntax">Properties::Appearance::reallocate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</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">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax">)</span>
|
||||
|
@ -150,7 +150,7 @@ may be added.
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">World::stage_IV</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs</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">infs</span><span class="plain-syntax">, </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="4-is.html#SP23" class="function-link"><span class="function-syntax">InferenceSubjects::check_model</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-is.html#SP24" class="function-link"><span class="function-syntax">InferenceSubjects::check_model</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-tmw.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">Check that properties are permitted</span><span class="named-paragraph-number">4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-tmw.html#SP4_2" class="named-paragraph-link"><span class="named-paragraph">Check that properties are not contradictory</span><span class="named-paragraph-number">4.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -190,7 +190,7 @@ in plugins which add inconsistent properties.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">inf</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">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">-></span><span class="element-syntax">name</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-pp.html#SP2" class="function-link"><span class="function-syntax">World::Permissions::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</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="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::inference_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_PropertyNotPermitted</span><span class="plain-syntax">),</span>
|
||||
|
@ -212,10 +212,10 @@ convenience, and don't have to follow the I7 rules.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">, </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::during_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::during_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">property</span><span class="plain-syntax"> *</span><span class="identifier-syntax">prn</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">sign</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">) < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">sign</span><span class="plain-syntax"> = -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">) < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">sign</span><span class="plain-syntax"> = -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-tmw.html#SP4_2_1" class="named-paragraph-link"><span class="named-paragraph">Look for clashes concerning this property from wider inferences</span><span class="named-paragraph-number">4.2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><a href="3-ep.html#SP6" class="function-link"><span class="function-syntax">Properties::EitherOr::get_negation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</span><span class="plain-syntax">))) {</span>
|
||||
|
@ -231,14 +231,14 @@ convenience, and don't have to follow the I7 rules.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">boss</span><span class="plain-syntax"> = </span><a href="4-is.html#SP10" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">boss</span><span class="plain-syntax"> = </span><a href="4-is.html#SP11" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">boss</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wide</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">, </span><span class="identifier-syntax">boss</span><span class="plain-syntax">, </span><span class="identifier-syntax">property_inf</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::during_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</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><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::during_stage</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</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><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_property</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-tmw.html#SP4_2_1_1" class="named-paragraph-link"><span class="named-paragraph">Check that these differently scoped inferences do not clash</span><span class="named-paragraph-number">4.2.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">boss</span><span class="plain-syntax"> = </span><a href="4-is.html#SP10" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">boss</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">boss</span><span class="plain-syntax"> = </span><a href="4-is.html#SP11" class="function-link"><span class="function-syntax">InferenceSubjects::narrowest_broader_subject</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">boss</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-tmw.html#SP4_2">§4.2</a> (twice).</li></ul>
|
||||
|
@ -259,13 +259,13 @@ about the Portal, to stand.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">abcw</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">); </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">abcw</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">abcw</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">abcw</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">abcw</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">); </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">abcw</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">abcw</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">abcw</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">abcw</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">clash</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">wide_sign</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">) < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">wide_sign</span><span class="plain-syntax"> = -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">wide_sign</span><span class="plain-syntax"> = </span><span class="constant-syntax">1</span><span class="plain-syntax">; </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">) < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">wide_sign</span><span class="plain-syntax"> = -1;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-prp.html#SP15" class="function-link"><span class="function-syntax">Properties::is_either_or</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">prn</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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">narrow_val</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wide_val</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP2" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">narrow_val</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">wide_val</span><span class="plain-syntax"> = </span><a href="5-pi.html#SP3" class="function-link"><span class="function-syntax">PropertyInferences::get_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</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">Rvalues::compare_CONSTANT</span><span class="plain-syntax">(</span><span class="identifier-syntax">narrow_val</span><span class="plain-syntax">, </span><span class="identifier-syntax">wide_val</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">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Clash of $P and $P\n $I\n $I\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">narrow_val</span><span class="plain-syntax">, </span><span class="identifier-syntax">wide_val</span><span class="plain-syntax">, </span><span class="identifier-syntax">narrow</span><span class="plain-syntax">, </span><span class="identifier-syntax">wide</span><span class="plain-syntax">);</span>
|
||||
|
@ -274,11 +274,11 @@ about the Portal, to stand.
|
|||
<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">sign</span><span class="plain-syntax"> != </span><span class="identifier-syntax">wide_sign</span><span class="plain-syntax">) </span><span class="identifier-syntax">clash</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">clash</span><span class="plain-syntax">)?</span><span class="identifier-syntax">FALSE:TRUE</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">clash</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">abcn</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">); </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">abcn</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">abcn</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">abcn</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">abcn</span><span class="plain-syntax"> = </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::get_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">); </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">abcn</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">abcn</span><span class="plain-syntax"> = -</span><span class="identifier-syntax">abcn</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">abcn</span><span class="plain-syntax"> == </span><span class="identifier-syntax">CERTAIN_CE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-tmw.html#SP4_2_1_1_1" class="named-paragraph-link"><span class="named-paragraph">Issue a problem message for clash with wider inference</span><span class="named-paragraph-number">4.2.1.1.1</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::set_certainty</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">, </span><span class="identifier-syntax">IMPOSSIBLE_CE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP4" class="function-link"><span class="function-syntax">Inferences::render_impossible</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
|
@ -290,7 +290,7 @@ about the Portal, to stand.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Checking infs $j compatible with infs $j for property $Y:\n $I\n $I\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">infs</span><span class="plain-syntax">, </span><span class="identifier-syntax">boss</span><span class="plain-syntax">, </span><span class="identifier-syntax">prn</span><span class="plain-syntax">, </span><span class="identifier-syntax">narrow</span><span class="plain-syntax">, </span><span class="identifier-syntax">wide</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::infs_contradiction_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_InstanceContradiction</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">), </span><a href="5-inf.html#SP13" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">), </span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">narrow</span><span class="plain-syntax">), </span><a href="5-inf.html#SP3" class="function-link"><span class="function-syntax">Inferences::where_inferred</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">wide</span><span class="plain-syntax">), </span><span class="identifier-syntax">infs</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"therefore has to have two contradictory states of the same property at once"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"which is impossible. When a kind's definition says that something is 'always' "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"true, there is no way to override that for particular things of the kind."</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -132,7 +132,7 @@ proposition to a set of facts concerning things in the model; as we have
|
|||
seen, the model includes kinds, variables, instances and relations, and so
|
||||
we need a unified type for "something you can know a fact about". That
|
||||
type is called <a href="4-is.html#SP6" class="internal">inference_subject</a>. Each subject has its own list of known
|
||||
facts: we call such a fact an <a href="5-inf.html#SP8" class="internal">inference</a> because it has (usually) been
|
||||
facts: we call such a fact an <a href="5-inf.html#SP1" class="internal">inference</a> because it has (usually) been
|
||||
inferred from a proposition.
|
||||
</p>
|
||||
|
||||
|
|
|
@ -229,7 +229,7 @@
|
|||
<li>
|
||||
<p class="sectionentry"><a href="5-inf.html">
|
||||
<spon class="sectiontitle">Inferences</span></a> -
|
||||
<span class="sectionpurpose">To manage the individual pieces of information gathered, with varying degrees of certainty, from assertion sentences. This is mostly information about which objects have what properties.</span></p>
|
||||
<span class="sectionpurpose">An inference is a single datum about the world model, believed to be true or untrue and with some degree of certainty.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="5-pi.html">
|
||||
|
|
|
@ -81,7 +81,6 @@ function togglePopup(material_id) {
|
|||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_NEW_VARIABLE_NOTIFY</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_IRREGULAR_GENITIVE</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_SET_KIND_NOTIFY</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_CREATE_INFERENCE_FAMILIES</span><span class="plain-syntax"> </span><span class="constant-syntax">10</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_COMPLETE_MODEL</span><span class="plain-syntax"> </span><span class="constant-syntax">11</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_PARSE_COMPOSITE_NQS</span><span class="plain-syntax"> </span><span class="constant-syntax">12</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_REFINE_IMPLICIT_NOUN</span><span class="plain-syntax"> </span><span class="constant-syntax">14</span>
|
||||
|
@ -89,9 +88,7 @@ function togglePopup(material_id) {
|
|||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_NEW_PROPERTY_NOTIFY</span><span class="plain-syntax"> </span><span class="constant-syntax">16</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_PROPERTY_VALUE_NOTIFY</span><span class="plain-syntax"> </span><span class="constant-syntax">17</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_MORE_SPECIFIC</span><span class="plain-syntax"> </span><span class="constant-syntax">18</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_INFERENCES_CONTRADICT</span><span class="plain-syntax"> </span><span class="constant-syntax">19</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_INTERVENE_IN_ASSERTION</span><span class="plain-syntax"> </span><span class="constant-syntax">20</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_LOG_INFERENCE_TYPE</span><span class="plain-syntax"> </span><span class="constant-syntax">21</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_COMPILE_OBJECT_HEADER</span><span class="plain-syntax"> </span><span class="constant-syntax">22</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_ESTIMATE_PROPERTY_USAGE</span><span class="plain-syntax"> </span><span class="constant-syntax">23</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_CHECK_GOING</span><span class="plain-syntax"> </span><span class="constant-syntax">24</span>
|
||||
|
@ -109,7 +106,6 @@ function togglePopup(material_id) {
|
|||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_VARIABLE_SET_WARNING</span><span class="plain-syntax"> </span><span class="constant-syntax">36</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_DETECT_BODYSNATCHING</span><span class="plain-syntax"> </span><span class="constant-syntax">37</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_NEW_SUBJECT_NOTIFY</span><span class="plain-syntax"> </span><span class="constant-syntax">38</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_EXPLAIN_CONTRADICTION</span><span class="plain-syntax"> </span><span class="constant-syntax">39</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_ADD_TO_WORLD_INDEX</span><span class="plain-syntax"> </span><span class="constant-syntax">40</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_ANNOTATE_IN_WORLD_INDEX</span><span class="plain-syntax"> </span><span class="constant-syntax">41</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">PLUGIN_SET_SUBKIND_NOTIFY</span><span class="plain-syntax"> </span><span class="constant-syntax">42</span>
|
||||
|
@ -229,12 +225,8 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">PLUGIN_SET_SUBKIND_NOTIFY</span><span class="plain-syntax">, </span><span class="identifier-syntax">sub</span><span class="plain-syntax">, </span><span class="identifier-syntax">super</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">Plugins::Call::create_inference_families</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">PLUGINS_CALLV</span><span class="plain-syntax">(</span><span class="constant-syntax">PLUGIN_CREATE_INFERENCE_FAMILIES</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">Plugins::Call::complete_model</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">stage</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::diversion_off</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="comment-syntax"> Inferences::diversion_off();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">PLUGIN_COMPLETE_MODEL</span><span class="plain-syntax">, </span><span class="identifier-syntax">stage</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
@ -264,23 +256,10 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">PLUGIN_MORE_SPECIFIC</span><span class="plain-syntax">, </span><span class="identifier-syntax">I1</span><span class="plain-syntax">, </span><span class="identifier-syntax">I2</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">Plugins::Call::inferences_contradict</span><span class="plain-syntax">(</span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">similarity</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">PLUGIN_INFERENCES_CONTRADICT</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="identifier-syntax">similarity</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">Plugins::Call::explain_contradiction</span><span class="plain-syntax">(</span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">similarity</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">PLUGIN_EXPLAIN_CONTRADICTION</span><span class="plain-syntax">, </span><span class="identifier-syntax">A</span><span class="plain-syntax">, </span><span class="identifier-syntax">B</span><span class="plain-syntax">, </span><span class="identifier-syntax">similarity</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</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">Plugins::Call::intervene_in_assertion</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">py</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">PLUGIN_INTERVENE_IN_ASSERTION</span><span class="plain-syntax">, </span><span class="identifier-syntax">px</span><span class="plain-syntax">, </span><span class="identifier-syntax">py</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">Plugins::Call::log_inference_type</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">it</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">PLUGIN_LOG_INFERENCE_TYPE</span><span class="plain-syntax">, </span><span class="identifier-syntax">it</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">Plugins::Call::estimate_property_usage</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="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">words_used</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">PLUGIN_ESTIMATE_PROPERTY_USAGE</span><span class="plain-syntax">, </span><span class="identifier-syntax">k</span><span class="plain-syntax">, </span><span class="identifier-syntax">words_used</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -1433,9 +1433,9 @@ to send the pairs in that row in any order.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">inf</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">Inferences::bp_as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">), </span><span class="identifier-syntax">arbitrary_relation_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, </span><span class="identifier-syntax">RelationSubjects::from_bp</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">), </span><span class="identifier-syntax">arbitrary_relation_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">left_infs</span><span class="plain-syntax">, *</span><span class="identifier-syntax">right_infs</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::get_references</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &</span><span class="identifier-syntax">left_infs</span><span class="plain-syntax">, &</span><span class="identifier-syntax">right_infs</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RelationInferences::get_term_subjects</span><span class="plain-syntax">(</span><span class="identifier-syntax">inf</span><span class="plain-syntax">, &</span><span class="identifier-syntax">left_infs</span><span class="plain-syntax">, &</span><span class="identifier-syntax">right_infs</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">infs</span><span class="plain-syntax"> == </span><span class="identifier-syntax">left_infs</span><span class="plain-syntax">) </span><span class="identifier-syntax">row_flags</span><span class="plain-syntax">[</span><a href="4-rart.html#SP11" class="function-link"><span class="function-syntax">RTRelations::get_relation_index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">right_infs</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">)] = </span><span class="constant-syntax">1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
|
@ -1613,15 +1613,14 @@ users to set up these relations in a stylistically poor way.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"attempt to merge classes for a non-equivalence relation"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">explicit_bp_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">RETRIEVE_POINTER_explicit_bp_data</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">family_specific</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">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">right_way_round</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">bp</span><span class="plain-syntax"> = </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">reversal</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">partition_array</span><span class="plain-syntax"> = </span><span class="identifier-syntax">D</span><span class="plain-syntax">-></span><span class="identifier-syntax">equiv_data</span><span class="plain-syntax">-></span><span class="identifier-syntax">equivalence_partition</span><span class="plain-syntax">;;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> *</span><span class="identifier-syntax">partition_array</span><span class="plain-syntax"> = </span><span class="identifier-syntax">D</span><span class="plain-syntax">-></span><span class="identifier-syntax">equiv_data</span><span class="plain-syntax">-></span><span class="identifier-syntax">equivalence_partition</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">partition_array</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">"attempt to use null equivalence partition array"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">little</span><span class="plain-syntax">, </span><span class="identifier-syntax">big</span><span class="plain-syntax">; </span><span class="comment-syntax"> or, The Fairies' Parliament</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">big</span><span class="plain-syntax"> = </span><span class="identifier-syntax">partition_array</span><span class="plain-syntax">[</span><span class="identifier-syntax">ix1</span><span class="plain-syntax">]; </span><span class="identifier-syntax">little</span><span class="plain-syntax"> = </span><span class="identifier-syntax">partition_array</span><span class="plain-syntax">[</span><span class="identifier-syntax">ix2</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">big</span><span class="plain-syntax"> == </span><span class="identifier-syntax">little</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</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">big</span><span class="plain-syntax"> < </span><span class="identifier-syntax">little</span><span class="plain-syntax">) { </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">swap</span><span class="plain-syntax"> = </span><span class="identifier-syntax">little</span><span class="plain-syntax">; </span><span class="identifier-syntax">little</span><span class="plain-syntax"> = </span><span class="identifier-syntax">big</span><span class="plain-syntax">; </span><span class="identifier-syntax">big</span><span class="plain-syntax"> = </span><span class="identifier-syntax">swap</span><span class="plain-syntax">; }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><</span><span class="identifier-syntax">domain_size</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">i</span><span class="plain-syntax"><</span><span class="identifier-syntax">domain_size</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</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">partition_array</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] == </span><span class="identifier-syntax">big</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">partition_array</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] = </span><span class="identifier-syntax">little</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -2153,9 +2152,9 @@ matches the specific necessary kind of object if there is one.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</span><span class="plain-syntax"> = </span><a href="4-rtn.html#SP1" class="function-link"><span class="function-syntax">Routines::begin</span></a><span class="plain-syntax">(</span><a href="4-rart.html#SP1" class="function-link"><span class="function-syntax">RTRelations::initialiser_iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">i</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">rtiname</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::find</span></a><span class="plain-syntax">(</span><span class="constant-syntax">RELATIONTEST_HL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">Inferences::bp_as_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">), </span><span class="identifier-syntax">arbitrary_relation_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">POSITIVE_KNOWLEDGE_LOOP</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">RelationSubjects::from_bp</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">), </span><span class="identifier-syntax">arbitrary_relation_inf</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec0</span><span class="plain-syntax">, *</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Inferences::get_references_spec</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, &</span><span class="identifier-syntax">spec0</span><span class="plain-syntax">, &</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RelationInferences::get_term_specs</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</span><span class="plain-syntax">, &</span><span class="identifier-syntax">spec0</span><span class="plain-syntax">, &</span><span class="identifier-syntax">spec1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-rart.html#SP1" class="function-link"><span class="function-syntax">RTRelations::mark_as_needed</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_call_iname</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">rtiname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::down</span><span class="plain-syntax">(</span><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Total memory consumption was 258538K = 252 MB
|
||||
|
||||
62.5% was used for 1336464 objects, in 278183 frames in 202 x 800K = 161600K = 157 MB:
|
||||
62.5% was used for 1336664 objects, in 278383 frames in 202 x 800K = 161600K = 157 MB:
|
||||
|
||||
9.8% inter_tree_node_array 36 x 8192 = 294912 objects, 25953408 bytes
|
||||
5.5% text_stream_array 2592 x 100 = 259200 objects, 14598144 bytes
|
||||
|
@ -29,8 +29,8 @@ Total memory consumption was 258538K = 252 MB
|
|||
0.2% dictionary 16348 objects, 784704 bytes
|
||||
0.2% dict_entry_array 233 x 100 = 23300 objects, 753056 bytes
|
||||
0.2% package_request 7931 objects, 697928 bytes
|
||||
0.2% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||
0.2% inter_name_generator_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||
0.2% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||
0.1% local_variable_array 45 x 100 = 4500 objects, 505440 bytes
|
||||
0.1% inference_subject 664 objects, 430272 bytes
|
||||
0.1% verb_usage 1128 objects, 388032 bytes
|
||||
|
@ -41,7 +41,6 @@ Total memory consumption was 258538K = 252 MB
|
|||
0.1% noun 2379 objects, 285480 bytes
|
||||
---- action_name_list_array 3 x 1000 = 3000 objects, 240096 bytes
|
||||
---- inter_annotation_array 1 x 8192 objects, 196640 bytes
|
||||
---- inference 1703 objects, 163488 bytes
|
||||
---- linguistic_stock_item 3315 objects, 159120 bytes
|
||||
---- binary_predicate 321 objects, 156648 bytes
|
||||
---- stacked_variable_owner_list_array 38 x 100 = 3800 objects, 153216 bytes
|
||||
|
@ -49,6 +48,7 @@ Total memory consumption was 258538K = 252 MB
|
|||
---- nonterminal 758 objects, 139472 bytes
|
||||
---- action_pattern_array 6 x 100 = 600 objects, 129792 bytes
|
||||
---- documentation_ref 1275 objects, 112200 bytes
|
||||
---- inference 1703 objects, 108992 bytes
|
||||
---- hierarchy_location 730 objects, 105120 bytes
|
||||
---- noun_usage 2401 objects, 96040 bytes
|
||||
---- preposition 273 objects, 87360 bytes
|
||||
|
@ -89,10 +89,10 @@ Total memory consumption was 258538K = 252 MB
|
|||
---- nonlocal_variable 93 objects, 19344 bytes
|
||||
---- action_name 90 objects, 18720 bytes
|
||||
---- parse_node_tree 20 objects, 17280 bytes
|
||||
---- match_avinue_array 1 x 1000 objects, 16032 bytes
|
||||
---- method 335 objects, 16080 bytes
|
||||
---- linked_list_item_array 1 x 1000 objects, 16032 bytes
|
||||
---- match_avinue_array 1 x 1000 objects, 16032 bytes
|
||||
---- to_phrase_request 59 objects, 15576 bytes
|
||||
---- method 323 objects, 15504 bytes
|
||||
---- adjective 137 objects, 14248 bytes
|
||||
---- plugin 23 objects, 13432 bytes
|
||||
---- literal_text 147 objects, 12936 bytes
|
||||
|
@ -113,8 +113,8 @@ Total memory consumption was 258538K = 252 MB
|
|||
---- parsing_pp_data 96 objects, 4608 bytes
|
||||
---- build_vertex 40 objects, 4480 bytes
|
||||
---- hierarchy_attachment_point 48 objects, 4224 bytes
|
||||
---- placement_affecting_array 1 x 100 objects, 4032 bytes
|
||||
---- stacked_variable_list_array 1 x 100 objects, 4032 bytes
|
||||
---- placement_affecting_array 1 x 100 objects, 4032 bytes
|
||||
---- activity 35 objects, 3920 bytes
|
||||
---- inbuild_edition 54 objects, 3888 bytes
|
||||
---- parse_node_annotation_type 118 objects, 3776 bytes
|
||||
|
@ -124,67 +124,70 @@ Total memory consumption was 258538K = 252 MB
|
|||
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
|
||||
---- instance_usage_array 1 x 200 objects, 3232 bytes
|
||||
---- method_set 100 objects, 3200 bytes
|
||||
---- compatibility_specification 66 objects, 3168 bytes
|
||||
---- definition 44 objects, 3168 bytes
|
||||
---- compatibility_specification 66 objects, 3168 bytes
|
||||
---- inform_extension 19 objects, 3040 bytes
|
||||
---- property_of_value_storage 93 objects, 2976 bytes
|
||||
---- submodule_request 72 objects, 2880 bytes
|
||||
---- inter_construct 32 objects, 2560 bytes
|
||||
---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes
|
||||
---- parentage_inference_data 79 objects, 2528 bytes
|
||||
---- part_of_inference_data 79 objects, 2528 bytes
|
||||
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
|
||||
---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes
|
||||
---- equation_symbol 30 objects, 2400 bytes
|
||||
---- semver_range 22 objects, 2288 bytes
|
||||
---- use_option 29 objects, 1856 bytes
|
||||
---- pronoun_usage 42 objects, 1680 bytes
|
||||
---- table_contribution_array 1 x 100 objects, 1632 bytes
|
||||
---- activity_crossref_array 1 x 100 objects, 1632 bytes
|
||||
---- plugin_call_array 1 x 100 objects, 1632 bytes
|
||||
---- table_contribution_array 1 x 100 objects, 1632 bytes
|
||||
---- kind_interaction 39 objects, 1560 bytes
|
||||
---- inter_annotation_form 37 objects, 1480 bytes
|
||||
---- pipeline_step 12 objects, 1440 bytes
|
||||
---- noun_filter_token 22 objects, 1408 bytes
|
||||
---- scene 1 object, 1344 bytes
|
||||
---- special_meaning_holder 33 objects, 1320 bytes
|
||||
---- build_script 40 objects, 1280 bytes
|
||||
---- constant_phrase 20 objects, 1280 bytes
|
||||
---- build_script 40 objects, 1280 bytes
|
||||
---- invocation_options_array 1 x 100 objects, 1224 bytes
|
||||
---- hierarchy_metadatum 15 objects, 1200 bytes
|
||||
---- direction_inference_data 30 objects, 1200 bytes
|
||||
---- quantifier 16 objects, 1024 bytes
|
||||
---- table_column 16 objects, 896 bytes
|
||||
---- inbuild_requirement 22 objects, 880 bytes
|
||||
---- control_structure_phrase 12 objects, 864 bytes
|
||||
---- code_generation 1 object, 864 bytes
|
||||
---- control_structure_phrase 12 objects, 864 bytes
|
||||
---- cached_understanding 21 objects, 840 bytes
|
||||
---- runtime_kind_structure 13 objects, 832 bytes
|
||||
---- phrase_option_array 1 x 100 objects, 824 bytes
|
||||
---- target_vm 6 objects, 816 bytes
|
||||
---- pipeline_stage 17 objects, 816 bytes
|
||||
---- target_vm 6 objects, 816 bytes
|
||||
---- generated_segment 25 objects, 800 bytes
|
||||
---- inter_data_type 14 objects, 784 bytes
|
||||
---- submodule_identity 23 objects, 736 bytes
|
||||
---- rulebook_outcome 17 objects, 680 bytes
|
||||
---- inform_language 6 objects, 672 bytes
|
||||
---- inter_warehouse_room 10 objects, 640 bytes
|
||||
---- I6T_intervention 8 objects, 640 bytes
|
||||
---- relation_guard 5 objects, 640 bytes
|
||||
---- I6T_intervention 8 objects, 640 bytes
|
||||
---- inter_warehouse_room 10 objects, 640 bytes
|
||||
---- nascent_array 7 objects, 616 bytes
|
||||
---- inbuild_search_result 15 objects, 600 bytes
|
||||
---- named_rulebook_outcome 15 objects, 600 bytes
|
||||
---- inbuild_search_result 15 objects, 600 bytes
|
||||
---- label_namespace 10 objects, 560 bytes
|
||||
---- small_word_set 11 objects, 528 bytes
|
||||
---- implication 13 objects, 520 bytes
|
||||
---- inform_kit 5 objects, 520 bytes
|
||||
---- implication 13 objects, 520 bytes
|
||||
---- inference_family 11 objects, 440 bytes
|
||||
---- equation 4 objects, 416 bytes
|
||||
---- i6_memory_setting 13 objects, 416 bytes
|
||||
---- dval_written 10 objects, 400 bytes
|
||||
---- module_package 10 objects, 400 bytes
|
||||
---- bp_family 12 objects, 384 bytes
|
||||
---- article_usage 8 objects, 384 bytes
|
||||
---- bp_family 12 objects, 384 bytes
|
||||
---- source_file 5 objects, 360 bytes
|
||||
---- inbuild_genre 7 objects, 336 bytes
|
||||
---- door_dir_notice 5 objects, 320 bytes
|
||||
---- grammatical_category 8 objects, 320 bytes
|
||||
---- door_dir_notice 5 objects, 320 bytes
|
||||
---- pronoun 8 objects, 320 bytes
|
||||
---- build_step 4 objects, 288 bytes
|
||||
---- up_family 9 objects, 288 bytes
|
||||
|
@ -194,8 +197,8 @@ Total memory consumption was 258538K = 252 MB
|
|||
---- verb_usage_tier 5 objects, 240 bytes
|
||||
---- adjective_meaning_family 7 objects, 224 bytes
|
||||
---- test_scenario 1 object, 208 bytes
|
||||
---- compilation_unit 5 objects, 200 bytes
|
||||
---- build_skill 5 objects, 200 bytes
|
||||
---- compilation_unit 5 objects, 200 bytes
|
||||
---- plural_dictionary_entry 4 objects, 192 bytes
|
||||
---- kit_dependency 4 objects, 192 bytes
|
||||
---- inform_project 1 object, 176 bytes
|
||||
|
@ -211,15 +214,15 @@ Total memory consumption was 258538K = 252 MB
|
|||
---- article 2 objects, 80 bytes
|
||||
---- compile_task_data 1 object, 80 bytes
|
||||
---- list_together_routine 2 objects, 80 bytes
|
||||
---- build_methodology 1 object, 56 bytes
|
||||
---- inter_warehouse 1 object, 56 bytes
|
||||
---- star_invention 1 object, 48 bytes
|
||||
---- build_methodology 1 object, 56 bytes
|
||||
---- blorb_figure 1 object, 48 bytes
|
||||
---- star_invention 1 object, 48 bytes
|
||||
---- HTML_file_state 1 object, 48 bytes
|
||||
---- by_routine_bp_data 1 object, 40 bytes
|
||||
---- parse_name_notice 1 object, 40 bytes
|
||||
---- loop_over_scope 1 object, 40 bytes
|
||||
---- kind_template_definition 1 object, 40 bytes
|
||||
---- parse_name_notice 1 object, 40 bytes
|
||||
---- by_routine_bp_data 1 object, 40 bytes
|
||||
---- loop_over_scope 1 object, 40 bytes
|
||||
|
||||
37.4% was used for memory not allocated for objects:
|
||||
|
||||
|
@ -239,5 +242,5 @@ Total memory consumption was 258538K = 252 MB
|
|||
---- emitter array storage 14368 bytes in 8 claims
|
||||
---- code generation workspace for objects 9200 bytes in 9 claims
|
||||
|
||||
19.8% was overhead - 52594936 bytes = 51362K = 50 MB
|
||||
19.8% was overhead - 52642600 bytes = 51408K = 50 MB
|
||||
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
100.0% in inform7 run
|
||||
67.8% in compilation to Inter
|
||||
67.5% in compilation to Inter
|
||||
26.6% in //Phrases::Manager::compile_first_block//
|
||||
8.3% in //Phrases::Manager::compile_as_needed//
|
||||
6.9% in //Strings::compile_responses//
|
||||
6.0% in //InferenceSubjects::emit_all//
|
||||
4.3% in //MajorNodes::pre_pass//
|
||||
6.1% in //InferenceSubjects::emit_all//
|
||||
4.2% in //MajorNodes::pre_pass//
|
||||
3.3% in //MajorNodes::pass_1//
|
||||
2.0% in //Phrases::Manager::RulePrintingRule_routine//
|
||||
1.9% in //Phrases::Manager::rulebooks_array//
|
||||
1.0% in //RTVerbs::ConjugateVerb//
|
||||
0.8% in //Phrases::Manager::traverse//
|
||||
1.8% in //Phrases::Manager::rulebooks_array//
|
||||
1.1% in //RTVerbs::ConjugateVerb//
|
||||
0.7% in //Phrases::Manager::traverse//
|
||||
0.5% in //Phrases::Manager::parse_rule_parameters//
|
||||
0.5% in //World::stage_V//
|
||||
0.3% in //MajorNodes::pass_2//
|
||||
|
@ -19,10 +19,10 @@
|
|||
0.1% in //RTKinds::compile_data_type_support_routines//
|
||||
0.1% in //Task::make_built_in_kind_constructors//
|
||||
0.1% in //World::stages_II_and_III//
|
||||
3.5% not specifically accounted for
|
||||
29.7% in running Inter pipeline
|
||||
9.5% in inter step 2/12: link
|
||||
9.5% in step preparation
|
||||
3.0% not specifically accounted for
|
||||
30.0% in running Inter pipeline
|
||||
9.8% in step preparation
|
||||
9.7% in inter step 2/12: link
|
||||
6.9% in inter step 12/12: generate inform6 -> auto.inf
|
||||
0.3% in inter step 9/12: make-identifiers-unique
|
||||
0.1% in inter step 10/12: reconcile-verbs
|
||||
|
@ -31,6 +31,6 @@
|
|||
0.1% in inter step 6/12: assimilate
|
||||
0.1% in inter step 7/12: resolve-external-symbols
|
||||
0.1% in inter step 8/12: inspect-plugs
|
||||
2.3% not specifically accounted for
|
||||
2.1% not specifically accounted for
|
||||
2.0% in supervisor
|
||||
0.4% not specifically accounted for
|
||||
|
|
|
@ -1,10 +1,16 @@
|
|||
Inform 7 build 6L26 has started.
|
||||
Inform 7 v10.1.0 has started.
|
||||
I've now read your source text, which is 17 words long.
|
||||
I've also read Standard Rules by Graham Nelson, which is 42597 words long.
|
||||
I've also read English Language by Graham Nelson, which is 2288 words long.
|
||||
I've also read Basic Inform by Graham Nelson, which is 7687 words long.
|
||||
I've also read English Language by Graham Nelson, which is 2328 words long.
|
||||
I've also read Standard Rules by Graham Nelson, which is 32067 words long.
|
||||
Problem__ PM_DuplicateHere
|
||||
>--> You wrote 'A chair is here' (source text, line 2), but in another
|
||||
sentence 'A chair is here' (source text, line 4): chair can only be said to
|
||||
be 'here' once, in a single assertion sentence. This avoids potential
|
||||
confusion, since 'here' can mean different things in different sentences.
|
||||
Inform 7 has finished: 16 centiseconds used.
|
||||
Problem__ PM_Contradiction
|
||||
>--> You wrote 'A chair is here' (source text, line 4), but in another
|
||||
sentence 'A chair is here' (source text, line 2): but this looks like a
|
||||
contradiction, which might be because I have misunderstood what was meant
|
||||
to be the subject of one or both of those sentences.
|
||||
Inform 7 has finished.
|
||||
|
|
|
@ -1,7 +1,13 @@
|
|||
Inform 7 build 6L26 has started.
|
||||
Inform 7 v10.1.0 has started.
|
||||
I've now read your source text, which is 23 words long.
|
||||
I've also read Standard Rules by Graham Nelson, which is 42597 words long.
|
||||
I've also read English Language by Graham Nelson, which is 2288 words long.
|
||||
I've also read Basic Inform by Graham Nelson, which is 7687 words long.
|
||||
I've also read English Language by Graham Nelson, which is 2328 words long.
|
||||
I've also read Standard Rules by Graham Nelson, which is 32067 words long.
|
||||
Problem__ PM_Contradiction
|
||||
>--> You wrote 'There is a hairstyle' (source text, line 5), but in another
|
||||
sentence 'There is a hairstyle' (source text, line 4): but this looks like
|
||||
a contradiction, which might be because I have misunderstood what was meant
|
||||
to be the subject of one or both of those sentences.
|
||||
Problem__ PM_SpatialContradiction
|
||||
>--> You wrote 'There is a hairstyle' (source text, line 4), but also 'There
|
||||
is a hairstyle' (source text, line 5): that seems to be saying that the
|
||||
|
@ -13,4 +19,4 @@ Problem__ PM_SpatialContradiction
|
|||
doesn't know 'bag' as the name of any kind - so that it makes only a single
|
||||
thing called 'bag', and then the sentence looks as if it says everyone is
|
||||
carrying the same bag.
|
||||
Inform 7 has finished: 17 centiseconds used.
|
||||
Inform 7 has finished.
|
||||
|
|
|
@ -161,14 +161,14 @@ int Relations::Explicit::REL_assert(bp_family *self, binary_predicate *bp,
|
|||
|
||||
@<Reject non-assertable relations@>;
|
||||
if (Relations::Explicit::stored_dynamically(bp)) {
|
||||
Inferences::draw_relation_spec(bp, spec0, spec1);
|
||||
RelationInferences::draw_spec(bp, spec0, spec1);
|
||||
return TRUE;
|
||||
} else {
|
||||
if ((infs0 == NULL) || (infs1 == NULL)) @<Reject relationship with nothing@>;
|
||||
if (Relations::Explicit::allow_arbitrary_assertions(bp)) {
|
||||
Inferences::draw_relation(bp, infs0, infs1);
|
||||
RelationInferences::draw(bp, infs0, infs1);
|
||||
if ((Relations::Explicit::get_form_of_relation(bp) == Relation_Sym_VtoV) && (infs0 != infs1))
|
||||
Inferences::draw_relation(bp, infs1, infs0);
|
||||
RelationInferences::draw(bp, infs1, infs0);
|
||||
return TRUE;
|
||||
}
|
||||
if (Relations::Explicit::is_explicit_with_runtime_storage(bp)) {
|
||||
|
|
|
@ -103,6 +103,7 @@ DECLARE_CLASS(text_substitution)
|
|||
@e property_permission_CLASS
|
||||
@e property_of_value_storage_CLASS
|
||||
@e property_setting_bp_data_CLASS
|
||||
@e relation_inference_data_CLASS
|
||||
@e rule_CLASS
|
||||
@e rulebook_CLASS
|
||||
@e rulebook_outcome_CLASS
|
||||
|
@ -131,6 +132,7 @@ DECLARE_CLASS(property_permission)
|
|||
DECLARE_CLASS(property)
|
||||
DECLARE_CLASS(property_inference_data)
|
||||
DECLARE_CLASS(property_setting_bp_data)
|
||||
DECLARE_CLASS(relation_inference_data)
|
||||
DECLARE_CLASS(rule)
|
||||
DECLARE_CLASS(rulebook)
|
||||
DECLARE_CLASS(rulebook_outcome)
|
||||
|
|
|
@ -16,18 +16,23 @@ which use this module:
|
|||
@e cached_understanding_CLASS
|
||||
@e command_index_entry_CLASS
|
||||
@e connected_submap_CLASS
|
||||
@e direction_inference_data_CLASS
|
||||
@e door_dir_notice_CLASS
|
||||
@e door_to_notice_CLASS
|
||||
@e EPS_map_level_CLASS
|
||||
@e found_in_inference_data_CLASS
|
||||
@e grammar_line_CLASS
|
||||
@e grammar_verb_CLASS
|
||||
@e loop_over_scope_CLASS
|
||||
@e map_data_CLASS
|
||||
@e named_action_pattern_CLASS
|
||||
@e noun_filter_token_CLASS
|
||||
@e parentage_here_inference_data_CLASS
|
||||
@e parentage_inference_data_CLASS
|
||||
@e parse_name_notice_CLASS
|
||||
@e parsing_data_CLASS
|
||||
@e parsing_pp_data_CLASS
|
||||
@e part_of_inference_data_CLASS
|
||||
@e regions_data_CLASS
|
||||
@e reserved_command_verb_CLASS
|
||||
@e rubric_holder_CLASS
|
||||
|
@ -50,18 +55,23 @@ DECLARE_CLASS(backdrop_found_in_notice)
|
|||
DECLARE_CLASS(cached_understanding)
|
||||
DECLARE_CLASS(command_index_entry)
|
||||
DECLARE_CLASS(connected_submap)
|
||||
DECLARE_CLASS(direction_inference_data)
|
||||
DECLARE_CLASS(door_dir_notice)
|
||||
DECLARE_CLASS(door_to_notice)
|
||||
DECLARE_CLASS(EPS_map_level)
|
||||
DECLARE_CLASS(found_in_inference_data)
|
||||
DECLARE_CLASS(grammar_line)
|
||||
DECLARE_CLASS(grammar_verb)
|
||||
DECLARE_CLASS(loop_over_scope)
|
||||
DECLARE_CLASS(map_data)
|
||||
DECLARE_CLASS(named_action_pattern)
|
||||
DECLARE_CLASS(noun_filter_token)
|
||||
DECLARE_CLASS(parentage_here_inference_data)
|
||||
DECLARE_CLASS(parentage_inference_data)
|
||||
DECLARE_CLASS(parse_name_notice)
|
||||
DECLARE_CLASS(parsing_data)
|
||||
DECLARE_CLASS(parsing_pp_data)
|
||||
DECLARE_CLASS(part_of_inference_data)
|
||||
DECLARE_CLASS(regions_data)
|
||||
DECLARE_CLASS(reserved_command_verb)
|
||||
DECLARE_CLASS(rubric_holder)
|
||||
|
|
|
@ -29,20 +29,55 @@ typedef struct backdrop_found_in_notice {
|
|||
|
||||
=
|
||||
void PL::Backdrops::start(void) {
|
||||
FOUND_IN_INF = Inferences::new_family(I"FOUND_IN_INF", CI_DIFFER_IN_INFS1);
|
||||
FOUND_EVERYWHERE_INF = Inferences::new_family(I"FOUND_EVERYWHERE_INF", CI_DIFFER_IN_INFS1);
|
||||
FOUND_IN_INF = Inferences::new_family(I"FOUND_IN_INF");
|
||||
METHOD_ADD(FOUND_IN_INF, LOG_DETAILS_INF_MTID, PL::Backdrops::log);
|
||||
METHOD_ADD(FOUND_IN_INF, COMPARE_INF_MTID, PL::Backdrops::cmp);
|
||||
|
||||
FOUND_EVERYWHERE_INF = Inferences::new_family(I"FOUND_EVERYWHERE_INF");
|
||||
|
||||
PLUGIN_REGISTER(PLUGIN_CREATE_INFERENCE_FAMILIES, PL::Backdrops::create_inference_families);
|
||||
PLUGIN_REGISTER(PLUGIN_NEW_BASE_KIND_NOTIFY, PL::Backdrops::backdrops_new_base_kind_notify);
|
||||
PLUGIN_REGISTER(PLUGIN_NEW_PROPERTY_NOTIFY, PL::Backdrops::backdrops_new_property_notify);
|
||||
PLUGIN_REGISTER(PLUGIN_COMPLETE_MODEL, PL::Backdrops::backdrops_complete_model);
|
||||
PLUGIN_REGISTER(PLUGIN_LOG_INFERENCE_TYPE, PL::Backdrops::backdrops_log_inference_type);
|
||||
PLUGIN_REGISTER(PLUGIN_ESTIMATE_PROPERTY_USAGE, PL::Backdrops::backdrops_estimate_property_usage);
|
||||
PLUGIN_REGISTER(PLUGIN_INTERVENE_IN_ASSERTION, PL::Backdrops::backdrops_intervene_in_assertion);
|
||||
}
|
||||
|
||||
int PL::Backdrops::create_inference_families(void) {
|
||||
return FALSE;
|
||||
typedef struct found_in_inference_data {
|
||||
struct inference_subject *location;
|
||||
CLASS_DEFINITION
|
||||
} found_in_inference_data;
|
||||
|
||||
inference *PL::Backdrops::new_found_in_inference(inference_subject *loc, int certitude) {
|
||||
PROTECTED_MODEL_PROCEDURE;
|
||||
found_in_inference_data *data = CREATE(found_in_inference_data);
|
||||
data->location = InferenceSubjects::divert(loc);
|
||||
return Inferences::create_inference(FOUND_IN_INF,
|
||||
STORE_POINTER_found_in_inference_data(data), certitude);
|
||||
}
|
||||
|
||||
void PL::Backdrops::log(inference_family *f, inference *inf) {
|
||||
found_in_inference_data *data = RETRIEVE_POINTER_found_in_inference_data(inf->data);
|
||||
if (data->location) LOG(" in:$j", data->location);
|
||||
}
|
||||
|
||||
int PL::Backdrops::cmp(inference_family *f, inference *i1, inference *i2) {
|
||||
found_in_inference_data *data1 = RETRIEVE_POINTER_found_in_inference_data(i1->data);
|
||||
found_in_inference_data *data2 = RETRIEVE_POINTER_found_in_inference_data(i2->data);
|
||||
|
||||
int c = Inferences::measure_infs(data1->location) -
|
||||
Inferences::measure_infs(data2->location);
|
||||
if (c > 0) return CI_DIFFER_IN_TOPIC; if (c < 0) return -CI_DIFFER_IN_TOPIC;
|
||||
|
||||
c = Inferences::measure_inf(i1) - Inferences::measure_inf(i2);
|
||||
if (c > 0) return CI_DIFFER_IN_COPY_ONLY; if (c < 0) return -CI_DIFFER_IN_COPY_ONLY;
|
||||
return CI_IDENTICAL;
|
||||
}
|
||||
|
||||
instance *PL::Backdrops::get_inferred_location(inference *i) {
|
||||
if ((i == NULL) || (i->family != FOUND_IN_INF))
|
||||
internal_error("not a FOUND_IN_INF inf");
|
||||
found_in_inference_data *data = RETRIEVE_POINTER_found_in_inference_data(i->data);
|
||||
return InstanceSubjects::to_instance(data->location);
|
||||
}
|
||||
|
||||
@h Kinds.
|
||||
|
@ -86,7 +121,7 @@ int PL::Backdrops::backdrops_new_property_notify(property *prn) {
|
|||
}
|
||||
|
||||
int PL::Backdrops::object_is_scenery(instance *I) {
|
||||
if (Inferences::get_EO_state(Instances::as_subject(I), P_scenery) > 0)
|
||||
if (PropertyInferences::either_or_state(Instances::as_subject(I), P_scenery) > 0)
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -99,13 +134,6 @@ int PL::Backdrops::backdrops_estimate_property_usage(kind *k, int *words_used) {
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
@h Inferences.
|
||||
|
||||
=
|
||||
int PL::Backdrops::backdrops_log_inference_type(int it) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ Here we look at "in" and "part of" relationships to see if they concern
|
||||
backdrops; if they do, then they need to become |FOUND_IN_INF| inferences.
|
||||
Without this intervention, they'd be subject to the usual spatial rules
|
||||
|
@ -125,9 +153,10 @@ int PL::Backdrops::assert_relations(binary_predicate *relation,
|
|||
(relation == R_regional_containment))) {
|
||||
inference_subject *bd = Instances::as_subject(I1);
|
||||
inference_subject *loc = Instances::as_subject(I0);
|
||||
Inferences::draw(PART_OF_INF, bd, IMPOSSIBLE_CE, loc, NULL);
|
||||
Inferences::draw(IS_ROOM_INF, bd, IMPOSSIBLE_CE, NULL, NULL);
|
||||
Inferences::draw(FOUND_IN_INF, bd, CERTAIN_CE, loc, loc);
|
||||
PL::Spatial::infer_part_of(bd, IMPOSSIBLE_CE, loc);
|
||||
PL::Spatial::infer_is_room(bd, IMPOSSIBLE_CE);
|
||||
inference *i = PL::Backdrops::new_found_in_inference(loc, CERTAIN_CE);
|
||||
Inferences::join_inference(i, bd);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
@ -140,7 +169,7 @@ int PL::Backdrops::assert_relations(binary_predicate *relation,
|
|||
LOOP_OVER_INSTANCES(B, K_object)
|
||||
if (PL::Backdrops::object_is_a_backdrop(B))
|
||||
POSITIVE_KNOWLEDGE_LOOP(I, Instances::as_subject(B), FOUND_IN_INF)
|
||||
if (Inferences::get_reference_as_object(I) == P)
|
||||
if (PL::Backdrops::get_inferred_location(I) == P)
|
||||
|
||||
@d LOOP_OVER_BACKDROPS_EVERYWHERE(B, I)
|
||||
LOOP_OVER_INSTANCES(B, K_object)
|
||||
|
@ -229,8 +258,7 @@ void PL::Backdrops::infer_presence_everywhere(instance *I) {
|
|||
"is a vehicle which is everywhere.' is not.");
|
||||
return;
|
||||
}
|
||||
Inferences::draw(FOUND_EVERYWHERE_INF,
|
||||
Instances::as_subject(I), prevailing_mood, NULL, NULL);
|
||||
Inferences::join_inference(Inferences::create_inference(FOUND_EVERYWHERE_INF, NULL_GENERAL_POINTER, prevailing_mood), Instances::as_subject(I));
|
||||
}
|
||||
|
||||
@h Model completion.
|
||||
|
@ -269,7 +297,7 @@ int PL::Backdrops::backdrops_complete_model(int stage) {
|
|||
@<Find how many rooms or regions the object is found inside@> =
|
||||
inference *inf;
|
||||
POSITIVE_KNOWLEDGE_LOOP(inf, Instances::as_subject(I), FOUND_IN_INF) {
|
||||
instance *loc = Inferences::get_reference_as_object(inf);
|
||||
instance *loc = PL::Backdrops::get_inferred_location(inf);
|
||||
if ((K_region) && (Instances::of_kind(loc, K_region))) region_count++;
|
||||
else room_count++;
|
||||
}
|
||||
|
@ -280,7 +308,7 @@ int PL::Backdrops::backdrops_complete_model(int stage) {
|
|||
packaging_state save = Emit::named_array_begin(FOUNDIN, K_value);
|
||||
inference *inf;
|
||||
POSITIVE_KNOWLEDGE_LOOP(inf, Instances::as_subject(I), FOUND_IN_INF)
|
||||
Emit::array_iname_entry(RTInstances::iname(Inferences::get_reference_as_object(inf)));
|
||||
Emit::array_iname_entry(RTInstances::iname(PL::Backdrops::get_inferred_location(inf)));
|
||||
Emit::array_end(save);
|
||||
Produce::annotate_i(FOUNDIN, INLINE_ARRAY_IANN, 1);
|
||||
|
||||
|
@ -323,7 +351,7 @@ void PL::Backdrops::write_found_in_routines(void) {
|
|||
packaging_state save = Routines::begin(notice->found_in_routine_iname);
|
||||
inference *inf;
|
||||
POSITIVE_KNOWLEDGE_LOOP(inf, Instances::as_subject(I), FOUND_IN_INF) {
|
||||
instance *loc = Inferences::get_reference_as_object(inf);
|
||||
instance *loc = PL::Backdrops::get_inferred_location(inf);
|
||||
Produce::inv_primitive(Emit::tree(), IF_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
if ((K_region) && (Instances::of_kind(loc, K_region))) {
|
||||
|
|
|
@ -1120,7 +1120,7 @@ void PL::EPSMap::plot_text_at(OUTPUT_STREAM, wchar_t *text_to_plot, instance *I,
|
|||
|
||||
@<Try taking the name from the printed name property of the room@> =
|
||||
if (P_printed_name) {
|
||||
parse_node *V = Inferences::get_prop_state_at(
|
||||
parse_node *V = PropertyInferences::get_prop_state_at(
|
||||
Instances::as_subject(I), P_printed_name, NULL);
|
||||
if ((Rvalues::is_CONSTANT_of_kind(V, K_text)) &&
|
||||
(Wordings::nonempty(Node::get_text(V)))) {
|
||||
|
|
|
@ -258,12 +258,10 @@ int PL::MapDirections::REL_assert(bp_family *self, binary_predicate *bp,
|
|||
inference_subject *infs_from = infs0;
|
||||
inference_subject *infs_to = infs1;
|
||||
|
||||
Inferences::draw(IS_ROOM_INF, infs_from, prevailing_mood, NULL, NULL);
|
||||
PL::Spatial::infer_is_room(infs_from, prevailing_mood);
|
||||
if ((prevailing_mood >= 0) && (infs_to))
|
||||
Inferences::draw(IS_ROOM_INF, infs_to, LIKELY_CE, NULL, NULL);
|
||||
Inferences::draw(DIRECTION_INF, infs_from, prevailing_mood,
|
||||
infs_to, o_dir?(Instances::as_subject(o_dir)):NULL);
|
||||
|
||||
PL::Spatial::infer_is_room(infs_to, LIKELY_CE);
|
||||
PL::Map::infer_direction(infs_from, infs_to, o_dir);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
|
@ -273,7 +273,7 @@ int PL::Regions::assert_relations(binary_predicate *relation,
|
|||
@<A region is being put inside a region@> =
|
||||
inference_subject *inner = Instances::as_subject(I1);
|
||||
inference_subject *outer = Instances::as_subject(I0);
|
||||
Inferences::draw(PARENTAGE_INF, inner, CERTAIN_CE, outer, NULL);
|
||||
PL::Spatial::infer_parentage(inner, CERTAIN_CE, outer);
|
||||
|
||||
@ Anything in or part of a region is necessarily a room, if it isn't known
|
||||
to be a region already:
|
||||
|
@ -316,7 +316,7 @@ int PL::Regions::regions_complete_model(int stage) {
|
|||
if ((Instances::of_kind(I, K_room)) ||
|
||||
(Instances::of_kind(I, K_region))) {
|
||||
parse_node *where = NULL;
|
||||
parse_node *val = Inferences::get_prop_state_at(
|
||||
parse_node *val = PropertyInferences::get_prop_state_at(
|
||||
Instances::as_subject(I), P_map_region, &where);
|
||||
if (val) {
|
||||
instance *reg =
|
||||
|
|
|
@ -2746,7 +2746,7 @@ void PL::SpatialMap::log_precis_of_map(void) {
|
|||
if (Instances::of_kind(R, K_door)) {
|
||||
wording W = Instances::get_name(R, FALSE);
|
||||
LOG("%+W is a door.\n", W);
|
||||
parse_node *S = Inferences::get_prop_state(
|
||||
parse_node *S = PropertyInferences::get_prop_state(
|
||||
Instances::as_subject(R), P_other_side);
|
||||
instance *X = Rvalues::to_object_instance(S);
|
||||
if (X) {
|
||||
|
|
|
@ -57,6 +57,104 @@ inference_family *PARENTAGE_HERE_INF = NULL; /* 53 located vaguely as "here"? */
|
|||
inference_family *PARENTAGE_NOWHERE_INF = NULL; /* 54 located vaguely as "nowhere"? */
|
||||
inference_family *PART_OF_INF = NULL; /* 55 is O a part of another object? */
|
||||
|
||||
@ =
|
||||
void PL::Spatial::infer_is_room(inference_subject *R, int certitude) {
|
||||
Inferences::join_inference(Inferences::create_inference(IS_ROOM_INF, NULL_GENERAL_POINTER, certitude), R);
|
||||
}
|
||||
void PL::Spatial::infer_is_nowhere(inference_subject *R, int certitude) {
|
||||
Inferences::join_inference(Inferences::create_inference(PARENTAGE_NOWHERE_INF, NULL_GENERAL_POINTER, certitude), R);
|
||||
}
|
||||
void PL::Spatial::infer_part_of(inference_subject *inner, int certitude, inference_subject *outer) {
|
||||
part_of_inference_data *data = CREATE(part_of_inference_data);
|
||||
data->parent = InferenceSubjects::divert(outer);
|
||||
inference *i = Inferences::create_inference(PART_OF_INF,
|
||||
STORE_POINTER_part_of_inference_data(data), certitude);
|
||||
Inferences::join_inference(i, inner);
|
||||
}
|
||||
void PL::Spatial::infer_parentage(inference_subject *inner, int certitude, inference_subject *outer) {
|
||||
parentage_inference_data *data = CREATE(parentage_inference_data);
|
||||
data->parent = InferenceSubjects::divert(outer);
|
||||
inference *i = Inferences::create_inference(PARENTAGE_INF,
|
||||
STORE_POINTER_parentage_inference_data(data), certitude);
|
||||
Inferences::join_inference(i, inner);
|
||||
}
|
||||
void PL::Spatial::infer_parentage_here(inference_subject *inner, int certitude, inference_subject *outer) {
|
||||
parentage_here_inference_data *data = CREATE(parentage_here_inference_data);
|
||||
data->parent = InferenceSubjects::divert(outer);
|
||||
inference *i = Inferences::create_inference(PARENTAGE_HERE_INF,
|
||||
STORE_POINTER_parentage_here_inference_data(data), certitude);
|
||||
Inferences::join_inference(i, inner);
|
||||
}
|
||||
|
||||
typedef struct part_of_inference_data {
|
||||
struct inference_subject *parent;
|
||||
CLASS_DEFINITION
|
||||
} part_of_inference_data;
|
||||
|
||||
typedef struct parentage_inference_data {
|
||||
struct inference_subject *parent;
|
||||
CLASS_DEFINITION
|
||||
} parentage_inference_data;
|
||||
|
||||
typedef struct parentage_here_inference_data {
|
||||
struct inference_subject *parent;
|
||||
CLASS_DEFINITION
|
||||
} parentage_here_inference_data;
|
||||
|
||||
void PL::Spatial::log_parentage_inf(inference_family *f, inference *inf) {
|
||||
parentage_inference_data *data = RETRIEVE_POINTER_parentage_inference_data(inf->data);
|
||||
if (data->parent) LOG(" parent:$j", data->parent);
|
||||
}
|
||||
|
||||
int PL::Spatial::cmp_parentage_inf(inference_family *f, inference *i1, inference *i2) {
|
||||
parentage_inference_data *data1 = RETRIEVE_POINTER_parentage_inference_data(i1->data);
|
||||
parentage_inference_data *data2 = RETRIEVE_POINTER_parentage_inference_data(i2->data);
|
||||
|
||||
int c = Inferences::measure_infs(data1->parent) -
|
||||
Inferences::measure_infs(data2->parent);
|
||||
if (c > 0) return CI_DIFFER_IN_CONTENT; if (c < 0) return -CI_DIFFER_IN_CONTENT;
|
||||
|
||||
c = Inferences::measure_inf(i1) - Inferences::measure_inf(i2);
|
||||
if (c > 0) return CI_DIFFER_IN_COPY_ONLY; if (c < 0) return -CI_DIFFER_IN_COPY_ONLY;
|
||||
return CI_IDENTICAL;
|
||||
}
|
||||
|
||||
void PL::Spatial::log_parentage_here_inf(inference_family *f, inference *inf) {
|
||||
parentage_here_inference_data *data = RETRIEVE_POINTER_parentage_here_inference_data(inf->data);
|
||||
if (data->parent) LOG(" parent:$j", data->parent);
|
||||
}
|
||||
|
||||
int PL::Spatial::cmp_parentage_here_inf(inference_family *f, inference *i1, inference *i2) {
|
||||
parentage_here_inference_data *data1 = RETRIEVE_POINTER_parentage_here_inference_data(i1->data);
|
||||
parentage_here_inference_data *data2 = RETRIEVE_POINTER_parentage_here_inference_data(i2->data);
|
||||
|
||||
int c = Inferences::measure_infs(data1->parent) -
|
||||
Inferences::measure_infs(data2->parent);
|
||||
if (c > 0) return CI_DIFFER_IN_CONTENT; if (c < 0) return -CI_DIFFER_IN_CONTENT;
|
||||
|
||||
c = Inferences::measure_inf(i1) - Inferences::measure_inf(i2);
|
||||
if (c > 0) return CI_DIFFER_IN_COPY_ONLY; if (c < 0) return -CI_DIFFER_IN_COPY_ONLY;
|
||||
return CI_IDENTICAL;
|
||||
}
|
||||
|
||||
void PL::Spatial::log_part_of_inference(inference_family *f, inference *inf) {
|
||||
part_of_inference_data *data = RETRIEVE_POINTER_part_of_inference_data(inf->data);
|
||||
if (data->parent) LOG(" part-of:$j", data->parent);
|
||||
}
|
||||
|
||||
int PL::Spatial::cmp_part_of_inference(inference_family *f, inference *i1, inference *i2) {
|
||||
part_of_inference_data *data1 = RETRIEVE_POINTER_part_of_inference_data(i1->data);
|
||||
part_of_inference_data *data2 = RETRIEVE_POINTER_part_of_inference_data(i2->data);
|
||||
|
||||
int c = Inferences::measure_infs(data1->parent) -
|
||||
Inferences::measure_infs(data2->parent);
|
||||
if (c > 0) return CI_DIFFER_IN_CONTENT; if (c < 0) return -CI_DIFFER_IN_CONTENT;
|
||||
|
||||
c = Inferences::measure_inf(i1) - Inferences::measure_inf(i2);
|
||||
if (c > 0) return CI_DIFFER_IN_COPY_ONLY; if (c < 0) return -CI_DIFFER_IN_COPY_ONLY;
|
||||
return CI_IDENTICAL;
|
||||
}
|
||||
|
||||
@ The Spatial plugin also needs to know about a considerable number of special
|
||||
kinds and properties:
|
||||
|
||||
|
@ -96,24 +194,26 @@ inference_subject *infs_person = NULL;
|
|||
|
||||
=
|
||||
void PL::Spatial::start(void) {
|
||||
IS_ROOM_INF = Inferences::new_family(I"IS_ROOM_INF", CI_DIFFER_IN_INFS1);
|
||||
IS_ROOM_INF = Inferences::new_family(I"IS_ROOM_INF");
|
||||
METHOD_ADD(IS_ROOM_INF, EXPLAIN_CONTRADICTION_INF_MTID, PL::Spatial::is_room_explain_contradiction);
|
||||
CONTAINS_THINGS_INF = Inferences::new_family(I"CONTAINS_THINGS_INF", CI_DIFFER_IN_INFS1);
|
||||
PARENTAGE_INF = Inferences::new_family(I"PARENTAGE_INF", CI_DIFFER_IN_INFS1);
|
||||
CONTAINS_THINGS_INF = Inferences::new_family(I"CONTAINS_THINGS_INF");
|
||||
PARENTAGE_INF = Inferences::new_family(I"PARENTAGE_INF");
|
||||
METHOD_ADD(PARENTAGE_INF, LOG_DETAILS_INF_MTID, PL::Spatial::log_parentage_inf);
|
||||
METHOD_ADD(PARENTAGE_INF, COMPARE_INF_MTID, PL::Spatial::cmp_parentage_inf);
|
||||
METHOD_ADD(PARENTAGE_INF, EXPLAIN_CONTRADICTION_INF_MTID, PL::Spatial::parentage_explain_contradiction);
|
||||
PARENTAGE_HERE_INF = Inferences::new_family(I"PARENTAGE_HERE_INF", CI_DIFFER_IN_INFS1);
|
||||
PARENTAGE_NOWHERE_INF = Inferences::new_family(I"PARENTAGE_NOWHERE_INF", CI_DIFFER_IN_INFS1);
|
||||
PART_OF_INF = Inferences::new_family(I"PART_OF_INF", CI_DIFFER_IN_INFS1);
|
||||
PARENTAGE_HERE_INF = Inferences::new_family(I"PARENTAGE_HERE_INF");
|
||||
METHOD_ADD(PARENTAGE_HERE_INF, LOG_DETAILS_INF_MTID, PL::Spatial::log_parentage_here_inf);
|
||||
METHOD_ADD(PARENTAGE_HERE_INF, COMPARE_INF_MTID, PL::Spatial::cmp_parentage_here_inf);
|
||||
PARENTAGE_NOWHERE_INF = Inferences::new_family(I"PARENTAGE_NOWHERE_INF");
|
||||
PART_OF_INF = Inferences::new_family(I"PART_OF_INF");
|
||||
METHOD_ADD(PART_OF_INF, LOG_DETAILS_INF_MTID, PL::Spatial::log_part_of_inference);
|
||||
METHOD_ADD(PART_OF_INF, COMPARE_INF_MTID, PL::Spatial::cmp_part_of_inference);
|
||||
|
||||
PLUGIN_REGISTER(PLUGIN_CREATE_INFERENCE_FAMILIES, PL::Spatial::create_inference_families);
|
||||
PLUGIN_REGISTER(PLUGIN_CREATE_INFERENCES, PL::Spatial::create_inference_subjects);
|
||||
PLUGIN_REGISTER(PLUGIN_NEW_BASE_KIND_NOTIFY, PL::Spatial::spatial_new_base_kind_notify);
|
||||
PLUGIN_REGISTER(PLUGIN_ACT_ON_SPECIAL_NPS, PL::Spatial::spatial_act_on_special_NPs);
|
||||
PLUGIN_REGISTER(PLUGIN_COMPLETE_MODEL, PL::Spatial::IF_complete_model);
|
||||
PLUGIN_REGISTER(PLUGIN_DEFAULT_APPEARANCE, PL::Spatial::spatial_default_appearance);
|
||||
PLUGIN_REGISTER(PLUGIN_INFERENCES_CONTRADICT, PL::Spatial::spatial_inferences_contradict);
|
||||
PLUGIN_REGISTER(PLUGIN_EXPLAIN_CONTRADICTION, PL::Spatial::spatial_explain_contradiction);
|
||||
PLUGIN_REGISTER(PLUGIN_LOG_INFERENCE_TYPE, PL::Spatial::spatial_log_inference_type);
|
||||
PLUGIN_REGISTER(PLUGIN_NAME_TO_EARLY_INFS, PL::Spatial::spatial_name_to_early_infs);
|
||||
PLUGIN_REGISTER(PLUGIN_NEW_SUBJECT_NOTIFY, PL::Spatial::spatial_new_subject_notify);
|
||||
PLUGIN_REGISTER(PLUGIN_NEW_PROPERTY_NOTIFY, PL::Spatial::spatial_new_property_notify);
|
||||
|
@ -134,14 +234,30 @@ int PL::Spatial::is_room_explain_contradiction(inference_family *f, inference *A
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
instance *PL::Spatial::get_inferred_parent(inference *inf) {
|
||||
if (inf->family == PARENTAGE_INF) {
|
||||
parentage_inference_data *data = RETRIEVE_POINTER_parentage_inference_data(inf->data);
|
||||
return InstanceSubjects::to_object_instance(data->parent);
|
||||
}
|
||||
if (inf->family == PARENTAGE_HERE_INF) {
|
||||
parentage_here_inference_data *data = RETRIEVE_POINTER_parentage_here_inference_data(inf->data);
|
||||
return InstanceSubjects::to_object_instance(data->parent);
|
||||
}
|
||||
if (inf->family == PART_OF_INF) {
|
||||
part_of_inference_data *data = RETRIEVE_POINTER_part_of_inference_data(inf->data);
|
||||
return InstanceSubjects::to_object_instance(data->parent);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int PL::Spatial::parentage_explain_contradiction(inference_family *f, inference *A,
|
||||
inference *B, int similarity, inference_subject *subj) {
|
||||
if (Inferences::get_reference_as_object(A) != Inferences::get_reference_as_object(B)) {
|
||||
if (PL::Spatial::get_inferred_parent(A) != PL::Spatial::get_inferred_parent(B)) {
|
||||
Problems::quote_source(1, Inferences::where_inferred(A));
|
||||
Problems::quote_source(2, Inferences::where_inferred(B));
|
||||
Problems::quote_subject(3, subj);
|
||||
Problems::quote_object(4, Inferences::get_reference_as_object(A));
|
||||
Problems::quote_object(5, Inferences::get_reference_as_object(B));
|
||||
Problems::quote_object(4, PL::Spatial::get_inferred_parent(A));
|
||||
Problems::quote_object(5, PL::Spatial::get_inferred_parent(B));
|
||||
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_SpatialContradiction));
|
||||
Problems::issue_problem_segment(
|
||||
"You wrote %1, but also %2: that seems to be saying that the same "
|
||||
|
@ -157,10 +273,6 @@ int PL::Spatial::parentage_explain_contradiction(inference_family *f, inference
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
int PL::Spatial::create_inference_families(void) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ In talking about some of the fundamental spatial domains we potentially have
|
||||
a vicious circle, because
|
||||
(a) we need fundamental kinds like "thing" and "room" in order to
|
||||
|
@ -220,50 +332,6 @@ spatial_data *PL::Spatial::new_data(inference_subject *subj) {
|
|||
return sd;
|
||||
}
|
||||
|
||||
@h Special inferences.
|
||||
Four of these are quite simple inferences, but |PARENTAGE_INF| stores the
|
||||
object to which a spatial relationship is being inferred; and this means that
|
||||
multiple |PARENTAGE_INF|s can contradict each other.
|
||||
|
||||
=
|
||||
int PL::Spatial::spatial_log_inference_type(int it) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int PL::Spatial::spatial_inferences_contradict(inference *A, inference *B, int similarity) {
|
||||
if ((Inferences::get_inference_type(A) == PARENTAGE_INF) &&
|
||||
(Inferences::get_reference_as_object(A) !=
|
||||
Inferences::get_reference_as_object(B)))
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int PL::Spatial::spatial_explain_contradiction(inference *A, inference *B, int similarity,
|
||||
inference_subject *subj) {
|
||||
/* if ((Inferences::get_inference_type(A) == PARENTAGE_INF) &&
|
||||
(Inferences::get_reference_as_object(A) !=
|
||||
Inferences::get_reference_as_object(B))) {
|
||||
Problems::quote_source(1, Inferences::where_inferred(A));
|
||||
Problems::quote_source(2, Inferences::where_inferred(B));
|
||||
Problems::quote_subject(3, subj);
|
||||
Problems::quote_object(4, Inferences::get_reference_as_object(A));
|
||||
Problems::quote_object(5, Inferences::get_reference_as_object(B));
|
||||
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(PM_SpatialContradiction));
|
||||
Problems::issue_problem_segment(
|
||||
"You wrote %1, but also %2: that seems to be saying that the same "
|
||||
"object (%3) must be in two different places (%4 and %5). This "
|
||||
"looks like a contradiction. %P"
|
||||
"This sometimes happens as a result of a sentence like 'Every person "
|
||||
"carries a bag', when Inform doesn't know 'bag' as the name of any "
|
||||
"kind - so that it makes only a single thing called 'bag', and then "
|
||||
"the sentence looks as if it says everyone is carrying the same bag.");
|
||||
Problems::issue_problem_end();
|
||||
return TRUE;
|
||||
}
|
||||
*/
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@h Special kinds.
|
||||
These are kind names to do with spatial layout which Inform provides special
|
||||
support for; it recognises the Englishs name when defined by the Standard
|
||||
|
@ -307,8 +375,7 @@ int PL::Spatial::spatial_set_kind_notify(instance *I, kind *k) {
|
|||
kind *kw = Instances::to_kind(I);
|
||||
if ((!(Kinds::Behaviour::is_object_of_kind(kw, K_room))) &&
|
||||
(Kinds::Behaviour::is_object_of_kind(k, K_room)))
|
||||
Inferences::draw(IS_ROOM_INF, Instances::as_subject(I), CERTAIN_CE,
|
||||
NULL, NULL);
|
||||
PL::Spatial::infer_is_room(Instances::as_subject(I), CERTAIN_CE);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
|
@ -562,20 +629,16 @@ void PL::Spatial::infer_presence_here(instance *I) {
|
|||
"in a single assertion sentence. This avoids potential confusion, "
|
||||
"since 'here' can mean different things in different sentences.");
|
||||
}
|
||||
|
||||
Inferences::draw(PARENTAGE_HERE_INF, infs, CERTAIN_CE,
|
||||
Anaphora::get_current_subject(), NULL);
|
||||
Inferences::draw(IS_ROOM_INF, infs, IMPOSSIBLE_CE, NULL, NULL);
|
||||
PL::Spatial::infer_parentage_here(infs, CERTAIN_CE, Anaphora::get_current_subject());
|
||||
PL::Spatial::infer_is_room(infs, IMPOSSIBLE_CE);
|
||||
}
|
||||
|
||||
@ Similarly:
|
||||
|
||||
=
|
||||
void PL::Spatial::infer_presence_nowhere(instance *I) {
|
||||
Inferences::draw(PARENTAGE_NOWHERE_INF,
|
||||
Instances::as_subject(I), CERTAIN_CE, NULL, NULL);
|
||||
Inferences::draw(IS_ROOM_INF, Instances::as_subject(I), IMPOSSIBLE_CE,
|
||||
NULL, NULL);
|
||||
PL::Spatial::infer_is_nowhere(Instances::as_subject(I), CERTAIN_CE);
|
||||
PL::Spatial::infer_is_room(Instances::as_subject(I), IMPOSSIBLE_CE);
|
||||
}
|
||||
|
||||
@h Completing the model, stages I and II.
|
||||
|
@ -853,7 +916,7 @@ object under investigation.
|
|||
@<Find the inference which will decide the progenitor@>;
|
||||
if (parent_setting_inference) {
|
||||
instance *whereabouts =
|
||||
Inferences::get_reference_as_object(parent_setting_inference);
|
||||
PL::Spatial::get_inferred_parent(parent_setting_inference);
|
||||
if (SPATIAL_DATA(I)->here_flag) @<Find the whereabouts of something here@>;
|
||||
if (whereabouts) {
|
||||
PL::Spatial::set_progenitor(I, whereabouts, parent_setting_inference);
|
||||
|
|
|
@ -230,13 +230,13 @@ way which isn't symmetrical between the two, and this way round is cleanest.
|
|||
@<Draw inferences using only the standard Spatial conventions@> =
|
||||
inference_subject *item = Instances::as_subject(I1);
|
||||
inference_subject *loc = Instances::as_subject(I0);
|
||||
Inferences::draw(PART_OF_INF, item,
|
||||
(bp == R_incorporation)?CERTAIN_CE:IMPOSSIBLE_CE,
|
||||
loc, NULL);
|
||||
PL::Spatial::infer_part_of(item,
|
||||
(bp == R_incorporation)?CERTAIN_CE:IMPOSSIBLE_CE, loc);
|
||||
if (bp == R_containment)
|
||||
Inferences::draw(CONTAINS_THINGS_INF, loc, CERTAIN_CE, item, NULL);
|
||||
Inferences::draw(PARENTAGE_INF, item, CERTAIN_CE, loc, NULL);
|
||||
Inferences::draw(IS_ROOM_INF, item, IMPOSSIBLE_CE, NULL, NULL);
|
||||
Inferences::join_inference(
|
||||
Inferences::create_inference(CONTAINS_THINGS_INF, NULL_GENERAL_POINTER, CERTAIN_CE), loc);
|
||||
PL::Spatial::infer_parentage(item, CERTAIN_CE, loc);
|
||||
PL::Spatial::infer_is_room(item, IMPOSSIBLE_CE);
|
||||
|
||||
@ If something is being worn, it needs to have the I7 either/or property
|
||||
"wearable" and also the I6-only attribute |worn|. (Arguably Clothing ought
|
||||
|
|
|
@ -124,7 +124,7 @@ fact, end.
|
|||
Index::anchor_numbered(OUT, sc->allocation_id);
|
||||
WRITE("<b>The <i>%+W</i> scene</b>", PL::Scenes::get_name(sc));
|
||||
Index::link(OUT, Wordings::first_wn(Node::get_text(sc->scene_declared_at)));
|
||||
if (Inferences::get_EO_state(
|
||||
if (PropertyInferences::either_or_state(
|
||||
Instances::as_subject(sc->as_instance), P_recurring) > 0)
|
||||
WRITE(" <i>recurring</i>");
|
||||
HTML_CLOSE("p");
|
||||
|
@ -271,7 +271,7 @@ void PL::Scenes::Index::index_from_scene(OUTPUT_STREAM, scene *sc, int depth,
|
|||
|
||||
@<Show the recurring icon if appropriate@> =
|
||||
inference_subject *subj = Instances::as_subject(sc->as_instance);
|
||||
if (Inferences::get_EO_state(subj, P_recurring) > UNKNOWN_CE)
|
||||
if (PropertyInferences::either_or_state(subj, P_recurring) > UNKNOWN_CE)
|
||||
PL::Scenes::Index::scene_icon_append(OUT, "Recurring");
|
||||
|
||||
@ And this is where the routine recurses, so that consequent scenes are
|
||||
|
|
|
@ -83,6 +83,58 @@ makes for more legible code if we use a special inference type of our own:
|
|||
= (early code)
|
||||
inference_family *DIRECTION_INF = NULL; /* 100; where do map connections from O lead? */
|
||||
|
||||
@
|
||||
|
||||
=
|
||||
typedef struct direction_inference_data {
|
||||
struct inference_subject *to;
|
||||
struct inference_subject *dir;
|
||||
CLASS_DEFINITION
|
||||
} direction_inference_data;
|
||||
|
||||
inference *PL::Map::new_direction_inference(inference_subject *infs_from,
|
||||
inference_subject *infs_to, instance *o_dir) {
|
||||
PROTECTED_MODEL_PROCEDURE;
|
||||
direction_inference_data *data = CREATE(direction_inference_data);
|
||||
data->to = infs_to;
|
||||
data->dir = (o_dir)?(Instances::as_subject(o_dir)):NULL;
|
||||
return Inferences::create_inference(DIRECTION_INF,
|
||||
STORE_POINTER_direction_inference_data(data), prevailing_mood);
|
||||
}
|
||||
|
||||
void PL::Map::infer_direction(inference_subject *infs_from, inference_subject *infs_to,
|
||||
instance *o_dir) {
|
||||
inference *i = PL::Map::new_direction_inference(infs_from, infs_to, o_dir);
|
||||
Inferences::join_inference(i, infs_from);
|
||||
}
|
||||
|
||||
void PL::Map::get_map_references(inference *i,
|
||||
inference_subject **infs1, inference_subject **infs2) {
|
||||
if ((i == NULL) || (i->family != DIRECTION_INF))
|
||||
internal_error("not a direction inf");
|
||||
direction_inference_data *data = RETRIEVE_POINTER_direction_inference_data(i->data);
|
||||
if (infs1) *infs1 = data->to; if (infs2) *infs2 = data->dir;
|
||||
}
|
||||
|
||||
void PL::Map::log_direction_inf(inference_family *f, inference *inf) {
|
||||
direction_inference_data *data = RETRIEVE_POINTER_direction_inference_data(inf->data);
|
||||
LOG("-to:$j -dir:$j", data->to, data->dir);
|
||||
}
|
||||
|
||||
int PL::Map::cmp_direction_inf(inference_family *f, inference *i1, inference *i2) {
|
||||
direction_inference_data *data1 = RETRIEVE_POINTER_direction_inference_data(i1->data);
|
||||
direction_inference_data *data2 = RETRIEVE_POINTER_direction_inference_data(i2->data);
|
||||
|
||||
int c = Inferences::measure_infs(data1->dir) - Inferences::measure_infs(data2->dir);
|
||||
if (c > 0) return CI_DIFFER_IN_TOPIC; if (c < 0) return -CI_DIFFER_IN_TOPIC;
|
||||
c = Inferences::measure_infs(data1->to) - Inferences::measure_infs(data2->to);
|
||||
if (c > 0) return CI_DIFFER_IN_CONTENT; if (c < 0) return -CI_DIFFER_IN_CONTENT;
|
||||
|
||||
c = Inferences::measure_inf(i1) - Inferences::measure_inf(i2);
|
||||
if (c > 0) return CI_DIFFER_IN_COPY_ONLY; if (c < 0) return -CI_DIFFER_IN_COPY_ONLY;
|
||||
return CI_IDENTICAL;
|
||||
}
|
||||
|
||||
@ One useful constant:
|
||||
|
||||
@d MAX_WORDS_IN_DIRECTION (MAX_WORDS_IN_ASSEMBLAGE - 4)
|
||||
|
@ -111,9 +163,10 @@ typedef struct door_to_notice {
|
|||
|
||||
=
|
||||
void PL::Map::start(void) {
|
||||
DIRECTION_INF = Inferences::new_family(I"DIRECTION_INF", CI_DIFFER_IN_INFS1);
|
||||
DIRECTION_INF = Inferences::new_family(I"DIRECTION_INF");
|
||||
METHOD_ADD(DIRECTION_INF, LOG_DETAILS_INF_MTID, PL::Map::log_direction_inf);
|
||||
METHOD_ADD(DIRECTION_INF, COMPARE_INF_MTID, PL::Map::cmp_direction_inf);
|
||||
|
||||
PLUGIN_REGISTER(PLUGIN_CREATE_INFERENCE_FAMILIES, PL::Map::create_inference_families);
|
||||
PLUGIN_REGISTER(PLUGIN_NEW_BASE_KIND_NOTIFY, PL::Map::map_new_base_kind_notify);
|
||||
PLUGIN_REGISTER(PLUGIN_NEW_SUBJECT_NOTIFY, PL::Map::map_new_subject_notify);
|
||||
PLUGIN_REGISTER(PLUGIN_SET_KIND_NOTIFY, PL::Map::map_set_kind_notify);
|
||||
|
@ -122,9 +175,6 @@ void PL::Map::start(void) {
|
|||
PLUGIN_REGISTER(PLUGIN_CHECK_GOING, PL::Map::map_check_going);
|
||||
PLUGIN_REGISTER(PLUGIN_COMPILE_MODEL_TABLES, PL::Map::map_compile_model_tables);
|
||||
PLUGIN_REGISTER(PLUGIN_ESTIMATE_PROPERTY_USAGE, PL::Map::map_estimate_property_usage);
|
||||
PLUGIN_REGISTER(PLUGIN_LOG_INFERENCE_TYPE, PL::Map::map_log_inference_type);
|
||||
PLUGIN_REGISTER(PLUGIN_INFERENCES_CONTRADICT, PL::Map::map_inferences_contradict);
|
||||
PLUGIN_REGISTER(PLUGIN_CREATE_INFERENCE_FAMILIES, PL::Map::create_inference_families);
|
||||
PLUGIN_REGISTER(PLUGIN_COMPLETE_MODEL, PL::Map::map_complete_model);
|
||||
PLUGIN_REGISTER(PLUGIN_NEW_PROPERTY_NOTIFY, PL::Map::map_new_property_notify);
|
||||
PLUGIN_REGISTER(PLUGIN_PROPERTY_VALUE_NOTIFY, PL::Map::map_property_value_notify);
|
||||
|
@ -133,10 +183,6 @@ void PL::Map::start(void) {
|
|||
PLUGIN_REGISTER(PLUGIN_ANNOTATE_IN_WORLD_INDEX, PL::Map::map_annotate_in_World_index);
|
||||
}
|
||||
|
||||
int PL::Map::create_inference_families(void) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ =
|
||||
map_data *PL::Map::new_data(inference_subject *subj) {
|
||||
map_data *md = CREATE(map_data);
|
||||
|
@ -155,26 +201,6 @@ map_data *PL::Map::new_data(inference_subject *subj) {
|
|||
return md;
|
||||
}
|
||||
|
||||
@h Inferences.
|
||||
|
||||
=
|
||||
int PL::Map::map_log_inference_type(int it) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ Two subjects are attached to a direction inference: 1, the destination;
|
||||
2, the direction. So at the |CI_DIFFER_IN_INFS1| level of similarity, two
|
||||
different direction inferences disagree about the destination for a given
|
||||
direction -- this of course is a contradiction.
|
||||
|
||||
=
|
||||
int PL::Map::map_inferences_contradict(inference *A, inference *B, int similarity) {
|
||||
if (Inferences::get_inference_type(A) == DIRECTION_INF)
|
||||
if (similarity == CI_DIFFER_IN_INFS1)
|
||||
return TRUE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@h Kinds.
|
||||
These are kind names to do with mapping which Inform provides special
|
||||
support for; it recognises the English name when defined by the Standard
|
||||
|
@ -356,7 +382,7 @@ void PL::Map::build_exits_array(void) {
|
|||
inference *inf;
|
||||
POSITIVE_KNOWLEDGE_LOOP(inf, Instances::as_subject(I), DIRECTION_INF) {
|
||||
inference_subject *infs1, *infs2;
|
||||
Inferences::get_references(inf, &infs1, &infs2);
|
||||
PL::Map::get_map_references(inf, &infs1, &infs2);
|
||||
instance *to = NULL, *dir = NULL;
|
||||
if (infs1) to = InstanceSubjects::to_object_instance(infs1);
|
||||
if (infs2) dir = InstanceSubjects::to_object_instance(infs2);
|
||||
|
@ -481,10 +507,7 @@ deduction is made:
|
|||
int PL::Map::map_property_value_notify(property *prn, parse_node *val) {
|
||||
if (prn == P_other_side) {
|
||||
instance *I = Rvalues::to_object_instance(val);
|
||||
if (I) {
|
||||
Inferences::draw(IS_ROOM_INF, Instances::as_subject(I), CERTAIN_CE,
|
||||
NULL, NULL);
|
||||
}
|
||||
if (I) PL::Spatial::infer_is_room(Instances::as_subject(I), CERTAIN_CE);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
@ -500,7 +523,7 @@ void PL::Map::set_found_in(instance *I, inter_name *S) {
|
|||
if (P_found_in == NULL)
|
||||
P_found_in = Properties::Valued::new_nameless(I"found_in",
|
||||
K_value);
|
||||
if (Inferences::get_prop_state(
|
||||
if (PropertyInferences::get_prop_state(
|
||||
Instances::as_subject(I), P_found_in))
|
||||
internal_error("rival found_in interpretations");
|
||||
Properties::Valued::assert(P_found_in, Instances::as_subject(I),
|
||||
|
@ -514,7 +537,7 @@ and there seems little point in writing this any better.
|
|||
|
||||
=
|
||||
instance *PL::Map::get_value_of_opposite_property(instance *I) {
|
||||
parse_node *val = Inferences::get_prop_state(
|
||||
parse_node *val = PropertyInferences::get_prop_state(
|
||||
Instances::as_subject(I), P_opposite);
|
||||
if (val) return Rvalues::to_object_instance(val);
|
||||
return NULL;
|
||||
|
@ -736,7 +759,7 @@ checks that various mapping impossibilities do not occur.
|
|||
inference *inf;
|
||||
POSITIVE_KNOWLEDGE_LOOP(inf, Instances::as_subject(I), DIRECTION_INF) {
|
||||
inference_subject *infs1;
|
||||
Inferences::get_references(inf, &infs1, NULL);
|
||||
PL::Map::get_map_references(inf, &infs1, NULL);
|
||||
instance *to = InstanceSubjects::to_object_instance(infs1);
|
||||
if ((PL::Spatial::object_is_a_room(I)) && (to) &&
|
||||
(PL::Map::object_is_a_door(to) == FALSE) &&
|
||||
|
@ -768,7 +791,7 @@ checks that various mapping impossibilities do not occur.
|
|||
inference *front_side_inf = NULL, *back_side_inf = NULL;
|
||||
POSITIVE_KNOWLEDGE_LOOP(inf, Instances::as_subject(I), DIRECTION_INF) {
|
||||
inference_subject *infs1, *infs2;
|
||||
Inferences::get_references(inf, &infs1, &infs2);
|
||||
PL::Map::get_map_references(inf, &infs1, &infs2);
|
||||
instance *to = InstanceSubjects::to_object_instance(infs1);
|
||||
instance *dir = InstanceSubjects::to_object_instance(infs2);
|
||||
if (to) {
|
||||
|
@ -840,7 +863,7 @@ from which there's no way back.)
|
|||
inference *inf;
|
||||
POSITIVE_KNOWLEDGE_LOOP(inf, Instances::as_subject(I), DIRECTION_INF) {
|
||||
inference_subject *infs1;
|
||||
Inferences::get_references(inf, &infs1, NULL);
|
||||
PL::Map::get_map_references(inf, &infs1, NULL);
|
||||
instance *to = InstanceSubjects::to_object_instance(infs1);
|
||||
if (PL::Map::object_is_a_door(to)) {
|
||||
instance *exit1 = MAP_DATA(to)->map_connection_a;
|
||||
|
@ -879,7 +902,7 @@ from which there's no way back.)
|
|||
if ((PL::Map::object_is_a_door(I)) &&
|
||||
(MAP_DATA(I)->map_connection_a) &&
|
||||
(MAP_DATA(I)->map_connection_b) &&
|
||||
(Inferences::get_prop_state(
|
||||
(PropertyInferences::get_prop_state(
|
||||
Instances::as_subject(I), P_other_side)))
|
||||
StandardProblems::object_problem(_p_(PM_BothWaysDoor),
|
||||
I, "seems to be a door whose connections have been given in both "
|
||||
|
@ -1135,7 +1158,7 @@ int PL::Map::map_annotate_in_World_index(OUTPUT_STREAM, instance *O) {
|
|||
instance *X = A;
|
||||
if (A == Data::Objects::room_being_indexed()) X = B;
|
||||
if (X == NULL) {
|
||||
parse_node *S = Inferences::get_prop_state(
|
||||
parse_node *S = PropertyInferences::get_prop_state(
|
||||
Instances::as_subject(O), P_other_side);
|
||||
X = Rvalues::to_object_instance(S);
|
||||
}
|
||||
|
|
|
@ -126,9 +126,9 @@ This is needed when assemblies name one new creation after another; for instance
|
|||
void PL::Naming::transfer_details(inference_subject *from, inference_subject *to) {
|
||||
instance *wto = InstanceSubjects::to_object_instance(to);
|
||||
if (wto) {
|
||||
if (Inferences::get_EO_state(from, P_proper_named) > 0)
|
||||
if (PropertyInferences::either_or_state(from, P_proper_named) > 0)
|
||||
PL::Naming::now_has_proper_name(to);
|
||||
parse_node *art = Inferences::get_prop_state(from, P_article);
|
||||
parse_node *art = PropertyInferences::get_prop_state(from, P_article);
|
||||
if (art) Properties::Valued::assert(P_article, to, art, LIKELY_CE);
|
||||
}
|
||||
}
|
||||
|
@ -145,7 +145,7 @@ we do here is provide its state on request.
|
|||
|
||||
=
|
||||
int PL::Naming::object_is_privately_named(instance *I) {
|
||||
int certainty = Inferences::get_EO_state(Instances::as_subject(I), P_privately_named);
|
||||
int certainty = PropertyInferences::either_or_state(Instances::as_subject(I), P_privately_named);
|
||||
if (certainty > 0) return TRUE;
|
||||
if (certainty < 0) return FALSE;
|
||||
return NOT_APPLICABLE;
|
||||
|
@ -267,7 +267,7 @@ actually means it's rarely needed.)
|
|||
if (this_is_named_for_something_with_a_printed_name) {
|
||||
@<Compose the I6 cap-short-name as a routine dynamically using its owner's cap-short-name@>
|
||||
} else {
|
||||
if ((Inferences::get_EO_state(subj, P_proper_named) > 0)
|
||||
if ((PropertyInferences::either_or_state(subj, P_proper_named) > 0)
|
||||
&& (begins_with_lower_case))
|
||||
@<Compose the I6 cap-short-name as a piece of text@>
|
||||
else set_csn = FALSE;
|
||||
|
@ -331,7 +331,7 @@ together in lists.
|
|||
@<Assert the printed plural name property for kinds other than thing or kinds of room@> =
|
||||
if ((Kinds::Behaviour::is_object_of_kind(K, K_room) == FALSE) &&
|
||||
(Kinds::eq(K, K_thing) == FALSE) &&
|
||||
(Inferences::get_prop_state_without_inheritance(
|
||||
(PropertyInferences::get_prop_state_without_inheritance(
|
||||
subj, P_printed_plural_name, NULL) == NULL)) {
|
||||
if (Wordings::nonempty(PW)) {
|
||||
text_stream *PROP = Str::new();
|
||||
|
@ -344,7 +344,7 @@ together in lists.
|
|||
@ The following isn't done in English.
|
||||
|
||||
@<Assert male, female, neuter adjectives from grammatical gender@> =
|
||||
parse_node *spec = Inferences::get_prop_state(subj, P_grammatical_gender);
|
||||
parse_node *spec = PropertyInferences::get_prop_state(subj, P_grammatical_gender);
|
||||
if (spec) {
|
||||
int g = Annotations::read_int(spec, constant_enumeration_ANNOT);
|
||||
switch (g) {
|
||||
|
@ -521,7 +521,7 @@ int PL::Naming::adaptive_combination(inform_language *L) {
|
|||
if (L->adaptive_person >= 0) return L->adaptive_person;
|
||||
if ((L->adaptive_person == -1) && (P_adaptive_text_viewpoint)) {
|
||||
instance *I = L->nl_instance;
|
||||
parse_node *val = Inferences::get_prop_state(
|
||||
parse_node *val = PropertyInferences::get_prop_state(
|
||||
Instances::as_subject(I), P_adaptive_text_viewpoint);
|
||||
if (Node::is(val, CONSTANT_NT)) {
|
||||
instance *V = Node::get_constant_instance(val);
|
||||
|
|
|
@ -288,8 +288,8 @@ void Data::Objects::index(OUTPUT_STREAM, instance *I, kind *K, int depth, int de
|
|||
|
||||
@<Add a subsidiary paragraph of details about this object@> =
|
||||
HTML::open_indented_p(OUT, depth, "tight");
|
||||
if (I) Inferences::index(OUT, Instances::as_subject(I), TRUE);
|
||||
else Inferences::index(OUT, KindSubjects::from_kind(K), TRUE);
|
||||
if (I) IXInferences::index(OUT, Instances::as_subject(I), TRUE);
|
||||
else IXInferences::index(OUT, KindSubjects::from_kind(K), TRUE);
|
||||
if (K) {
|
||||
HTML_CLOSE("p");
|
||||
Data::Objects::index_instances(OUT, K, depth);
|
||||
|
@ -319,7 +319,7 @@ void Data::Objects::index(OUTPUT_STREAM, instance *I, kind *K, int depth, int de
|
|||
HTML_CLOSE("p");
|
||||
|
||||
@<Add the catalogue of specific properties@> =
|
||||
Inferences::index_specific(OUT, Instances::as_subject(I));
|
||||
IXInferences::index_specific(OUT, Instances::as_subject(I));
|
||||
|
||||
@ =
|
||||
void Data::Objects::index_instances(OUTPUT_STREAM, kind *K, int depth) {
|
||||
|
|
121
inform7/index-module/Chapter 2/Inferences.w
Normal file
121
inform7/index-module/Chapter 2/Inferences.w
Normal file
|
@ -0,0 +1,121 @@
|
|||
[IXInferences::] Inferences.
|
||||
|
||||
To index inferences.
|
||||
|
||||
@h Indexing properties of a subject.
|
||||
This is where the detailed description of a given kind -- what properties it
|
||||
has, and so on -- is generated.
|
||||
|
||||
=
|
||||
void IXInferences::index(OUTPUT_STREAM, inference_subject *infs, int brief) {
|
||||
inference *inf;
|
||||
KNOWLEDGE_LOOP(inf, infs, property_inf)
|
||||
if (PropertyInferences::get_property(inf) == P_specification) {
|
||||
parse_node *spec = PropertyInferences::get_value(inf);
|
||||
Index::dequote(OUT, Lexer::word_raw_text(Wordings::first_wn(Node::get_text(spec))));
|
||||
HTML_TAG("br");
|
||||
}
|
||||
|
||||
property *prn;
|
||||
LOOP_OVER(prn, property) Properties::set_indexed_already_flag(prn, FALSE);
|
||||
|
||||
int c;
|
||||
for (c = CERTAIN_CE; c >= IMPOSSIBLE_CE; c--) {
|
||||
char *cert = "Text only put here to stop gcc -O2 wrongly reporting an error";
|
||||
if (c == UNKNOWN_CE) continue;
|
||||
switch(c) {
|
||||
case CERTAIN_CE: cert = "Always"; break;
|
||||
case LIKELY_CE: cert = "Usually"; break;
|
||||
case UNLIKELY_CE: cert = "Usually not"; break;
|
||||
case IMPOSSIBLE_CE: cert = "Never"; break;
|
||||
case INITIALLY_CE: cert = "Initially"; break;
|
||||
}
|
||||
IXInferences::index_provided(OUT, infs, TRUE, c, cert, brief);
|
||||
}
|
||||
IXInferences::index_provided(OUT, infs, FALSE, LIKELY_CE, "Can have", brief);
|
||||
}
|
||||
|
||||
@ The following lists off the properties of the kind, with the given
|
||||
state of being boolean, and the given certainty levels:
|
||||
|
||||
=
|
||||
void IXInferences::index_provided(OUTPUT_STREAM, inference_subject *infs, int bool, int c, char *cert, int brief) {
|
||||
int f = TRUE;
|
||||
property *prn;
|
||||
LOOP_OVER(prn, property) {
|
||||
if (Properties::is_shown_in_index(prn) == FALSE) continue;
|
||||
if (Properties::get_indexed_already_flag(prn)) continue;
|
||||
if (Properties::is_either_or(prn) != bool) continue;
|
||||
|
||||
int state = PropertyInferences::has_or_can_have(infs, prn);
|
||||
if (state != c) continue;
|
||||
int inherited_state = PropertyInferences::has_or_can_have(
|
||||
InferenceSubjects::narrowest_broader_subject(infs), prn);
|
||||
if ((state == inherited_state) && (brief)) continue;
|
||||
|
||||
if (f) { WRITE("<i>%s</i> ", cert); f = FALSE; }
|
||||
else WRITE(", ");
|
||||
WRITE("%+W", prn->name);
|
||||
Properties::set_indexed_already_flag(prn, TRUE);
|
||||
|
||||
if (Properties::is_either_or(prn)) {
|
||||
property *prnbar = Properties::EitherOr::get_negation(prn);
|
||||
if (prnbar) {
|
||||
WRITE(" <i>not</i> %+W", prnbar->name);
|
||||
Properties::set_indexed_already_flag(prnbar, TRUE);
|
||||
}
|
||||
} else {
|
||||
kind *K = Properties::Valued::kind(prn);
|
||||
if (K) {
|
||||
WRITE(" (<i>"); Kinds::Textual::write(OUT, K); WRITE("</i>)");
|
||||
}
|
||||
}
|
||||
}
|
||||
if (f == FALSE) {
|
||||
WRITE(".");
|
||||
HTML_TAG("br");
|
||||
}
|
||||
}
|
||||
|
||||
@h Indexing properties of a specific subject.
|
||||
This only tells about specific property settings for a given instance.
|
||||
|
||||
=
|
||||
void IXInferences::index_specific(OUTPUT_STREAM, inference_subject *infs) {
|
||||
property *prn; int k = 0;
|
||||
LOOP_OVER(prn, property)
|
||||
if (Properties::is_shown_in_index(prn))
|
||||
if (Properties::is_either_or(prn)) {
|
||||
if (World::Permissions::find(infs, prn, TRUE)) {
|
||||
parse_node *P = NULL;
|
||||
int S = PropertyInferences::either_or_state_without_inheritance(infs, prn, &P);
|
||||
property *prnbar = Properties::EitherOr::get_negation(prn);
|
||||
if ((prnbar) && (S < 0)) continue;
|
||||
if (S != UNKNOWN_CE) {
|
||||
k++;
|
||||
if (k == 1) HTML::open_indented_p(OUT, 1, "hanging");
|
||||
else WRITE("; ");
|
||||
if (S < 0) WRITE("not ");
|
||||
WRITE("%+W", prn->name);
|
||||
if (P) Index::link(OUT, Wordings::first_wn(Node::get_text(P)));
|
||||
}
|
||||
}
|
||||
}
|
||||
if (k > 0) HTML_CLOSE("p");
|
||||
LOOP_OVER(prn, property)
|
||||
if (Properties::is_shown_in_index(prn))
|
||||
if (Properties::is_either_or(prn) == FALSE)
|
||||
if (World::Permissions::find(infs, prn, TRUE)) {
|
||||
parse_node *P = NULL;
|
||||
parse_node *S = PropertyInferences::get_prop_state_without_inheritance(infs, prn, &P);
|
||||
if ((S) && (Wordings::nonempty(Node::get_text(S)))) {
|
||||
HTML::open_indented_p(OUT, 1, "hanging");
|
||||
WRITE("%+W: ", prn->name);
|
||||
HTML::begin_colour(OUT, I"000080");
|
||||
WRITE("%+W", Node::get_text(S));
|
||||
HTML::end_colour(OUT);
|
||||
if (P) Index::link(OUT, Wordings::first_wn(Node::get_text(P)));
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
}
|
||||
}
|
|
@ -248,7 +248,7 @@ is made, so that the following sentence can't have an empty list in it.
|
|||
WRITE("%S", explanation);
|
||||
HTML_TAG("br");
|
||||
}
|
||||
Inferences::index(OUT, KindSubjects::from_kind(K), FALSE);
|
||||
IXInferences::index(OUT, KindSubjects::from_kind(K), FALSE);
|
||||
|
||||
@<Explain about covariance and contravariance@> =
|
||||
HTML_OPEN("p");
|
||||
|
|
|
@ -20,3 +20,4 @@ Chapter 2: Indexing
|
|||
Adjectives
|
||||
Variables
|
||||
Properties
|
||||
Inferences
|
||||
|
|
|
@ -16,7 +16,7 @@ COMPILE_WRITER(inference *, Inferences::log)
|
|||
COMPILE_WRITER(inference_subject *, InferenceSubjects::log)
|
||||
COMPILE_WRITER(property *, Properties::log)
|
||||
COMPILE_WRITER(rulebook *, Rulebooks::log)
|
||||
COMPILE_WRITER(inference_family *, Inferences::log_kind)
|
||||
COMPILE_WRITER(inference_family *, Inferences::log_family)
|
||||
|
||||
@
|
||||
|
||||
|
@ -34,7 +34,6 @@ COMPILE_WRITER(inference_family *, Inferences::log_kind)
|
|||
|
||||
=
|
||||
void KnowledgeModule::start(void) {
|
||||
Inferences::start();
|
||||
PropertyInferences::start();
|
||||
RelationInferences::start();
|
||||
InstanceAdjectives::start();
|
||||
|
@ -48,7 +47,7 @@ void KnowledgeModule::start(void) {
|
|||
REGISTER_WRITER('I', Inferences::log);
|
||||
REGISTER_WRITER('j', InferenceSubjects::log);
|
||||
REGISTER_WRITER('K', Rulebooks::log);
|
||||
REGISTER_WRITER('n', Inferences::log_kind)
|
||||
REGISTER_WRITER('n', Inferences::log_family)
|
||||
REGISTER_WRITER('Y', Properties::log);
|
||||
Log::declare_aspect(ACTIVITY_CREATIONS_DA, L"activity creations", FALSE, FALSE);
|
||||
Log::declare_aspect(INFERENCES_DA, L"inferences", FALSE, TRUE);
|
||||
|
|
|
@ -175,7 +175,7 @@ void InferenceSubjects::alias_to_nonlocal_variable(inference_subject *infs, nonl
|
|||
}
|
||||
|
||||
int InferenceSubjects::aliased_but_diverted(inference_subject *infs) {
|
||||
if (infs->alias_variable) {
|
||||
if ((infs) && (infs->alias_variable)) {
|
||||
inference_subject *vs =
|
||||
Instances::as_subject(
|
||||
Rvalues::to_object_instance(
|
||||
|
@ -186,6 +186,27 @@ int InferenceSubjects::aliased_but_diverted(inference_subject *infs) {
|
|||
return FALSE;
|
||||
}
|
||||
|
||||
@ Diversion is a similar tactic used to re-route knowledge about the "yourself"
|
||||
instance to become knowledge about the initial value of "player" instead:
|
||||
|
||||
=
|
||||
inference_subject *InferenceSubjects::divert(inference_subject *infs) {
|
||||
if (World::current_building_stage() == 0)
|
||||
/* if ((I_yourself) && (player_VAR) &&
|
||||
(infs == Instances::as_subject(I_yourself))) {
|
||||
parse_node *val = VariableSubjects::get_initial_value(player_VAR);
|
||||
inference_subject *divert = InferenceSubjects::from_specification(val);
|
||||
if (divert) return divert;
|
||||
}
|
||||
*/
|
||||
if ((infs) && (infs->alias_variable)) {
|
||||
parse_node *val = VariableSubjects::get_initial_value(infs->alias_variable);
|
||||
inference_subject *divert = InferenceSubjects::from_specification(val);
|
||||
if (divert) return divert;
|
||||
}
|
||||
return infs;
|
||||
}
|
||||
|
||||
@h Breadth.
|
||||
Some subjects are broad, covering many things, and others narrow -- perhaps
|
||||
used to specify facts about only a single person or value.
|
||||
|
@ -499,7 +520,7 @@ void InferenceSubjects::emit_all(void) {
|
|||
inference_subject *infs;
|
||||
|
||||
LOOP_OVER(infs, inference_subject)
|
||||
Inferences::verify_prop_states(infs);
|
||||
PropertyInferences::verify_prop_states(infs);
|
||||
|
||||
inference_subject_family *family;
|
||||
LOOP_OVER(family, inference_subject_family) {
|
||||
|
|
|
@ -21,6 +21,10 @@ inference_subject_family *RelationSubjects::family(void) {
|
|||
return relations_family;
|
||||
}
|
||||
|
||||
inference_subject *RelationSubjects::from_bp(binary_predicate *bp) {
|
||||
return bp->knowledge_about_bp;
|
||||
}
|
||||
|
||||
inference_subject *RelationSubjects::new(binary_predicate *bp) {
|
||||
return InferenceSubjects::new(relations, RelationSubjects::family(),
|
||||
STORE_POINTER_binary_predicate(bp), NULL);
|
||||
|
@ -56,9 +60,9 @@ void RelationSubjects::complete_model(inference_subject_family *family,
|
|||
(bp->right_way_round)) {
|
||||
RTRelations::equivalence_relation_make_singleton_partitions(bp, domain_size);
|
||||
inference *i;
|
||||
POSITIVE_KNOWLEDGE_LOOP(i, Inferences::bp_as_subject(bp), arbitrary_relation_inf) {
|
||||
POSITIVE_KNOWLEDGE_LOOP(i, RelationSubjects::from_bp(bp), arbitrary_relation_inf) {
|
||||
inference_subject *infs0, *infs1;
|
||||
Inferences::get_references(i, &infs0, &infs1);
|
||||
RelationInferences::get_term_subjects(i, &infs0, &infs1);
|
||||
RTRelations::equivalence_relation_merge_classes(bp, domain_size,
|
||||
infs0->allocation_id, infs1->allocation_id);
|
||||
}
|
||||
|
@ -157,10 +161,10 @@ void RelationSubjects::check_OtoV_relation(binary_predicate *bp) {
|
|||
LOOP_OVER(infs, inference_subject) right_counts[infs->allocation_id] = 0;
|
||||
|
||||
inference *inf;
|
||||
POSITIVE_KNOWLEDGE_LOOP(inf, Inferences::bp_as_subject(bp), arbitrary_relation_inf) {
|
||||
POSITIVE_KNOWLEDGE_LOOP(inf, RelationSubjects::from_bp(bp), arbitrary_relation_inf) {
|
||||
parse_node *left_val = NULL;
|
||||
parse_node *right_val = NULL;
|
||||
Inferences::get_references_spec(inf, &left_val, &right_val);
|
||||
RelationInferences::get_term_specs(inf, &left_val, &right_val);
|
||||
inference_subject *left_infs = InferenceSubjects::from_specification(left_val);
|
||||
inference_subject *right_infs = InferenceSubjects::from_specification(right_val);
|
||||
int left_id = (left_infs)?(left_infs->allocation_id):(-1);
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -11,8 +11,8 @@ inference_family *property_inf = NULL;
|
|||
|
||||
=
|
||||
void PropertyInferences::start(void) {
|
||||
property_inf = Inferences::new_family(I"property_inf", CI_DIFFER_IN_PROPERTY_VALUE);
|
||||
METHOD_ADD(property_inf, LOG_INF_MTID, PropertyInferences::log);
|
||||
property_inf = Inferences::new_family(I"property_inf");
|
||||
METHOD_ADD(property_inf, LOG_DETAILS_INF_MTID, PropertyInferences::log);
|
||||
METHOD_ADD(property_inf, COMPARE_INF_MTID, PropertyInferences::cmp);
|
||||
METHOD_ADD(property_inf, JOIN_INF_MTID, PropertyInferences::join);
|
||||
METHOD_ADD(property_inf, EXPLAIN_CONTRADICTION_INF_MTID, PropertyInferences::explain_contradiction);
|
||||
|
@ -24,6 +24,11 @@ void PropertyInferences::join(inference_family *f, inference *inf, inference_sub
|
|||
data->inferred_property, data->inferred_property_value);
|
||||
}
|
||||
|
||||
@ By convention, a pair of attached either/or properties which are negations of
|
||||
each other -- say "open" and "closed" -- are treated as if they were the
|
||||
same property but with different values.
|
||||
|
||||
=
|
||||
int PropertyInferences::cmp(inference_family *f, inference *i1, inference *i2) {
|
||||
property_inference_data *data1 = RETRIEVE_POINTER_property_inference_data(i1->data);
|
||||
property_inference_data *data2 = RETRIEVE_POINTER_property_inference_data(i2->data);
|
||||
|
@ -34,7 +39,7 @@ int PropertyInferences::cmp(inference_family *f, inference *i1, inference *i2) {
|
|||
((pr1 == Properties::EitherOr::get_negation(pr2)) ||
|
||||
(pr2 == Properties::EitherOr::get_negation(pr1)))) pr2 = pr1;
|
||||
int c = Inferences::measure_property(pr1) - Inferences::measure_property(pr2);
|
||||
if (c > 0) return CI_DIFFER_IN_PROPERTY; if (c < 0) return -CI_DIFFER_IN_PROPERTY;
|
||||
if (c > 0) return CI_DIFFER_IN_TOPIC; if (c < 0) return -CI_DIFFER_IN_TOPIC;
|
||||
|
||||
c = Inferences::measure_inf(i1) - Inferences::measure_inf(i2);
|
||||
|
||||
|
@ -42,8 +47,10 @@ int PropertyInferences::cmp(inference_family *f, inference *i1, inference *i2) {
|
|||
parse_node *val2 = data2->inferred_property_value;
|
||||
if ((data1->inferred_property != data2->inferred_property) || /* in case they are an either-or pair */
|
||||
((val1) && (val2) && (Rvalues::compare_CONSTANT(val1, val2) == FALSE))) {
|
||||
if (c > 0) return CI_DIFFER_IN_PROPERTY_VALUE;
|
||||
if (c < 0) return -CI_DIFFER_IN_PROPERTY_VALUE;
|
||||
int M = CI_DIFFER_IN_CONTENT;
|
||||
if (Properties::is_either_or(pr1)) M = CI_DIFFER_IN_BOOLEAN_CONTENT;
|
||||
if (c > 0) return M;
|
||||
if (c < 0) return -M;
|
||||
}
|
||||
|
||||
if (c > 0) return CI_DIFFER_IN_COPY_ONLY; if (c < 0) return -CI_DIFFER_IN_COPY_ONLY;
|
||||
|
@ -163,3 +170,131 @@ parse_node *PropertyInferences::set_value_kind(inference *i, kind *K) {
|
|||
Node::set_kind_of_value(data->inferred_property_value, K);
|
||||
return data->inferred_property_value;
|
||||
}
|
||||
@h Finding property states.
|
||||
|
||||
=
|
||||
int PropertyInferences::either_or_state(inference_subject *infs, property *prn) {
|
||||
if ((prn == NULL) || (infs == NULL)) return UNKNOWN_CE;
|
||||
inference_subject *k;
|
||||
property *prnbar = NULL;
|
||||
if (Properties::is_either_or(prn)) prnbar = Properties::EitherOr::get_negation(prn);
|
||||
for (k = infs; k; k = InferenceSubjects::narrowest_broader_subject(k)) {
|
||||
inference *inf;
|
||||
KNOWLEDGE_LOOP(inf, k, property_inf) {
|
||||
property *known = PropertyInferences::get_property(inf);
|
||||
int c = Inferences::get_certainty(inf);
|
||||
if (known) {
|
||||
if ((prn == known) && (c != UNKNOWN_CE)) return c;
|
||||
if ((prnbar == known) && (c != UNKNOWN_CE)) return -c;
|
||||
}
|
||||
}
|
||||
}
|
||||
return UNKNOWN_CE;
|
||||
}
|
||||
|
||||
int PropertyInferences::either_or_state_without_inheritance(inference_subject *infs,
|
||||
property *prn, parse_node **where) {
|
||||
if ((prn == NULL) || (infs == NULL)) return UNKNOWN_CE;
|
||||
property *prnbar = NULL;
|
||||
if (Properties::is_either_or(prn)) prnbar = Properties::EitherOr::get_negation(prn);
|
||||
inference *inf;
|
||||
KNOWLEDGE_LOOP(inf, infs, property_inf) {
|
||||
property *known = PropertyInferences::get_property(inf);
|
||||
int c = Inferences::get_certainty(inf);
|
||||
if (known) {
|
||||
if ((prn == known) && (c != UNKNOWN_CE)) {
|
||||
if (where) *where = Inferences::where_inferred(inf);
|
||||
return c;
|
||||
}
|
||||
if ((prnbar == known) && (c != UNKNOWN_CE)) {
|
||||
if (where) *where = Inferences::where_inferred(inf);
|
||||
return -c;
|
||||
}
|
||||
}
|
||||
}
|
||||
return UNKNOWN_CE;
|
||||
}
|
||||
|
||||
void PropertyInferences::verify_prop_states(inference_subject *infs) {
|
||||
inference *inf;
|
||||
POSITIVE_KNOWLEDGE_LOOP(inf, infs, property_inf) {
|
||||
property *prn = PropertyInferences::get_property(inf);
|
||||
parse_node *val = PropertyInferences::get_value(inf);
|
||||
kind *PK = Properties::Valued::kind(prn);
|
||||
kind *VK = Specifications::to_kind(val);
|
||||
if (Kinds::compatible(VK, PK) != ALWAYS_MATCH) {
|
||||
LOG("Property value given as %u not %u\n", VK, PK);
|
||||
current_sentence = inf->inferred_from;
|
||||
Problems::quote_source(1, current_sentence);
|
||||
Problems::quote_property(2, prn);
|
||||
Problems::quote_kind(3, VK);
|
||||
Problems::quote_kind(4, PK);
|
||||
StandardProblems::handmade_problem(Task::syntax_tree(),
|
||||
_p_(PM_LateInferenceProblem));
|
||||
Problems::issue_problem_segment(
|
||||
"You wrote %1, but that tries to set the value of the '%2' "
|
||||
"property to %3 - which must be wrong because this property "
|
||||
"has to be %4.");
|
||||
Problems::issue_problem_end();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
parse_node *PropertyInferences::get_prop_state(inference_subject *infs, property *prn) {
|
||||
if ((prn == NULL) || (infs == NULL)) return NULL;
|
||||
inference_subject *k;
|
||||
for (k = infs; k; k = InferenceSubjects::narrowest_broader_subject(k)) {
|
||||
inference *inf;
|
||||
POSITIVE_KNOWLEDGE_LOOP(inf, k, property_inf) {
|
||||
property *known = PropertyInferences::get_property(inf);
|
||||
if (known == prn) return PropertyInferences::get_value(inf);
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
parse_node *PropertyInferences::get_prop_state_at(inference_subject *infs, property *prn,
|
||||
parse_node **where) {
|
||||
if ((prn == NULL) || (infs == NULL)) return NULL;
|
||||
inference_subject *k;
|
||||
for (k = infs; k; k = InferenceSubjects::narrowest_broader_subject(k)) {
|
||||
inference *inf;
|
||||
POSITIVE_KNOWLEDGE_LOOP(inf, k, property_inf) {
|
||||
property *known = PropertyInferences::get_property(inf);
|
||||
if (known == prn) {
|
||||
if (where) *where = Inferences::where_inferred(inf);
|
||||
return PropertyInferences::get_value(inf);
|
||||
}
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
parse_node *PropertyInferences::get_prop_state_without_inheritance(inference_subject *infs,
|
||||
property *prn, parse_node **where) {
|
||||
if ((prn == NULL) || (infs == NULL)) return NULL;
|
||||
inference *inf;
|
||||
POSITIVE_KNOWLEDGE_LOOP(inf, infs, property_inf) {
|
||||
property *known = PropertyInferences::get_property(inf);
|
||||
if (known == prn) {
|
||||
if (where) *where = Inferences::where_inferred(inf);
|
||||
return PropertyInferences::get_value(inf);
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
int PropertyInferences::has_or_can_have(inference_subject *infs, property *prn) {
|
||||
if (Properties::is_either_or(prn)) {
|
||||
int has = PropertyInferences::either_or_state(infs, prn);
|
||||
if ((has == UNKNOWN_CE) && (World::Permissions::find(infs, prn, TRUE))) {
|
||||
if (Properties::EitherOr::stored_in_negation(prn))
|
||||
return LIKELY_CE;
|
||||
else
|
||||
return UNLIKELY_CE;
|
||||
}
|
||||
return has;
|
||||
}
|
||||
if (World::Permissions::find(infs, prn, TRUE)) return LIKELY_CE;
|
||||
return UNKNOWN_CE;
|
||||
}
|
||||
|
|
|
@ -11,5 +11,86 @@ inference_family *arbitrary_relation_inf = NULL;
|
|||
|
||||
=
|
||||
void RelationInferences::start(void) {
|
||||
arbitrary_relation_inf = Inferences::new_family(I"arbitrary_relation_inf", CI_DIFFER_IN_COPY_ONLY);
|
||||
arbitrary_relation_inf = Inferences::new_family(I"arbitrary_relation_inf");
|
||||
METHOD_ADD(arbitrary_relation_inf, LOG_DETAILS_INF_MTID, RelationInferences::log);
|
||||
METHOD_ADD(arbitrary_relation_inf, COMPARE_INF_MTID, RelationInferences::cmp);
|
||||
}
|
||||
|
||||
typedef struct relation_inference_data {
|
||||
struct inference_subject *terms_as_subjects[2];
|
||||
struct parse_node *terms_as_values[2];
|
||||
CLASS_DEFINITION
|
||||
} relation_inference_data;
|
||||
|
||||
inference *RelationInferences::new(inference_subject *infs0,
|
||||
inference_subject *infs1, parse_node *spec0, parse_node *spec1) {
|
||||
PROTECTED_MODEL_PROCEDURE;
|
||||
relation_inference_data *data = CREATE(relation_inference_data);
|
||||
data->terms_as_subjects[0] = InferenceSubjects::divert(infs0);
|
||||
data->terms_as_subjects[1] = InferenceSubjects::divert(infs1);
|
||||
data->terms_as_values[0] = spec0;
|
||||
data->terms_as_values[1] = spec1;
|
||||
return Inferences::create_inference(arbitrary_relation_inf,
|
||||
STORE_POINTER_relation_inference_data(data), prevailing_mood);
|
||||
}
|
||||
|
||||
void RelationInferences::get_term_subjects(inference *i,
|
||||
inference_subject **infs1, inference_subject **infs2) {
|
||||
if ((i == NULL) || (i->family != arbitrary_relation_inf))
|
||||
internal_error("not a relation inf");
|
||||
relation_inference_data *data = RETRIEVE_POINTER_relation_inference_data(i->data);
|
||||
if (infs1) *infs1 = data->terms_as_subjects[0];
|
||||
if (infs2) *infs2 = data->terms_as_subjects[1];
|
||||
}
|
||||
|
||||
void RelationInferences::get_term_specs(inference *i,
|
||||
parse_node **spec1, parse_node **spec2) {
|
||||
if ((i == NULL) || (i->family != arbitrary_relation_inf))
|
||||
internal_error("not a relation inf");
|
||||
relation_inference_data *data = RETRIEVE_POINTER_relation_inference_data(i->data);
|
||||
if (spec1) *spec1 = data->terms_as_values[0];
|
||||
if (spec2) *spec2 = data->terms_as_values[1];
|
||||
}
|
||||
|
||||
void RelationInferences::log(inference_family *f, inference *inf) {
|
||||
relation_inference_data *data = RETRIEVE_POINTER_relation_inference_data(inf->data);
|
||||
if (data->terms_as_subjects[0]) LOG("-1:$j", data->terms_as_subjects[0]);
|
||||
if (data->terms_as_subjects[1]) LOG("-2:$j", data->terms_as_subjects[1]);
|
||||
if (data->terms_as_values[0]) LOG("-s1:$P", data->terms_as_values[0]);
|
||||
if (data->terms_as_values[1]) LOG("-s2:$P", data->terms_as_values[1]);
|
||||
}
|
||||
|
||||
int RelationInferences::cmp(inference_family *f, inference *i1, inference *i2) {
|
||||
relation_inference_data *data1 = RETRIEVE_POINTER_relation_inference_data(i1->data);
|
||||
relation_inference_data *data2 = RETRIEVE_POINTER_relation_inference_data(i2->data);
|
||||
|
||||
int c = Inferences::measure_infs(data1->terms_as_subjects[1]) -
|
||||
Inferences::measure_infs(data2->terms_as_subjects[1]);
|
||||
if (c > 0) return CI_DIFFER_IN_TOPIC; if (c < 0) return -CI_DIFFER_IN_TOPIC;
|
||||
c = Inferences::measure_infs(data1->terms_as_subjects[0]) -
|
||||
Inferences::measure_infs(data2->terms_as_subjects[0]);
|
||||
if (c > 0) return CI_DIFFER_IN_TOPIC; if (c < 0) return -CI_DIFFER_IN_TOPIC;
|
||||
c = Inferences::measure_pn(data1->terms_as_values[1]) -
|
||||
Inferences::measure_pn(data2->terms_as_values[1]);
|
||||
if (c > 0) return CI_DIFFER_IN_TOPIC; if (c < 0) return -CI_DIFFER_IN_TOPIC;
|
||||
c = Inferences::measure_pn(data1->terms_as_values[0]) -
|
||||
Inferences::measure_pn(data2->terms_as_values[0]);
|
||||
if (c > 0) return CI_DIFFER_IN_TOPIC; if (c < 0) return -CI_DIFFER_IN_TOPIC;
|
||||
|
||||
c = Inferences::measure_inf(i1) - Inferences::measure_inf(i2);
|
||||
if (c > 0) return CI_DIFFER_IN_COPY_ONLY; if (c < 0) return -CI_DIFFER_IN_COPY_ONLY;
|
||||
return CI_IDENTICAL;
|
||||
}
|
||||
|
||||
void RelationInferences::draw(binary_predicate *bp,
|
||||
inference_subject *infs0, inference_subject *infs1) {
|
||||
inference *i = RelationInferences::new(infs0, infs1, NULL, NULL);
|
||||
Inferences::join_inference(i, RelationSubjects::from_bp(bp));
|
||||
}
|
||||
|
||||
void RelationInferences::draw_spec(binary_predicate *bp,
|
||||
parse_node *spec0, parse_node *spec1) {
|
||||
if ((spec0 == NULL) || (spec1 == NULL)) internal_error("malformed value relation");
|
||||
inference *i = RelationInferences::new(NULL, NULL, spec0, spec1);
|
||||
Inferences::join_inference(i, RelationSubjects::from_bp(bp));
|
||||
}
|
||||
|
|
|
@ -179,7 +179,7 @@ about the Portal, to stand.
|
|||
if (abcn == CERTAIN_CE)
|
||||
@<Issue a problem message for clash with wider inference@>
|
||||
else
|
||||
Inferences::set_certainty(narrow, IMPOSSIBLE_CE);
|
||||
Inferences::render_impossible(narrow);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,6 @@ To place calls to the plugins.
|
|||
@d PLUGIN_NEW_VARIABLE_NOTIFY 1
|
||||
@d PLUGIN_IRREGULAR_GENITIVE 4
|
||||
@d PLUGIN_SET_KIND_NOTIFY 6
|
||||
@d PLUGIN_CREATE_INFERENCE_FAMILIES 10
|
||||
@d PLUGIN_COMPLETE_MODEL 11
|
||||
@d PLUGIN_PARSE_COMPOSITE_NQS 12
|
||||
@d PLUGIN_REFINE_IMPLICIT_NOUN 14
|
||||
|
@ -17,9 +16,7 @@ To place calls to the plugins.
|
|||
@d PLUGIN_NEW_PROPERTY_NOTIFY 16
|
||||
@d PLUGIN_PROPERTY_VALUE_NOTIFY 17
|
||||
@d PLUGIN_MORE_SPECIFIC 18
|
||||
@d PLUGIN_INFERENCES_CONTRADICT 19
|
||||
@d PLUGIN_INTERVENE_IN_ASSERTION 20
|
||||
@d PLUGIN_LOG_INFERENCE_TYPE 21
|
||||
@d PLUGIN_COMPILE_OBJECT_HEADER 22
|
||||
@d PLUGIN_ESTIMATE_PROPERTY_USAGE 23
|
||||
@d PLUGIN_CHECK_GOING 24
|
||||
|
@ -37,7 +34,6 @@ To place calls to the plugins.
|
|||
@d PLUGIN_VARIABLE_SET_WARNING 36
|
||||
@d PLUGIN_DETECT_BODYSNATCHING 37
|
||||
@d PLUGIN_NEW_SUBJECT_NOTIFY 38
|
||||
@d PLUGIN_EXPLAIN_CONTRADICTION 39
|
||||
@d PLUGIN_ADD_TO_WORLD_INDEX 40
|
||||
@d PLUGIN_ANNOTATE_IN_WORLD_INDEX 41
|
||||
@d PLUGIN_SET_SUBKIND_NOTIFY 42
|
||||
|
@ -155,12 +151,8 @@ int Plugins::Call::set_subkind_notify(kind *sub, kind *super) {
|
|||
PLUGINS_CALL(PLUGIN_SET_SUBKIND_NOTIFY, sub, super);
|
||||
}
|
||||
|
||||
int Plugins::Call::create_inference_families(void) {
|
||||
PLUGINS_CALLV(PLUGIN_CREATE_INFERENCE_FAMILIES);
|
||||
}
|
||||
|
||||
int Plugins::Call::complete_model(int stage) {
|
||||
Inferences::diversion_off();
|
||||
// Inferences::diversion_off();
|
||||
PLUGINS_CALL(PLUGIN_COMPLETE_MODEL, stage);
|
||||
}
|
||||
|
||||
|
@ -190,23 +182,10 @@ int Plugins::Call::more_specific(instance *I1, instance *I2) {
|
|||
PLUGINS_CALL(PLUGIN_MORE_SPECIFIC, I1, I2);
|
||||
}
|
||||
|
||||
int Plugins::Call::inferences_contradict(inference *A, inference *B, int similarity) {
|
||||
PLUGINS_CALL(PLUGIN_INFERENCES_CONTRADICT, A, B, similarity);
|
||||
}
|
||||
|
||||
int Plugins::Call::explain_contradiction(inference *A, inference *B, int similarity,
|
||||
inference_subject *subj) {
|
||||
PLUGINS_CALL(PLUGIN_EXPLAIN_CONTRADICTION, A, B, similarity, subj);
|
||||
}
|
||||
|
||||
int Plugins::Call::intervene_in_assertion(parse_node *px, parse_node *py) {
|
||||
PLUGINS_CALL(PLUGIN_INTERVENE_IN_ASSERTION, px, py);
|
||||
}
|
||||
|
||||
int Plugins::Call::log_inference_type(int it) {
|
||||
PLUGINS_CALL(PLUGIN_LOG_INFERENCE_TYPE, it);
|
||||
}
|
||||
|
||||
int Plugins::Call::estimate_property_usage(kind *k, int *words_used) {
|
||||
PLUGINS_CALL(PLUGIN_ESTIMATE_PROPERTY_USAGE, k, words_used);
|
||||
}
|
||||
|
|
|
@ -1210,9 +1210,9 @@ to send the pairs in that row in any order.
|
|||
|
||||
@<Find all pairs belonging to this row, and set the relevant flags@> =
|
||||
inference *inf;
|
||||
POSITIVE_KNOWLEDGE_LOOP(inf, Inferences::bp_as_subject(bp), arbitrary_relation_inf) {
|
||||
POSITIVE_KNOWLEDGE_LOOP(inf, RelationSubjects::from_bp(bp), arbitrary_relation_inf) {
|
||||
inference_subject *left_infs, *right_infs;
|
||||
Inferences::get_references(inf, &left_infs, &right_infs);
|
||||
RelationInferences::get_term_subjects(inf, &left_infs, &right_infs);
|
||||
if (infs == left_infs) row_flags[RTRelations::get_relation_index(right_infs, 1)] = 1;
|
||||
}
|
||||
|
||||
|
@ -1366,15 +1366,14 @@ void RTRelations::equivalence_relation_merge_classes(binary_predicate *bp,
|
|||
internal_error("attempt to merge classes for a non-equivalence relation");
|
||||
explicit_bp_data *D = RETRIEVE_POINTER_explicit_bp_data(bp->family_specific);
|
||||
if (bp->right_way_round == FALSE) bp = bp->reversal;
|
||||
int *partition_array = D->equiv_data->equivalence_partition;;
|
||||
int *partition_array = D->equiv_data->equivalence_partition;
|
||||
if (partition_array == NULL)
|
||||
internal_error("attempt to use null equivalence partition array");
|
||||
int little, big; /* or, The Fairies' Parliament */
|
||||
big = partition_array[ix1]; little = partition_array[ix2];
|
||||
if (big == little) return;
|
||||
if (big < little) { int swap = little; little = big; big = swap; }
|
||||
int i;
|
||||
for (i=0; i<domain_size; i++)
|
||||
for (int i=0; i<domain_size; i++)
|
||||
if (partition_array[i] == big)
|
||||
partition_array[i] = little;
|
||||
}
|
||||
|
@ -1868,9 +1867,9 @@ void RTRelations::emit_one(inference_subject_family *f, inference_subject *infs)
|
|||
packaging_state save = Routines::begin(RTRelations::initialiser_iname(bp));
|
||||
inference *i;
|
||||
inter_name *rtiname = Hierarchy::find(RELATIONTEST_HL);
|
||||
POSITIVE_KNOWLEDGE_LOOP(i, Inferences::bp_as_subject(bp), arbitrary_relation_inf) {
|
||||
POSITIVE_KNOWLEDGE_LOOP(i, RelationSubjects::from_bp(bp), arbitrary_relation_inf) {
|
||||
parse_node *spec0, *spec1;
|
||||
Inferences::get_references_spec(i, &spec0, &spec1);
|
||||
RelationInferences::get_term_specs(i, &spec0, &spec1);
|
||||
RTRelations::mark_as_needed(bp);
|
||||
Produce::inv_call_iname(Emit::tree(), rtiname);
|
||||
Produce::down(Emit::tree());
|
||||
|
|
Loading…
Reference in a new issue