mirror of
https://github.com/ganelson/inform.git
synced 2024-07-05 08:34:22 +03:00
Refactored the map plugin
This commit is contained in:
parent
f7fdc6b63a
commit
aa9fc07f4a
|
@ -193,7 +193,7 @@ conclusion we would have reached.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Annotations::node_has</span><span class="plain-syntax">(</span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">, </span><span class="identifier-syntax">implicit_in_creation_of_ANNOT</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="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">PL::Map::is_a_direction</span><span class="plain-syntax">(</span><span class="identifier-syntax">infsx</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Map::subject_is_a_direction</span><span class="plain-syntax">(</span><span class="identifier-syntax">infsx</span><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">infsx</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">InstanceSubjects::to_object_instance</span><span class="plain-syntax">(</span><span class="identifier-syntax">infsy_full</span><span class="plain-syntax">)))) </span><span class="identifier-syntax">infsx</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">endif</span>
|
||||
|
|
|
@ -127,14 +127,13 @@ and we ask the <a href="../linguistics-module/index.html" class="internal">lingu
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">SyntaxTree::graft</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">VP_PN</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">SyntaxTree::is_trace_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">())) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"$T\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-cs.html#SP3_3" class="named-paragraph-link"><span class="named-paragraph">Check that this is allowed, if it occurs in the Options file</span><span class="named-paragraph-number">3.3</span></a></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="identifier-syntax">PL::MapDirections::look_for_direction_creation</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">endif</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ps.html#SP2" class="function-link"><span class="function-syntax">PropertySentences::look_for_property_creation</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-cs.html#SP3_4" class="named-paragraph-link"><span class="named-paragraph">Issue problem message if either subject or object contains mismatched brackets</span><span class="named-paragraph-number">3.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-cs.html#SP3_5" class="named-paragraph-link"><span class="named-paragraph">Issue problem message if subject starts with double-quoted literal text</span><span class="named-paragraph-number">3.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">VP_PN</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">VP_PN</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">Diagrams::is_possessive_RELATIONSHIP</span><span class="plain-syntax">(</span><span class="identifier-syntax">VP_PN</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">VP_PN</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">VP_PN</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Diagrams::is_possessive_RELATIONSHIP</span><span class="plain-syntax">(</span><span class="identifier-syntax">VP_PN</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-cs.html#SP3_6" class="named-paragraph-link"><span class="named-paragraph">Diagram property callings</span><span class="named-paragraph-number">3.6</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginCalls::new_assertion_notify</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">else</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">"$T\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="function-syntax"><no-primary-verb-diagnosis></span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -526,7 +526,7 @@ at which point it becomes a <span class="extract"><span class="extract-syntax">P
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<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">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">PL::Map::is_a_direction</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">Map::subject_is_a_direction</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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">py</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">np</span><span class="plain-syntax"> = </span><span class="identifier-syntax">problem_count</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ass.html#SP6" class="function-link"><span class="function-syntax">Assertions::make_coupling</span></a><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="identifier-syntax">down</span><span class="plain-syntax">); </span><span class="comment-syntax"> A is a B</span>
|
||||
|
@ -1391,10 +1391,10 @@ in this case.
|
|||
<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">PL::MapDirections::get_mapping_relationship</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">PL::MapDirections::get_mapping_relationship</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">PL::Map::enter_one_way_mode</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Map::enter_one_way_mode</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ass.html#SP6" class="function-link"><span class="function-syntax">Assertions::make_coupling</span></a><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="identifier-syntax">down</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ass.html#SP6" class="function-link"><span class="function-syntax">Assertions::make_coupling</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">px</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</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">PL::Map::exit_one_way_mode</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Map::exit_one_way_mode</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">endif</span>
|
||||
|
@ -2082,8 +2082,8 @@ these sentences falls into case 41.
|
|||
<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">PL::Map::is_a_direction</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">PL::Map::is_a_direction</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><span class="identifier-syntax">Map::subject_is_a_direction</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">Map::subject_is_a_direction</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="named-paragraph-container code-font"><a href="4-ass.html#SP6_3_41_1" class="named-paragraph-link"><span class="named-paragraph">This is a map connection referred to metonymically</span><span class="named-paragraph-number">6.3.41.1</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
|
@ -2119,7 +2119,7 @@ these sentences falls into case 41.
|
|||
<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">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">target</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="identifier-syntax">way</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">PL::Map::is_a_direction</span><span class="plain-syntax">(</span><span class="identifier-syntax">target</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Map::subject_is_a_direction</span><span class="plain-syntax">(</span><span class="identifier-syntax">target</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">target</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="identifier-syntax">way</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">global_pass_state</span><span class="plain-syntax">.</span><span class="element-syntax">pass</span><span class="plain-syntax"> == </span><span class="constant-syntax">2</span><span class="plain-syntax">) {</span>
|
||||
|
@ -2130,7 +2130,7 @@ these sentences falls into case 41.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"like saying '20 is north'. This is an odd thing "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"to say, and makes me think that I've misunderstood you."</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">PL::Map::connect</span><span class="plain-syntax">(</span><a href="2-ar.html#SP1" class="function-link"><span class="function-syntax">Anaphora::get_current_subject</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">target</span><span class="plain-syntax">, </span><span class="identifier-syntax">way</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Map::connect</span><span class="plain-syntax">(</span><a href="2-ar.html#SP1" class="function-link"><span class="function-syntax">Anaphora::get_current_subject</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">target</span><span class="plain-syntax">, </span><span class="identifier-syntax">way</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
|
|
|
@ -172,9 +172,9 @@ objects or values, but there are two exceptional cases to take care of.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">iy</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">id</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">"malformed directional subtree"</span><span 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_nothing_object_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">value</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PL::Map::connect</span><span class="plain-syntax">(</span><span class="identifier-syntax">iy</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Map::connect</span><span class="plain-syntax">(</span><span class="identifier-syntax">iy</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</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">Rvalues::is_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_evaluation</span><span class="plain-syntax">(</span><span class="identifier-syntax">value</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PL::Map::connect</span><span class="plain-syntax">(</span><span class="identifier-syntax">iy</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">value</span><span class="plain-syntax">), </span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Map::connect</span><span class="plain-syntax">(</span><span class="identifier-syntax">iy</span><span class="plain-syntax">, </span><span class="identifier-syntax">Node::get_subject</span><span class="plain-syntax">(</span><span class="identifier-syntax">value</span><span class="plain-syntax">), </span><span class="identifier-syntax">id</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">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Val is $P\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">value</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_MapToNonobject</span><span class="plain-syntax">),</span>
|
||||
|
|
|
@ -251,6 +251,8 @@ We begin with <a href="index.html" class="internal">core</a> itself.
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">backdrop_found_in_notice_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">bp_runtime_implementation_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">definition_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">dval_written_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">i6_inclusion_matter_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">internal_test_case_CLASS</span>
|
||||
|
@ -268,6 +270,8 @@ 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">backdrop_found_in_notice</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp_runtime_implementation</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">definition</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">door_dir_notice</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">door_to_notice</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">dval_written</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">i6_inclusion_matter</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">internal_test_case</span><span class="plain-syntax">)</span>
|
||||
|
@ -305,8 +309,6 @@ We begin with <a href="index.html" class="internal">core</a> itself.
|
|||
<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>
|
||||
|
@ -342,8 +344,6 @@ 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">command_index_entry</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">connected_submap</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">direction_inference_data</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">door_dir_notice</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">door_to_notice</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-syntax">EPS_map_level</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="identifier-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="identifier-syntax">grammar_line</span><span class="plain-syntax">)</span>
|
||||
|
|
|
@ -72,7 +72,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">core</a></li><li><a href="index.html#3">Chapter 3: Plugins</a></li><li><b>Plugin Calls</b></li></ul></div>
|
||||
<p class="purpose">The interface between the main compiler and its plugins.</p>
|
||||
|
||||
<ul class="toc"><li><a href="3-pc.html#SP2">§2. Influencing core</a></li><li><a href="3-pc.html#SP3">§3. Influencing assertions</a></li><li><a href="3-pc.html#SP13">§13. Influencing values</a></li><li><a href="3-pc.html#SP16">§16. Influencing knowledge</a></li><li><a href="3-pc.html#SP29">§29. Influencing if</a></li><li><a href="3-pc.html#SP30">§30. Influencing index</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="3-pc.html#SP2">§2. Influencing core</a></li><li><a href="3-pc.html#SP3">§3. Influencing assertions</a></li><li><a href="3-pc.html#SP14">§14. Influencing values</a></li><li><a href="3-pc.html#SP17">§17. Influencing knowledge</a></li><li><a href="3-pc.html#SP30">§30. Influencing if</a></li><li><a href="3-pc.html#SP31">§31. Influencing index</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The following set of functions is an API for the main compiler to consult
|
||||
with the plugins; put another way, it is also an API for the plugins to
|
||||
|
@ -223,7 +223,19 @@ instance.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">REFINE_IMPLICIT_NOUN_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</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>Called from <a href="../assertions-module/6-terr.html" class="internal">The Equality Relation Revisited (in assertions)</a> when we have
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>Called from <a href="../assertions-module/2-cs.html" class="internal">Classifying Sentences (in assertions)</a> to give plugins the chance
|
||||
of an early look at a newly-read assertion. For example, the map plugin uses
|
||||
this to spot that a sentence will create a new direction.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">NEW_ASSERTION_NOTIFY_PLUG</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PluginCalls::new_assertion_notify</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="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">NEW_ASSERTION_NOTIFY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</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>Called from <a href="../assertions-module/6-terr.html" class="internal">The Equality Relation Revisited (in assertions)</a> when we have
|
||||
to decide if it's valid to ask or declare that two things are the same.
|
||||
Returning <span class="extract"><span class="extract-syntax">TRUE</span></span> says that it is always valid; returning <span class="extract"><span class="extract-syntax">FALSE</span></span> leaves
|
||||
it to the regular machinery. This plug can therefore only be used to permit
|
||||
|
@ -237,7 +249,7 @@ additional usages, not to restrict existing ones.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">TYPECHECK_EQUALITY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">K1</span><span class="plain-syntax">, </span><span class="identifier-syntax">K2</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>Called from <a href="../assertions-module/4-ass.html" class="internal">Assertions (in assertions)</a> to warn plugins that a variable
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b>Called from <a href="../assertions-module/4-ass.html" class="internal">Assertions (in assertions)</a> to warn plugins that a variable
|
||||
is now being assigned a value by an explicit assertion sentence.
|
||||
</p>
|
||||
|
||||
|
@ -248,7 +260,7 @@ is now being assigned a value by an explicit assertion sentence.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">VARIABLE_VALUE_NOTIFY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">q</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</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. Influencing values. </b>Called from <a href="../values-module/2-rvl.html" class="internal">Rvalues (in values)</a> to allow plugins to compile rvalues in
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. Influencing values. </b>Called from <a href="../values-module/2-rvl.html" class="internal">Rvalues (in values)</a> to allow plugins to compile rvalues in
|
||||
eccentric ways of their own: not in fact just for the whimsy of it, but to
|
||||
make it possible for plugins to support base kinds of their own. For example,
|
||||
the "actions" plugin needs this to deal with the "stored action" kind.
|
||||
|
@ -261,7 +273,7 @@ the "actions" plugin needs this to deal with the "stored action" kind.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">COMPILE_CONSTANT_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">spec</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>Called from <a href="../values-module/2-spc.html" class="internal">Specifications (in values)</a> to ask if there is some reason why
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b>Called from <a href="../values-module/2-spc.html" class="internal">Specifications (in values)</a> to ask if there is some reason why
|
||||
a rule about <span class="extract"><span class="extract-syntax">I1</span></span> should be thought broader in scope than one about <span class="extract"><span class="extract-syntax">I2</span></span>. This
|
||||
is used by the regions plugin when one is a sub-region of the other. This is
|
||||
expected to behave as a <span class="extract"><span class="extract-syntax">strcmp</span></span>-like sorting function, with a positive
|
||||
|
@ -275,7 +287,7 @@ return value saying <span class="extract"><span class="extract-syntax">I1</span>
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">MORE_SPECIFIC_PLUG</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>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP15" class="paragraph-anchor"></a><b>§15. </b>Called from <a href="../values-module/4-cad.html" class="internal">Constants and Descriptions (in values)</a> to give plugins a chance
|
||||
<p class="commentary firstcommentary"><a id="SP16" class="paragraph-anchor"></a><b>§16. </b>Called from <a href="../values-module/4-cad.html" class="internal">Constants and Descriptions (in values)</a> to give plugins a chance
|
||||
to parse text which might otherwise be meaningless (or mean something different)
|
||||
and make it a "composite noun-quantifier" such as "everywhere" or "nothing".
|
||||
The main compiler does not recognise "everywhere" because it has no concept
|
||||
|
@ -290,7 +302,7 @@ of space, but the spatial plugin does, and this is how.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">PARSE_COMPOSITE_NQS_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">DW</span><span class="plain-syntax">, </span><span class="identifier-syntax">quantifier_used</span><span class="plain-syntax">, </span><span class="identifier-syntax">some_kind</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. Influencing knowledge. </b>Called from <a href="../knowledge-module/5-tmw.html" class="internal">The Model World (in knowledge)</a> to invite the plugin to participate
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. Influencing knowledge. </b>Called from <a href="../knowledge-module/5-tmw.html" class="internal">The Model World (in knowledge)</a> to invite the plugin to participate
|
||||
in stages I to V of the completion process. This may involve using contextual
|
||||
reasoning to draw further inferences.
|
||||
</p>
|
||||
|
@ -302,7 +314,7 @@ reasoning to draw further inferences.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">COMPLETE_MODEL_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">stage</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>Called from <a href="../knowledge-module/4-is.html" class="internal">Inference Subjects (in knowledge)</a> to invite the plugin to
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b>Called from <a href="../knowledge-module/4-is.html" class="internal">Inference Subjects (in knowledge)</a> to invite the plugin to
|
||||
create any additional inference subjects it might want to reason about. In
|
||||
practice, this tends to be used to create preliminary subjects to stand in
|
||||
for significant kinds before those kinds are ready to be created.
|
||||
|
@ -315,7 +327,7 @@ for significant kinds before those kinds are ready to be created.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALLV</span><span class="plain-syntax">(</span><span class="constant-syntax">CREATE_INFERENCE_SUBJECTS_PLUG</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>Called from <a href="../knowledge-module/5-ia.html" class="internal">Indefinite Appearance (in knowledge)</a> to ask the plugins what
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. </b>Called from <a href="../knowledge-module/5-ia.html" class="internal">Indefinite Appearance (in knowledge)</a> to ask the plugins what
|
||||
inferences, if any, to draw from a double-quoted text standing as an entire
|
||||
sentence. The <span class="extract"><span class="extract-syntax">infs</span></span> is the subject which was being talked about at the time
|
||||
the text was quoted, and therefore presumably is what the text should describe.
|
||||
|
@ -328,7 +340,7 @@ the text was quoted, and therefore presumably is what the text should describe.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">DEFAULT_APPEARANCE_PLUG</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="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. </b>Called from <a href="../knowledge-module/5-inf.html" class="internal">Inferences (in knowledge)</a> when an inference is drawn about
|
||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. </b>Called from <a href="../knowledge-module/5-inf.html" class="internal">Inferences (in knowledge)</a> when an inference is drawn about
|
||||
something. This does not, of course, necessarily mean that this will actually
|
||||
be the property of something: the inference might turn out to be mistaken. The
|
||||
mapping plugin uses this to infer further that if something is said to be a
|
||||
|
@ -342,7 +354,7 @@ map connection to somewhere else, then it is probably a room.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">INFERENCE_DRAWN_NOTIFY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</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>Called from <a href="../knowledge-module/4-ks.html" class="internal">Kind Subjects (in knowledge)</a>. Early in the run, before some kinds
|
||||
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§21. </b>Called from <a href="../knowledge-module/4-ks.html" class="internal">Kind Subjects (in knowledge)</a>. Early in the run, before some kinds
|
||||
are created, placeholder inference subjects are created to stand in for them;
|
||||
this call enables plugins to recognise certain texts as referring to those.
|
||||
</p>
|
||||
|
@ -354,7 +366,7 @@ this call enables plugins to recognise certain texts as referring to those.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">NAME_TO_EARLY_INFS_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</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="SP21" class="paragraph-anchor"></a><b>§21. </b>Called from <a href="../knowledge-module/4-ks.html" class="internal">Kind Subjects (in knowledge)</a> to warn plugins about a new kind,
|
||||
<p class="commentary firstcommentary"><a id="SP22" class="paragraph-anchor"></a><b>§22. </b>Called from <a href="../knowledge-module/4-ks.html" class="internal">Kind Subjects (in knowledge)</a> to warn plugins about a new kind,
|
||||
which in practice enables them to spot from the name that it is actually a kind
|
||||
they want to provide built-in support for: thus the actions plugin reacts to
|
||||
the name "stored action", for example. <span class="extract"><span class="extract-syntax">K</span></span> is the newcomer, <span class="extract"><span class="extract-syntax">super</span></span> its super-kind,
|
||||
|
@ -370,7 +382,7 @@ source text (such as "container").
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">NEW_BASE_KIND_NOTIFY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">d</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="SP22" class="paragraph-anchor"></a><b>§22. </b>Called from <a href="../knowledge-module/2-ins.html" class="internal">Instances (in knowledge)</a> to warn plugins that a new instance has
|
||||
<p class="commentary firstcommentary"><a id="SP23" class="paragraph-anchor"></a><b>§23. </b>Called from <a href="../knowledge-module/2-ins.html" class="internal">Instances (in knowledge)</a> to warn plugins that a new instance has
|
||||
been created. For example, the figures plugin needs to know this so that it
|
||||
can see when a new illustration has been created.
|
||||
</p>
|
||||
|
@ -387,7 +399,7 @@ sure you're not dealing with an object.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">NEW_INSTANCE_NOTIFY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">nc</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>Called from <a href="../knowledge-module/4-pp.html" class="internal">Property Permissions (in knowledge)</a> to warn plugins that a subject
|
||||
<p class="commentary firstcommentary"><a id="SP24" class="paragraph-anchor"></a><b>§24. </b>Called from <a href="../knowledge-module/4-pp.html" class="internal">Property Permissions (in knowledge)</a> to warn plugins that a subject
|
||||
has been given permission to hold a property; the parsing plugin, for example,
|
||||
uses this to attach a visibility flag.
|
||||
</p>
|
||||
|
@ -399,7 +411,7 @@ uses this to attach a visibility flag.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">NEW_PERMISSION_NOTIFY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">pp</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>Called from <a href="../knowledge-module/3-prp.html" class="internal">Properties (in knowledge)</a> to warn plugins that a property has
|
||||
<p class="commentary firstcommentary"><a id="SP25" class="paragraph-anchor"></a><b>§25. </b>Called from <a href="../knowledge-module/3-prp.html" class="internal">Properties (in knowledge)</a> to warn plugins that a property has
|
||||
been created, which they can use to spot properties with special significance
|
||||
to them.
|
||||
</p>
|
||||
|
@ -411,7 +423,7 @@ to them.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">NEW_PROPERTY_NOTIFY_PLUG</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="SP25" class="paragraph-anchor"></a><b>§25. </b>Called from <a href="../knowledge-module/4-is.html" class="internal">Inference Subjects (in knowledge)</a> to warn plugins that a subject
|
||||
<p class="commentary firstcommentary"><a id="SP26" class="paragraph-anchor"></a><b>§26. </b>Called from <a href="../knowledge-module/4-is.html" class="internal">Inference Subjects (in knowledge)</a> to warn plugins that a subject
|
||||
has been created, which they can use to spot subjects with special significance
|
||||
to them.
|
||||
</p>
|
||||
|
@ -423,7 +435,7 @@ to them.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">NEW_SUBJECT_NOTIFY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</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>Called from <a href="../knowledge-module/2-nv.html" class="internal">Nonlocal Variables (in knowledge)</a> to warn plugins that a new
|
||||
<p class="commentary firstcommentary"><a id="SP27" class="paragraph-anchor"></a><b>§27. </b>Called from <a href="../knowledge-module/2-nv.html" class="internal">Nonlocal Variables (in knowledge)</a> to warn plugins that a new
|
||||
variable has been created, which they can use to spot variables with special
|
||||
significance to them.
|
||||
</p>
|
||||
|
@ -435,7 +447,7 @@ significance to them.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">NEW_VARIABLE_NOTIFY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">q</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>Called from <a href="../knowledge-module/2-ins.html" class="internal">Instances (in knowledge)</a> to warn plugins that the kind of an
|
||||
<p class="commentary firstcommentary"><a id="SP28" class="paragraph-anchor"></a><b>§28. </b>Called from <a href="../knowledge-module/2-ins.html" class="internal">Instances (in knowledge)</a> to warn plugins that the kind of an
|
||||
instance is about to be set. This happens most often when the instance is
|
||||
created, but can also happen again, refining the kind to a subkind, when
|
||||
the instance is an object.
|
||||
|
@ -448,7 +460,7 @@ the instance is an object.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">SET_KIND_NOTIFY_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="plain-syntax">, </span><span class="identifier-syntax">k</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>Called from <a href="../knowledge-module/4-ks.html" class="internal">Kind Subjects (in knowledge)</a> when one kind of object is made a
|
||||
<p class="commentary firstcommentary"><a id="SP29" class="paragraph-anchor"></a><b>§29. </b>Called from <a href="../knowledge-module/4-ks.html" class="internal">Kind Subjects (in knowledge)</a> when one kind of object is made a
|
||||
subkind of another, as for example when "container" is a made a subkind of
|
||||
"thing". The plugin should return <span class="extract"><span class="extract-syntax">TRUE</span></span> if it wishes to forbid this,
|
||||
and if so, it had better throw a problem message, or the user will be
|
||||
|
@ -466,7 +478,7 @@ regions plugin does with the "region" kind.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">SET_SUBKIND_NOTIFY_PLUG</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>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP29" class="paragraph-anchor"></a><b>§29. Influencing if. </b>Called from <a href="../if-module/4-ap2.html" class="internal">Action Patterns (in if)</a> to validate optional parameters on the
|
||||
<p class="commentary firstcommentary"><a id="SP30" class="paragraph-anchor"></a><b>§30. Influencing if. </b>Called from <a href="../if-module/4-ap2.html" class="internal">Action Patterns (in if)</a> to validate optional parameters on the
|
||||
"going" action. The mapping plugin uses this.
|
||||
</p>
|
||||
|
||||
|
@ -478,7 +490,7 @@ regions plugin does with the "region" kind.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">CHECK_GOING_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">from</span><span class="plain-syntax">, </span><span class="identifier-syntax">to</span><span class="plain-syntax">, </span><span class="identifier-syntax">by</span><span class="plain-syntax">, </span><span class="identifier-syntax">through</span><span class="plain-syntax">, </span><span class="identifier-syntax">pushing</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. Influencing index. </b>Called from <a href="../index-module/2-ipw.html" class="internal">Index Physical World (in index)</a> to add something (if it wishes)
|
||||
<p class="commentary firstcommentary"><a id="SP31" class="paragraph-anchor"></a><b>§31. Influencing index. </b>Called from <a href="../index-module/2-ipw.html" class="internal">Index Physical World (in index)</a> to add something (if it wishes)
|
||||
to the index description of an instance in the spatial model. For example,
|
||||
the regions plugin uses this to put colour chips next to names of regions.
|
||||
</p>
|
||||
|
@ -490,7 +502,7 @@ the regions plugin uses this to put colour chips next to names of regions.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">ADD_TO_WORLD_INDEX_PLUG</span><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>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP31" class="paragraph-anchor"></a><b>§31. </b>Called from <a href="../index-module/2-ipw.html" class="internal">Index Physical World (in index)</a> to add something (if it wishes)
|
||||
<p class="commentary firstcommentary"><a id="SP32" class="paragraph-anchor"></a><b>§32. </b>Called from <a href="../index-module/2-ipw.html" class="internal">Index Physical World (in index)</a> to add something (if it wishes)
|
||||
to the textual description of an instance in the spatial model. For example,
|
||||
the mapping plugin uses this to say where a door leads.
|
||||
</p>
|
||||
|
|
|
@ -166,7 +166,7 @@ nothing except to be a parent to them; it has no activation function.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">bibliographic_plugin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PluginManager::new</span><span class="plain-syntax">(&</span><a href="2-bd.html#SP1" class="function-link"><span class="function-syntax">BibliographicData::start</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"bibliographic data"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ifp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">chronology_plugin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PluginManager::new</span><span class="plain-syntax">(&</span><span class="identifier-syntax">Chronology::start_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"chronology"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ifp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">devices_plugin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PluginManager::new</span><span class="plain-syntax">(&</span><a href="3-dvc.html#SP2" class="function-link"><span class="function-syntax">PL::Devices::start</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"devices"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ifp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">map_plugin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PluginManager::new</span><span class="plain-syntax">(&</span><a href="3-tm.html#SP8" class="function-link"><span class="function-syntax">PL::Map::start</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"mapping"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ifp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">map_plugin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PluginManager::new</span><span class="plain-syntax">(&</span><a href="3-tm.html#SP1" class="function-link"><span class="function-syntax">Map::start</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"mapping"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ifp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">persons_plugin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PluginManager::new</span><span class="plain-syntax">(&</span><a href="3-prs.html#SP1" class="function-link"><span class="function-syntax">PL::Persons::start</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"persons"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ifp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">player_plugin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PluginManager::new</span><span class="plain-syntax">(&</span><a href="3-tp.html#SP1" class="function-link"><span class="function-syntax">Player::start</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"player"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ifp</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">regions_plugin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PluginManager::new</span><span class="plain-syntax">(&</span><a href="3-rgn.html#SP1" class="function-link"><span class="function-syntax">Regions::start</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"regions"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ifp</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -523,10 +523,7 @@ just too short to care overmuch about this.
|
|||
|
||||
<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">i</span><span class="plain-syntax">, </span><span class="identifier-syntax">pos</span><span class="plain-syntax"> = </span><span class="identifier-syntax">STREAM_EXTENT</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">), </span><span class="identifier-syntax">whitespace_count</span><span class="plain-syntax">=0, </span><span class="identifier-syntax">black_chars_written</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><span class="constant-syntax">100</span><span class="plain-syntax">;</span>
|
||||
<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">N</span><span class="plain-syntax"> = </span><span class="constant-syntax">BIBLIOGRAPHIC_TEXT_TRUNCATION</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><span class="constant-syntax">BIBLIOGRAPHIC_TEXT_TRUNCATION</span><span 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="character-syntax">'"'</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">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">i</span><span class="plain-syntax">=0; </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="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">STREAM_EXTENT</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">) - </span><span class="identifier-syntax">pos</span><span class="plain-syntax"> >= </span><span class="identifier-syntax">N</span><span class="plain-syntax">) </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -258,7 +258,7 @@ can be said to be "everywhere", which nothing else can).
|
|||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-bck.html#SP11_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">11.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">val_of_found_in</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#SP11_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">11.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">val_of_found_in</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">val_of_found_in</span><span 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_of_found_in</span><span class="plain-syntax">) </span><a href="3-tm.html#SP23" class="function-link"><span class="function-syntax">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">val_of_found_in</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>
|
||||
|
|
|
@ -409,7 +409,7 @@ If all are null, then the global scope is used.
|
|||
<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::EPSMap::index_map_with_SMF</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::EPSMap::index_map_with_SMF</span></span>:<br/>The Map - <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">task</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">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::EPSMap::index_map_with_SMF</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::EPSMap::index_map_with_SMF</span></span>:<br/>The Map - <a href="3-tm.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</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">wording</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NPs</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">NPs</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">NPs</span><span class="plain-syntax">[1]):</span><span class="identifier-syntax">EMPTY_WORDING</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">task</span><span class="plain-syntax">) { </span><span class="comment-syntax"> "Index map with ..."</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">ACCEPT_SMFT:</span>
|
||||
|
|
|
@ -73,59 +73,29 @@ 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>Map Connection Relations</b></li></ul></div>
|
||||
<p class="purpose">To define one binary predicate for each map direction, such as "mapped north of".</p>
|
||||
|
||||
<ul class="toc"><li><a href="3-mcr.html#SP1">§1. Family</a></li><li><a href="3-mcr.html#SP3">§3. The adjacency relation</a></li><li><a href="3-mcr.html#SP5">§5. Subsequent creations</a></li><li><a href="3-mcr.html#SP8">§8. Typechecking</a></li><li><a href="3-mcr.html#SP9">§9. Assertion</a></li><li><a href="3-mcr.html#SP10">§10. Compilation</a></li><li><a href="3-mcr.html#SP11">§11. Problem message text</a></li><li><a href="3-mcr.html#SP12">§12. The correspondence with directions</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="3-mcr.html#SP1">§1. Family</a></li><li><a href="3-mcr.html#SP2">§2. Subsequent creations</a></li><li><a href="3-mcr.html#SP4">§4. Typechecking</a></li><li><a href="3-mcr.html#SP5">§5. Assertion</a></li><li><a href="3-mcr.html#SP6">§6. Indexing</a></li><li><a href="3-mcr.html#SP7">§7. The correspondence with directions</a></li><li><a href="3-mcr.html#SP8">§8. The adjacency relation</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Family. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Family. </b>This section creates a family of implicit relations (implemented as binary
|
||||
predicates) corresponding to the different directions.
|
||||
</p>
|
||||
|
||||
<p class="commentary">For every direction created, a predicate is created for the possibility of
|
||||
a map connection. For instance, "if Versailles is mapped north of the
|
||||
Metro" tests the "mapped-north" BP.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">map_connecting_bp_family</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::MapDirections::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">PL::MapDirections::start</span></span>:<br/>IF Module - <a href="1-im.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="identifier-syntax">map_connecting_bp_family</span><span class="plain-syntax"> = </span><span class="identifier-syntax">BinaryPredicateFamilies::new</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">map_connecting_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">TYPECHECK_BPF_MTID</span><span class="plain-syntax">, </span><a href="3-mcr.html#SP8" class="function-link"><span class="function-syntax">PL::MapDirections::typecheck</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">map_connecting_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">ASSERT_BPF_MTID</span><span class="plain-syntax">, </span><a href="3-mcr.html#SP9" class="function-link"><span class="function-syntax">PL::MapDirections::assert</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">map_connecting_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">SCHEMA_BPF_MTID</span><span class="plain-syntax">, </span><a href="3-mcr.html#SP10" class="function-link"><span class="function-syntax">PL::MapDirections::schema</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">map_connecting_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">DESCRIBE_FOR_PROBLEMS_BPF_MTID</span><span class="plain-syntax">, </span><a href="3-mcr.html#SP11" class="function-link"><span class="function-syntax">PL::MapDirections::describe_for_problems</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">map_connecting_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">DESCRIBE_FOR_INDEX_BPF_MTID</span><span class="plain-syntax">, </span><a href="3-mcr.html#SP11" class="function-link"><span class="function-syntax">PL::MapDirections::describe_for_index</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">map_connecting_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">TYPECHECK_BPF_MTID</span><span class="plain-syntax">, </span><a href="3-mcr.html#SP4" class="function-link"><span class="function-syntax">PL::MapDirections::typecheck</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">map_connecting_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">ASSERT_BPF_MTID</span><span class="plain-syntax">, </span><a href="3-mcr.html#SP5" class="function-link"><span class="function-syntax">PL::MapDirections::assert</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">map_connecting_bp_family</span><span class="plain-syntax">, </span><span class="identifier-syntax">DESCRIBE_FOR_INDEX_BPF_MTID</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::describe_for_index</span></a><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>This section creates a family of implicit relations (implemented as binary
|
||||
predicates) corresponding to the different directions.
|
||||
</p>
|
||||
|
||||
<p class="commentary">For every direction created, a predicate is created for the possibility of
|
||||
a map connection. For instance, "if Versailles is mapped north of the
|
||||
Metro" tests the "mapped-north" BP. There is also one general relation
|
||||
built in:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R_adjacency</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. The adjacency relation. </b>We may as well do this here: creating the relation "X is adjacent to Y".
|
||||
</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::MapDirections::create_relations</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::MapDirections::create_relations</span></span>:<br/>Spatial Relations - <a href="3-sr.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="identifier-syntax">R_adjacency</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BinaryPredicates::make_pair</span><span class="plain-syntax">(</span><span class="identifier-syntax">spatial_bp_family</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BPTerms::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs_room</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BPTerms::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs_room</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"adjacent-to"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"adjacent-from"</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">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"TestAdjacency(*1,*2)"</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PreformUtilities::wording</span><span class="plain-syntax">(</span><span class="function-syntax"><relation-names></span><span class="plain-syntax">, </span><span class="identifier-syntax">ADJACENCY_RELATION_NAME</span><span class="plain-syntax">));</span>
|
||||
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>There is nothing special about asserting this, so we don't intervene:
|
||||
</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::MapDirections::assert_relations</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::MapDirections::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="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">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="SP5" class="paragraph-anchor"></a><b>§5. Subsequent creations. </b>Every direction created has a relation associated with it: for instance,
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Subsequent creations. </b>Every direction created has a relation associated with it: for instance,
|
||||
"north" has the relation "X is mapped north of Y". Now a direction is a
|
||||
kind of object, but objects aren't created until after relations used to
|
||||
parse sentences are needed. In fact, however, directions are "noticed"
|
||||
|
@ -133,13 +103,13 @@ at an earlier stage in Inform's run, so another two-step is needed:
|
|||
</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::create_sketchy_mapping_direction</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::MapDirections::create_sketchy_mapping_direction</span></span>:<br/><a href="3-mcr.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">binary_predicate</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::MapDirections::create_sketchy_mapping_direction</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::MapDirections::create_sketchy_mapping_direction</span></span>:<br/>The Map - <a href="3-tm.html#SP3">§3</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="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="named-paragraph-container code-font"><a href="3-mcr.html#SP5_4" class="named-paragraph-link"><span class="named-paragraph">Create the mapping BP for the new direction</span><span class="named-paragraph-number">5.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-mcr.html#SP2_3" class="named-paragraph-link"><span class="named-paragraph">Create the mapping BP for the new direction</span><span class="named-paragraph-number">2.3</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">bp</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5_1" class="paragraph-anchor"></a><b>§5.1. </b>When each direction is created, so are corresponding relations and
|
||||
<p class="commentary firstcommentary"><a id="SP2_1" class="paragraph-anchor"></a><b>§2.1. </b>When each direction is created, so are corresponding relations and
|
||||
prepositional uses: for example, "northeast" makes "mapping northeast"
|
||||
as a relation, and "mapped northeast of" as a prepositional usage.
|
||||
</p>
|
||||
|
@ -193,7 +163,7 @@ want to allow room names to contain direction names on occasion:
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">from</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="SP5_2" class="paragraph-anchor"></a><b>§5.2. </b>Two of the directions are special to mapping, because they have to be parsed
|
||||
<p class="commentary firstcommentary"><a id="SP2_2" class="paragraph-anchor"></a><b>§2.2. </b>Two of the directions are special to mapping, because they have to be parsed
|
||||
slighly differently. (These are the English names; there is no need to translate
|
||||
this to other languages.)
|
||||
</p>
|
||||
|
@ -204,22 +174,14 @@ this to other languages.)
|
|||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">outside</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="SP5_3" class="paragraph-anchor"></a><b>§5.3. </b>Directions are detected in sentences having the form "D is a direction." This
|
||||
<p class="commentary firstcommentary"><a id="SP2_3" class="paragraph-anchor"></a><b>§2.3. </b>Directions are detected in sentences having the form "D is a direction." This
|
||||
is intentionally done very early on.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="Preform-constant-syntax">MAX_DIRECTIONS</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">100</span><span class="Preform-plain-syntax"> </span><span class="Preform-comment-syntax"> the Standard Rules define only 12, so this is plenty</span>
|
||||
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">MAX_MAPPING_RELATION_NAME_LENGTH</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">MAX_WORDS_IN_DIRECTION</span><span class="Preform-plain-syntax">*</span><span class="Preform-identifier-syntax">MAX_WORD_LENGTH</span><span class="Preform-plain-syntax">+10</span>
|
||||
</pre>
|
||||
<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">directions_noticed</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_DIRECTIONS</span><span class="plain-syntax">];</span>
|
||||
<span class="identifier-syntax">binary_predicate</span><span class="plain-syntax"> *</span><span class="identifier-syntax">direction_relations_noticed</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_DIRECTIONS</span><span class="plain-syntax">];</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">no_directions_noticed</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5_4" class="paragraph-anchor"></a><b>§5.4. </b></p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">MAX_MAPPING_RELATION_NAME_LENGTH</span><span class="plain-syntax"> </span><span class="constant-syntax">MAX_WORDS_IN_DIRECTION</span><span class="plain-syntax">*</span><span class="identifier-syntax">MAX_WORD_LENGTH</span><span class="plain-syntax">+10</span>
|
||||
</pre>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create the mapping BP for the new direction</span><span class="named-paragraph-number">5.4</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Create the mapping BP for the new direction</span><span class="named-paragraph-number">2.3</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -259,29 +221,23 @@ is intentionally done very early on.
|
|||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">relname</span><span class="plain-syntax">)</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-mcr.html#SP5">§5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>That was one step, and here's the second. At this point we have created the
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-mcr.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>That was one step, and here's the second. At this point we have created the
|
||||
instance <span class="extract"><span class="extract-syntax">I</span></span> for the direction, and given it the kind "direction". That
|
||||
makes it possible to complete the details of the BP.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="extract"><span class="extract-syntax">ident</span></span> can be any string of text which evaluates in I6 to the
|
||||
object number of the direction object. It seems redundant here because
|
||||
surely if we know <span class="extract"><span class="extract-syntax">I</span></span>, we know its runtime representation; but that's not
|
||||
true — we need to call this routine at a time when the final identifier
|
||||
names for I6 objects have not yet been settled.
|
||||
</p>
|
||||
|
||||
<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#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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::MapDirections::make_mapped_predicate</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::MapDirections::make_mapped_predicate</span></span>:<br/>The Map - <a href="3-tm.html#SP17_2">§17.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="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>
|
||||
<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="identifier-syntax">direction_relations_noticed</span><span class="plain-syntax">[</span><span class="identifier-syntax">mmp_call_counter</span><span 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">NULL</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">"Improper text: %W\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">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_ImproperlyMadeDirection</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="plain-syntax"> </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">PM_ImproperlyMadeDirection</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"directions must be created by only the simplest possible sentences"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"in the form 'North-north-west is a direction' only. Using adjectives, "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"'called', 'which', and so on is not allowed. (In practice this is not "</span>
|
||||
|
@ -293,54 +249,30 @@ names for I6 objects have not yet been settled.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">term_details</span><span class="plain-syntax">[0] = </span><span class="identifier-syntax">BPTerms::new</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">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">term_details</span><span class="plain-syntax">[1] = </span><span class="identifier-syntax">BPTerms::new</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">BinaryPredicates::set_index_details</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="string-syntax">"room/door"</span><span class="plain-syntax">, </span><span class="string-syntax">"room/door"</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">task_functions</span><span class="plain-syntax">[</span><span class="identifier-syntax">TEST_ATOM_TASK</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"(MapConnection(*2,%n) == *1)"</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">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">task_functions</span><span class="plain-syntax">[</span><span class="identifier-syntax">NOW_ATOM_TRUE_TASK</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"AssertMapConnection(*2,%n,*1)"</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">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">task_functions</span><span class="plain-syntax">[</span><span class="identifier-syntax">NOW_ATOM_FALSE_TASK</span><span class="plain-syntax">] = </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"AssertMapUnconnection(*2,%n,*1)"</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">RTMap::set_map_schemas</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</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">MAP_DATA</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">)-></span><span class="element-syntax">direction_relation</span><span class="plain-syntax"> = </span><span class="identifier-syntax">bp</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></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::MapDirections::look_for_direction_creation</span><span class="plain-syntax">(</span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pn</span><span 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">pn</span><span class="plain-syntax">) != </span><span class="identifier-syntax">SENTENCE_NT</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">pn</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">-></span><span class="element-syntax">next</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="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">pn</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">) != </span><span class="identifier-syntax">VERB_NT</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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">-></span><span class="identifier-syntax">next</span><span class="plain-syntax">) != </span><span class="identifier-syntax">UNPARSED_NOUN_NT</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">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">-></span><span class="identifier-syntax">next</span><span class="plain-syntax">-></span><span class="element-syntax">next</span><span class="plain-syntax">) != </span><span class="identifier-syntax">UNPARSED_NOUN_NT</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">current_sentence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pn</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">pn</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">-></span><span class="element-syntax">next</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>(Node::get_text(pn-></span><span class="element-syntax">next</span><span class="plain-syntax">)))</span>
|
||||
<span class="plain-syntax"> && (</span><span class="function-syntax"><<r>></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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">no_directions_noticed</span><span class="plain-syntax"> >= </span><span class="constant-syntax">MAX_DIRECTIONS</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::limit_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_TooManyDirections</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"different directions"</span><span class="plain-syntax">, </span><span class="constant-syntax">MAX_DIRECTIONS</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">direction_relations_noticed</span><span class="plain-syntax">[</span><span class="identifier-syntax">no_directions_noticed</span><span class="plain-syntax">] =</span>
|
||||
<span class="plain-syntax"> </span><a href="3-mcr.html#SP5" class="function-link"><span class="function-syntax">PL::MapDirections::create_sketchy_mapping_direction</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">pn</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">directions_noticed</span><span class="plain-syntax">[</span><span class="identifier-syntax">no_directions_noticed</span><span class="plain-syntax">++] = </span><span class="identifier-syntax">pn</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. Typechecking. </b>This won't catch everything, but it will do. Run-time checking will pick up
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Typechecking. </b>This won't catch everything, but it will do. Run-time checking will pick up
|
||||
remaining anomalies.
|
||||
</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::MapDirections::typecheck</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::MapDirections::typecheck</span></span>:<br/><a href="3-mcr.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::MapDirections::typecheck</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::MapDirections::typecheck</span></span>:<br/><a href="3-mcr.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</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">kind</span><span class="plain-syntax"> **</span><span class="identifier-syntax">kinds_of_terms</span><span class="plain-syntax">, </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> **</span><span class="identifier-syntax">kinds_required</span><span class="plain-syntax">, </span><span class="identifier-syntax">tc_problem_kit</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tck</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">t</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">t</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">t</span><span class="plain-syntax"><2; </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">Kinds::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">kinds_of_terms</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">], </span><span class="identifier-syntax">K_room</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NEVER_MATCH</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::compatible</span><span class="plain-syntax">(</span><span class="identifier-syntax">kinds_of_terms</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">], </span><span class="identifier-syntax">K_door</span><span class="plain-syntax">) == </span><span class="identifier-syntax">NEVER_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">"Term %d is %u but should be a room or door\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">t</span><span class="plain-syntax">, </span><span class="identifier-syntax">kinds_of_terms</span><span class="plain-syntax">[</span><span class="identifier-syntax">t</span><span class="plain-syntax">]);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Propositions::Checker::issue_bp_typecheck_error</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">kinds_of_terms</span><span class="plain-syntax">[0], </span><span class="identifier-syntax">kinds_of_terms</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">tck</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Propositions::Checker::issue_bp_typecheck_error</span><span class="plain-syntax">(</span><span class="identifier-syntax">bp</span><span class="plain-syntax">, </span><span class="identifier-syntax">kinds_of_terms</span><span class="plain-syntax">[0],</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kinds_of_terms</span><span class="plain-syntax">[1], </span><span class="identifier-syntax">tck</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">NEVER_MATCH</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">ALWAYS_MATCH</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. Assertion. </b>Note that the following will infer <span class="extract"><span class="extract-syntax">IS_ROOM_INF</span></span> for any source of a map
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. Assertion. </b>Note that the following will infer <span class="extract"><span class="extract-syntax">IS_ROOM_INF</span></span> for any source of a map
|
||||
connection — which will include doors. That doesn't matter, because the
|
||||
Spatial plugin uses these inferences only for objects whose kind is not
|
||||
explicitly given in the source text; and doors must always be specified as
|
||||
|
@ -348,48 +280,38 @@ such.
|
|||
</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::MapDirections::assert</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::MapDirections::assert</span></span>:<br/><a href="3-mcr.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::MapDirections::assert</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::assert</span></span>:<br/><a href="3-mcr.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</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">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">infs0</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="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">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="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">o_dir</span><span class="plain-syntax"> = </span><a href="3-mcr.html#SP12" class="function-link"><span class="function-syntax">PL::MapDirections::get_mapping_direction</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">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">o_dir</span><span class="plain-syntax"> = </span><a href="3-mcr.html#SP7" class="function-link"><span class="function-syntax">PL::MapDirections::get_mapping_direction</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_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><a href="3-si.html#SP3" class="function-link"><span class="function-syntax">SpatialInferences::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><a href="3-si.html#SP3" class="function-link"><span class="function-syntax">SpatialInferences::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><a href="3-tm.html#SP5" class="function-link"><span class="function-syntax">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>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. Compilation. </b>We need do nothing special: these relations can be compiled from their schemas.
|
||||
</p>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. 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::MapDirections::schema</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::MapDirections::schema</span></span>:<br/><a href="3-mcr.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">task</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="identifier-syntax">annotated_i6_schema</span><span class="plain-syntax"> *</span><span class="identifier-syntax">asch</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. Problem message text. </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::MapDirections::describe_for_problems</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::MapDirections::describe_for_problems</span></span>:<br/><a href="3-mcr.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUTPUT_STREAM</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><span class="identifier-syntax">FALSE</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::MapDirections::describe_for_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">PL::MapDirections::describe_for_index</span></span>:<br/><a href="3-mcr.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUTPUT_STREAM</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::MapDirections::describe_for_index</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">PL::MapDirections::describe_for_index</span></span>:<br/><a href="3-mcr.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">bp_family</span><span class="plain-syntax"> *</span><span class="identifier-syntax">self</span><span class="plain-syntax">, </span><span class="identifier-syntax">OUTPUT_STREAM</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>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"map"</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. The correspondence with directions. </b>(Speed really does not matter here.)
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. The correspondence with directions. </b>Speed really does not matter here.
|
||||
</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#SP33">§33</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('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">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#SP33">§33</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>
|
||||
|
||||
<span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::MapDirections::get_mapping_direction</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::MapDirections::get_mapping_direction</span></span>:<br/><a href="3-mcr.html#SP9">§9</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="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::MapDirections::get_mapping_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::MapDirections::get_mapping_direction</span></span>:<br/><a href="3-mcr.html#SP5">§5</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">if</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="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">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>
|
||||
|
@ -401,14 +323,27 @@ such.
|
|||
<span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::MapDirections::get_mapping_relationship</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="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="identifier-syntax">Node::get_relationship</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">bp</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">PluginManager::active</span><span class="plain-syntax">(</span><span class="identifier-syntax">map_plugin</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><a href="3-mcr.html#SP12" class="function-link"><span class="function-syntax">PL::MapDirections::get_mapping_direction</span></a><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><a href="3-mcr.html#SP7" class="function-link"><span class="function-syntax">PL::MapDirections::get_mapping_direction</span></a><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BinaryPredicates::get_reversal</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">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="identifier-syntax">dir</span><span class="plain-syntax"> = </span><a href="3-mcr.html#SP12" class="function-link"><span class="function-syntax">PL::MapDirections::get_mapping_direction</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">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="identifier-syntax">dir</span><span class="plain-syntax"> = </span><a href="3-mcr.html#SP7" class="function-link"><span class="function-syntax">PL::MapDirections::get_mapping_direction</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">dir</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>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. The adjacency relation. </b>There is also one general relation built in, though it belongs to the spatial family:
|
||||
</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::MapDirections::create_relations</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::MapDirections::create_relations</span></span>:<br/>Spatial Relations - <a href="3-sr.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="identifier-syntax">BinaryPredicates::make_pair</span><span class="plain-syntax">(</span><span class="identifier-syntax">spatial_bp_family</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BPTerms::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs_room</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BPTerms::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">infs_room</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"adjacent-to"</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"adjacent-from"</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">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"TestAdjacency(*1,*2)"</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PreformUtilities::wording</span><span class="plain-syntax">(</span><span class="function-syntax"><relation-names></span><span class="plain-syntax">, </span><span class="identifier-syntax">ADJACENCY_RELATION_NAME</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="3-tm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresscurrentchapter">3</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-si.html">si</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="progresssection"><a href="3-bck.html">bck</a></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="progresscurrent">mcr</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-ap.html">4</a></li><li class="progresschapter"><a href="5-pp.html">5</a></li><li class="progressnext"><a href="3-sg.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -110,7 +110,7 @@ scenes — to express which, the <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">scene</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure scene_connector is accessed in 2/ri, 3/mcr, 3/em, 3/tm2, 3/ts, 4/act, 4/anl, 4/ap2, 4/nap, 5/tfg, 5/gl and here.</li><li>The structure scene is accessed in 3/tm2 and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure scene_connector is accessed in 2/ri, 3/tm, 3/em, 3/tm2, 3/ts, 4/act, 4/anl, 4/ap2, 4/nap, 5/tfg, 5/gl and here.</li><li>The structure scene is accessed in 3/tm2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">scenes_data</span><span class="plain-syntax"> </span><span class="reserved-syntax">scene</span>
|
||||
|
|
|
@ -115,7 +115,7 @@ indications of spatial structure:
|
|||
</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">SpatialInferences::infer_is_room</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">SpatialInferences::infer_is_room</span></span>:<br/>Spatial Model - <a href="3-sm.html#SP5">§5</a>, <a href="3-sm.html#SP24">§24</a>, <a href="3-sm.html#SP25">§25</a><br/>Spatial Relations - <a href="3-sr.html#SP4_4">§4.4</a><br/>Backdrops - <a href="3-bck.html#SP7">§7</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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">SpatialInferences::infer_is_room</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">SpatialInferences::infer_is_room</span></span>:<br/>Spatial Model - <a href="3-sm.html#SP5">§5</a>, <a href="3-sm.html#SP24">§24</a>, <a href="3-sm.html#SP25">§25</a><br/>Spatial Relations - <a href="3-sr.html#SP4_4">§4.4</a><br/>Backdrops - <a href="3-bck.html#SP7">§7</a><br/>The Map - <a href="3-tm.html#SP27">§27</a><br/>Map Connection Relations - <a href="3-mcr.html#SP5">§5</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="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>
|
||||
|
|
|
@ -209,7 +209,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">Spatial::object_is_a_room</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">Spatial::object_is_a_room</span></span>:<br/><a href="3-sm.html#SP30_3_2">§30.3.2</a>, <a href="3-sm.html#SP30_3_3">§30.3.3</a>, <a href="3-sm.html#SP31">§31</a>, <a href="3-sm.html#SP39">§39</a><br/>The Player - <a href="3-tp.html#SP10_1">§10.1</a>, <a href="3-tp.html#SP10_3">§10.3</a><br/>Regions - <a href="3-rgn.html#SP7">§7</a><br/>The Map - <a href="3-tm.html#SP21_2">§21.2</a>, <a href="3-tm.html#SP34_1">§34.1</a>, <a href="3-tm.html#SP34_2">§34.2</a>, <a href="3-tm.html#SP34_4">§34.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">Spatial::object_is_a_room</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">Spatial::object_is_a_room</span></span>:<br/><a href="3-sm.html#SP30_3_2">§30.3.2</a>, <a href="3-sm.html#SP30_3_3">§30.3.3</a>, <a href="3-sm.html#SP31">§31</a>, <a href="3-sm.html#SP39">§39</a><br/>The Player - <a href="3-tp.html#SP10_1">§10.1</a>, <a href="3-tp.html#SP10_3">§10.3</a><br/>Regions - <a href="3-rgn.html#SP7">§7</a><br/>The Map - <a href="3-tm.html#SP34_1">§34.1</a>, <a href="3-tm.html#SP34_2">§34.2</a>, <a href="3-tm.html#SP34_4">§34.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">K_room</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">I</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="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>
|
||||
|
@ -984,7 +984,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#SP7" class="function-link"><span class="function-syntax">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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><a href="3-sm.html#SP7" class="function-link"><span class="function-syntax">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#SP12" class="function-link"><span class="function-syntax">Map::instance_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>
|
||||
|
|
|
@ -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#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="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#SP19">§19</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>
|
||||
|
@ -322,8 +322,8 @@ for any subsequent story directions to be unshown:
|
|||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_dir_to_page_dir</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_DIRECTIONS</span><span class="plain-syntax">];</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::SpatialMap::initialise_page_directions</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::SpatialMap::initialise_page_directions</span></span>:<br/>EPS Map - <a href="3-em.html#SP13">§13</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">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">registered_directions</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">N</span><span class="plain-syntax"> = </span><a href="3-tm.html#SP14" class="function-link"><span class="function-syntax">Map::number_of_directions</span></a><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">N</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">story_dir_to_page_dir</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">] = </span><span class="identifier-syntax">i</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -469,7 +469,7 @@ we use these hard-wired macros instead.
|
|||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="identifier-syntax">LOOP_OVER_DIRECTIONS</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"><12; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span>
|
||||
<span class="definition-keyword">define</span> <span class="identifier-syntax">LOOP_OVER_STORY_DIRECTIONS</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">registered_directions</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><a href="3-tm.html#SP14" class="function-link"><span class="function-syntax">Map::number_of_directions</span></a><span class="plain-syntax">(); </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span>
|
||||
<span class="definition-keyword">define</span> <span class="identifier-syntax">LOOP_OVER_LATTICE_DIRECTIONS</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"><10; </span><span class="identifier-syntax">i</span><span class="plain-syntax">++)</span>
|
||||
<span class="definition-keyword">define</span> <span class="identifier-syntax">LOOP_OVER_NONLATTICE_DIRECTIONS</span><span class="plain-syntax">(</span><span class="identifier-syntax">i</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#SP7" class="function-link"><span class="function-syntax">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#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><a href="3-tm.html#SP12" class="function-link"><span class="function-syntax">Map::instance_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#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><a href="3-tm.html#SP26" class="function-link"><span class="function-syntax">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#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">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#SP24" class="function-link"><span class="function-syntax">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>
|
||||
|
@ -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#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="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#SP24" class="function-link"><span class="function-syntax">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#SP36">§36</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><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#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="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#SP24" class="function-link"><span class="function-syntax">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>
|
||||
|
|
|
@ -123,7 +123,7 @@ MathJax = {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">n</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-sr.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Make built-in spatial relationships</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="3-sr.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Make built-in indirect spatial relationships</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="3-mcr.html#SP3" class="function-link"><span class="function-syntax">PL::MapDirections::create_relations</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="3-mcr.html#SP8" class="function-link"><span class="function-syntax">PL::MapDirections::create_relations</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="3-rgn.html#SP16" class="function-link"><span class="function-syntax">Regions::create_relations</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -310,7 +310,6 @@ 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="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="3-bck.html#SP7" class="function-link"><span class="function-syntax">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#SP17" class="function-link"><span class="function-syntax">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>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-sr.html#SP4">§4</a>.</li></ul>
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -107,7 +107,7 @@ MathJax = {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">delete_this_link</span><span class="plain-syntax">; </span><span class="comment-syntax"> used temporarily during parsing</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">action_name_list</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure action_name_list is accessed in 2/ri, 3/mcr, 3/em, 3/scn, 3/tm2, 3/ts, 4/act, 4/ap2, 4/nap, 5/tfg, 5/gl and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure action_name_list is accessed in 2/ri, 3/tm, 3/em, 3/scn, 3/tm2, 3/ts, 4/act, 4/ap2, 4/nap, 5/tfg, 5/gl and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>The action name list is the part of an action pattern identifying
|
||||
which actions are allowed: "taking, dropping or examining" for
|
||||
example. The following routine extracts this from a potentially longer
|
||||
|
|
|
@ -151,7 +151,7 @@ not-really-action APs are used in no other context, and employ the
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">ap_optional_clause</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure action_pattern is accessed in 2/ri, 3/mcr, 3/em, 3/scn, 3/tm2, 3/ts, 4/act, 4/anl, 4/nap, 5/tfg, 5/gl and here.</li><li>The structure ap_optional_clause is accessed in 2/ri, 3/mcr, 3/em, 3/scn, 3/tm2, 3/ts, 4/act, 4/anl, 4/nap, 5/tfg, 5/gl and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure action_pattern is accessed in 2/ri, 3/tm, 3/em, 3/scn, 3/tm2, 3/ts, 4/act, 4/anl, 4/nap, 5/tfg, 5/gl and here.</li><li>The structure ap_optional_clause is accessed in 2/ri, 3/tm, 3/em, 3/scn, 3/tm2, 3/ts, 4/act, 4/anl, 4/nap, 5/tfg, 5/gl and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>When we parse action patterns, we record why they fail, in order to make
|
||||
it easier to produce helpful error messages. (We can't simply fire off
|
||||
errors at the time they occur, because text is often parsed in several
|
||||
|
|
|
@ -108,7 +108,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">understanding_reference</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">understanding_reference</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure understanding_item is accessed in 2/ri, 3/mcr, 3/em, 3/scn, 3/tm2, 3/ts, 4/act, 4/anl, 4/ap2, 4/nap, 5/gl and here.</li><li>The structure understanding_reference is accessed in 2/ri, 3/mcr, 3/em, 3/scn, 3/tm2, 3/ts, 4/act, 4/anl, 4/ap2, 4/nap, 5/gl and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure understanding_item is accessed in 2/ri, 3/tm, 3/em, 3/scn, 3/tm2, 3/ts, 4/act, 4/anl, 4/ap2, 4/nap, 5/gl and here.</li><li>The structure understanding_reference is accessed in 2/ri, 3/tm, 3/em, 3/scn, 3/tm2, 3/ts, 4/act, 4/anl, 4/ap2, 4/nap, 5/gl and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>New grammar arrives in the system in two ways: primarily by means of explicit
|
||||
Understand sentences in the source text, but also secondarily in the form
|
||||
of table entries or other values used to match against snippets. For example:
|
||||
|
|
|
@ -116,7 +116,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">IXInstances::index_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">IXInstances::index_name</span></span>:<br/>Index Physical World - <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#SP5_1">§5.1</a><br/>Spatial - <a href="3-spt.html#SP4">§4</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">I</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">IXInstances::index_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">IXInstances::index_name</span></span>:<br/>Index Physical World - <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#SP5_1">§5.1</a><br/>Spatial - <a href="3-spt.html#SP4">§4</a><br/>The Map - <a href="3-tm.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">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">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_in_play</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::nonempty</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -143,7 +143,7 @@ instance) Spatial.
|
|||
<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-spt.html#SP2" class="function-link"><span class="function-syntax">IXSpatial::no_detail_index</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">PL::Map::object_is_a_direction</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">Map::instance_is_a_direction</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-ins.html#SP3" class="function-link"><span class="function-syntax">IXInstances::increment_indexing_count</span></a><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#SP2">§2</a>.</li></ul>
|
||||
|
@ -245,11 +245,11 @@ table of Kinds.
|
|||
<span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">indexing_room</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">xtras_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">Data::Objects::room_being_indexed</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="function-syntax">Data::Objects::room_being_indexed</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">Data::Objects::room_being_indexed</span></span>:<br/>The Map - <a href="3-tm.html#SP1">§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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">indexing_room</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">Data::Objects::index</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">Data::Objects::index</span></span>:<br/><a href="2-ipw.html#SP2_4">§2.4</a>, <a href="2-ipw.html#SP3_6">§3.6</a><br/>Kinds Index - <a href="2-ki.html#SP1_1">§1.1</a><br/>Spatial - <a href="3-spt.html#SP3">§3</a><br/>The Player - <a href="3-tp.html#SP1">§1</a><br/>Backdrops - <a href="3-bck.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">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="identifier-syntax">depth</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">Data::Objects::index</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">Data::Objects::index</span></span>:<br/><a href="2-ipw.html#SP2_4">§2.4</a>, <a href="2-ipw.html#SP3_6">§3.6</a><br/>Kinds Index - <a href="2-ki.html#SP1_1">§1.1</a><br/>Spatial - <a href="3-spt.html#SP3">§3</a><br/>The Player - <a href="3-tp.html#SP1">§1</a><br/>Backdrops - <a href="3-bck.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">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="identifier-syntax">depth</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">depth</span><span class="plain-syntax"> == </span><span class="constant-syntax">MAX_OBJECT_INDEX_DEPTH</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"MAX_OBJECT_INDEX_DEPTH exceeded"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">noun</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nt</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">I</span><span class="plain-syntax">) {</span>
|
||||
|
@ -468,7 +468,7 @@ table of Kinds.
|
|||
<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">Data::Objects::index_instances</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">Data::Objects::index_instances</span></span>:<br/><a href="2-ipw.html#SP3_7">§3.7</a><br/>Kinds Index - <a href="2-ki.html#SP1_10">§1.10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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">depth</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Data::Objects::index_instances</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">Data::Objects::index_instances</span></span>:<br/><a href="2-ipw.html#SP3_7">§3.7</a><br/>Kinds Index - <a href="2-ki.html#SP1_10">§1.10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</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">depth</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="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">int</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="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>
|
||||
|
|
|
@ -119,7 +119,7 @@ adds backdrop contents to a room called <span class="extract"><span class="extra
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bck.html#SP1">§1</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-tp.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-fgr.html">fgr</a></li><li class="progresssection"><a href="3-se.html">se</a></li><li class="progresssection"><a href="3-ef.html">ef</a></li><li class="progresssection"><a href="3-bd.html">bd</a></li><li class="progresssection"><a href="3-spt.html">spt</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresscurrent">bck</li><li class="progresssection"><a href="3-rgn.html">rgn</a></li><li class="progressnext"><a href="3-rgn.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-tp.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-fgr.html">fgr</a></li><li class="progresssection"><a href="3-se.html">se</a></li><li class="progresssection"><a href="3-ef.html">ef</a></li><li class="progresssection"><a href="3-bd.html">bd</a></li><li class="progresssection"><a href="3-spt.html">spt</a></li><li class="progresssection"><a href="3-tp.html">tp</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="progressnext"><a href="3-rgn.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -167,7 +167,7 @@ Contents listing, so:
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-ef.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-fgr.html">fgr</a></li><li class="progresssection"><a href="3-se.html">se</a></li><li class="progresssection"><a href="3-ef.html">ef</a></li><li class="progresscurrent">bd</li><li class="progresssection"><a href="3-spt.html">spt</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-bck.html">bck</a></li><li class="progresssection"><a href="3-rgn.html">rgn</a></li><li class="progressnext"><a href="3-spt.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-ef.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-fgr.html">fgr</a></li><li class="progresssection"><a href="3-se.html">se</a></li><li class="progresssection"><a href="3-ef.html">ef</a></li><li class="progresscurrent">bd</li><li class="progresssection"><a href="3-spt.html">spt</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-bck.html">bck</a></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="progressnext"><a href="3-spt.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -119,7 +119,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="3-se.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-fgr.html">fgr</a></li><li class="progresssection"><a href="3-se.html">se</a></li><li class="progresscurrent">ef</li><li class="progresssection"><a href="3-bd.html">bd</a></li><li class="progresssection"><a href="3-spt.html">spt</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-bck.html">bck</a></li><li class="progresssection"><a href="3-rgn.html">rgn</a></li><li class="progressnext"><a href="3-bd.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-se.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-fgr.html">fgr</a></li><li class="progresssection"><a href="3-se.html">se</a></li><li class="progresscurrent">ef</li><li class="progresssection"><a href="3-bd.html">bd</a></li><li class="progresssection"><a href="3-spt.html">spt</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-bck.html">bck</a></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="progressnext"><a href="3-bd.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -165,7 +165,7 @@ to match this width, preserving the aspect ratio.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-inf.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresscurrent">fgr</li><li class="progresssection"><a href="3-se.html">se</a></li><li class="progresssection"><a href="3-ef.html">ef</a></li><li class="progresssection"><a href="3-bd.html">bd</a></li><li class="progresssection"><a href="3-spt.html">spt</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-bck.html">bck</a></li><li class="progresssection"><a href="3-rgn.html">rgn</a></li><li class="progressnext"><a href="3-se.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-inf.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresscurrent">fgr</li><li class="progresssection"><a href="3-se.html">se</a></li><li class="progresssection"><a href="3-ef.html">ef</a></li><li class="progresssection"><a href="3-bd.html">bd</a></li><li class="progresssection"><a href="3-spt.html">spt</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-bck.html">bck</a></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="progressnext"><a href="3-se.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -76,7 +76,7 @@
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-bck.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-fgr.html">fgr</a></li><li class="progresssection"><a href="3-se.html">se</a></li><li class="progresssection"><a href="3-ef.html">ef</a></li><li class="progresssection"><a href="3-bd.html">bd</a></li><li class="progresssection"><a href="3-spt.html">spt</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-bck.html">bck</a></li><li class="progresscurrent">rgn</li><li class="progressnextoff">❯</li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-bck.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-fgr.html">fgr</a></li><li class="progresssection"><a href="3-se.html">se</a></li><li class="progresssection"><a href="3-ef.html">ef</a></li><li class="progresssection"><a href="3-bd.html">bd</a></li><li class="progresssection"><a href="3-spt.html">spt</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-bck.html">bck</a></li><li class="progresscurrent">rgn</li><li class="progresssection"><a href="3-tm.html">tm</a></li><li class="progressnext"><a href="3-tm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -191,7 +191,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="3-fgr.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-fgr.html">fgr</a></li><li class="progresscurrent">se</li><li class="progresssection"><a href="3-ef.html">ef</a></li><li class="progresssection"><a href="3-bd.html">bd</a></li><li class="progresssection"><a href="3-spt.html">spt</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-bck.html">bck</a></li><li class="progresssection"><a href="3-rgn.html">rgn</a></li><li class="progressnext"><a href="3-ef.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-fgr.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-fgr.html">fgr</a></li><li class="progresscurrent">se</li><li class="progresssection"><a href="3-ef.html">ef</a></li><li class="progresssection"><a href="3-bd.html">bd</a></li><li class="progresssection"><a href="3-spt.html">spt</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-bck.html">bck</a></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="progressnext"><a href="3-ef.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -117,12 +117,12 @@ 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="identifier-syntax">object_tree_child</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ipw.html#SP3" class="function-link"><span class="function-syntax">Data::Objects::index</span></a><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="identifier-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><span class="identifier-syntax">Spatial::object_is_a_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">PL::Map::object_is_a_door</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="identifier-syntax">Map::instance_is_a_door</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="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><span class="identifier-syntax">PL::Map::object_is_a_door</span><span class="plain-syntax">(</span><span class="identifier-syntax">I2</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">Spatial::progenitor</span><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><span class="identifier-syntax">Map::instance_is_a_door</span><span class="plain-syntax">(</span><span class="identifier-syntax">I2</span><span class="plain-syntax">)) && (</span><span class="identifier-syntax">Spatial::progenitor</span><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><span class="identifier-syntax">PL::Map::get_door_data</span><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="identifier-syntax">Map::get_door_data</span><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><a href="2-ipw.html#SP3" class="function-link"><span class="function-syntax">Data::Objects::index</span></a><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><a href="2-ipw.html#SP3" class="function-link"><span class="function-syntax">Data::Objects::index</span></a><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>
|
||||
|
@ -165,7 +165,7 @@ it already turns up under its owner.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-bd.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-fgr.html">fgr</a></li><li class="progresssection"><a href="3-se.html">se</a></li><li class="progresssection"><a href="3-ef.html">ef</a></li><li class="progresssection"><a href="3-bd.html">bd</a></li><li class="progresscurrent">spt</li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-bck.html">bck</a></li><li class="progresssection"><a href="3-rgn.html">rgn</a></li><li class="progressnext"><a href="3-tp.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-bd.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-fgr.html">fgr</a></li><li class="progresssection"><a href="3-se.html">se</a></li><li class="progresssection"><a href="3-ef.html">ef</a></li><li class="progresssection"><a href="3-bd.html">bd</a></li><li class="progresscurrent">spt</li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-bck.html">bck</a></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="progressnext"><a href="3-tp.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
105
docs/index-module/3-tm.html
Normal file
105
docs/index-module/3-tm.html
Normal file
|
@ -0,0 +1,105 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>The Map</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">
|
||||
<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 'The Map' 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#3">Chapter 3: Indexing for Plugins</a></li><li><b>The Map</b></li></ul></div>
|
||||
<p class="purpose">Indexing the player's initial position.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </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">IXMap::add_to_World_index</span><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><span class="identifier-syntax">PL::SpatialMap::index_room_connections</span><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">IXMap::annotate_in_World_index</span><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><span class="identifier-syntax">Map::get_door_data</span><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><a href="2-ipw.html#SP3" class="function-link"><span class="function-syntax">Data::Objects::room_being_indexed</span></a><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">PropertyInferences::value_of</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>
|
||||
<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="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"nowhere"</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-ins.html#SP4" class="function-link"><span class="function-syntax">IXInstances::index_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">X</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="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>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-rgn.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-fgr.html">fgr</a></li><li class="progresssection"><a href="3-se.html">se</a></li><li class="progresssection"><a href="3-ef.html">ef</a></li><li class="progresssection"><a href="3-bd.html">bd</a></li><li class="progresssection"><a href="3-spt.html">spt</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-bck.html">bck</a></li><li class="progresssection"><a href="3-rgn.html">rgn</a></li><li class="progresscurrent">tm</li><li class="progressnextoff">❯</li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -93,7 +93,7 @@ usually appear anywhere.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-spt.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-fgr.html">fgr</a></li><li class="progresssection"><a href="3-se.html">se</a></li><li class="progresssection"><a href="3-ef.html">ef</a></li><li class="progresssection"><a href="3-bd.html">bd</a></li><li class="progresssection"><a href="3-spt.html">spt</a></li><li class="progresscurrent">tp</li><li class="progresssection"><a href="3-bck.html">bck</a></li><li class="progresssection"><a href="3-rgn.html">rgn</a></li><li class="progressnext"><a href="3-bck.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-spt.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifs.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-fgr.html">fgr</a></li><li class="progresssection"><a href="3-se.html">se</a></li><li class="progresssection"><a href="3-ef.html">ef</a></li><li class="progresssection"><a href="3-bd.html">bd</a></li><li class="progresssection"><a href="3-spt.html">spt</a></li><li class="progresscurrent">tp</li><li class="progresssection"><a href="3-bck.html">bck</a></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="progressnext"><a href="3-bck.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -184,6 +184,11 @@
|
|||
<spon class="sectiontitle">Regions</span></a> -
|
||||
<span class="sectionpurpose">Indexing the player's initial position.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="3-tm.html">
|
||||
<spon class="sectiontitle">The Map</span></a> -
|
||||
<span class="sectionpurpose">Indexing the player's initial position.</span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -91,7 +91,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="identifier-syntax">instance_emitted</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">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTInstances::iname</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">RTInstances::iname</span></span>:<br/><a href="4-ins.html#SP2">§2</a>, <a href="4-ins.html#SP4">§4</a><br/>Test Scripts - <a href="4-ts2.html#SP3">§3</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP5">§5</a>, <a href="4-rsfk.html#SP27_3">§27.3</a><br/>Naming - <a href="5-nmn.html#SP2">§2</a><br/>The Player - <a href="5-tp.html#SP1">§1</a><br/>Backdrops - <a href="5-bck.html#SP2_1">§2.1</a><br/>Regions - <a href="5-rgn.html#SP2">§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="function-syntax">RTInstances::iname</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">RTInstances::iname</span></span>:<br/><a href="4-ins.html#SP2">§2</a>, <a href="4-ins.html#SP4">§4</a><br/>Test Scripts - <a href="4-ts2.html#SP3">§3</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP5">§5</a>, <a href="4-rsfk.html#SP27_3">§27.3</a><br/>Naming - <a href="5-nmn.html#SP2">§2</a><br/>The Player - <a href="5-tp.html#SP1">§1</a><br/>Backdrops - <a href="5-bck.html#SP2_1">§2.1</a><br/>Regions - <a href="5-rgn.html#SP2">§2</a><br/>The Map - <a href="5-tm.html#SP2_2">§2.2</a>, <a href="5-tm.html#SP3">§3</a>, <a href="5-tm.html#SP4">§4</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">instance_iname</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -127,9 +127,7 @@ declarations) and finally return <span class="extract"><span class="extract-synt
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</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="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">Instances::to_kind</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><a href="4-ins.html#SP4" class="function-link"><span class="function-syntax">RTInstances::emit_one</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">family</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">ifdef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><a href="5-nmn.html#SP2" class="function-link"><span class="function-syntax">RTNaming::compile_small_names</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</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>
|
||||
|
@ -144,7 +142,7 @@ declarations) and finally return <span class="extract"><span class="extract-synt
|
|||
<span class="plain-syntax"> </span><a href="4-epv.html#SP1" class="function-link"><span class="function-syntax">RTPropertyValues::emit_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">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTInstances::emitted_iname</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">RTInstances::emitted_iname</span></span>:<br/>Emitting Inter - <a href="2-emt.html#SP3">§3</a><br/>Properties - <a href="4-prp.html#SP6">§6</a><br/>Emit Property Values - <a href="4-epv.html#SP1">§1</a><br/>Instance Counting - <a href="4-ic.html#SP9">§9</a><br/>Runtime Support for Kinds - <a href="4-rsfk.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">inter_name</span><span class="plain-syntax"> *</span><span class="function-syntax">RTInstances::emitted_iname</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">RTInstances::emitted_iname</span></span>:<br/>Emitting Inter - <a href="2-emt.html#SP3">§3</a><br/>Properties - <a href="4-prp.html#SP6">§6</a><br/>Emit Property Values - <a href="4-epv.html#SP1">§1</a><br/>Instance Counting - <a href="4-ic.html#SP9">§9</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP7">§7</a><br/>The Map - <a href="5-tm.html#SP2_1">§2.1</a>, <a href="5-tm.html#SP2_2">§2.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="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="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><a href="4-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::iname</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">I</span><span class="plain-syntax">-></span><span class="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">instance_emitted</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
|
||||
|
@ -154,7 +152,7 @@ declarations) and finally return <span class="extract"><span class="extract-synt
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">iname</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">RTInstances::package</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">RTInstances::package</span></span>:<br/>Emit Property Values - <a href="4-epv.html#SP2">§2</a><br/>Naming - <a href="5-nmn.html#SP2">§2</a><br/>Parsing - <a href="5-prs.html#SP2">§2</a><br/>Backdrops - <a href="5-bck.html#SP1">§1</a><br/>Regions - <a href="5-rgn.html#SP1">§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="identifier-syntax">package_request</span><span class="plain-syntax"> *</span><span class="function-syntax">RTInstances::package</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">RTInstances::package</span></span>:<br/>Emit Property Values - <a href="4-epv.html#SP2">§2</a><br/>Naming - <a href="5-nmn.html#SP2">§2</a><br/>Parsing - <a href="5-prs.html#SP2">§2</a><br/>Backdrops - <a href="5-bck.html#SP1">§1</a><br/>Regions - <a href="5-rgn.html#SP1">§1</a><br/>The Map - <a href="5-tm.html#SP3">§3</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="4-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="plain-syntax">); </span><span class="comment-syntax"> Thus forcing this to exist...</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="identifier-syntax">icd</span><span class="plain-syntax">.</span><span class="element-syntax">instance_package</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -81,7 +81,7 @@ already been set up, or not. Here's not:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::begin</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">Routines::begin</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Text Literals - <a href="4-tl.html#SP13_2">§13.2</a><br/>Text Substitutions - <a href="4-ts.html#SP11">§11</a><br/>Responses - <a href="4-rsp.html#SP5_1">§5.1</a>, <a href="4-rsp.html#SP5_2">§5.2</a>, <a href="4-rsp.html#SP6_2">§6.2</a><br/>Equations Support - <a href="4-es.html#SP1">§1</a><br/>Test Scripts - <a href="4-ts2.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">§1.1</a>, <a href="4-uoart.html#SP1_2">§1.2</a><br/>Variables - <a href="4-vrb.html#SP5_1">§5.1</a><br/>Measurements - <a href="4-msr.html#SP1">§1</a><br/>Adjectives - <a href="4-adj.html#SP3_2">§3.2</a>, <a href="4-adj.html#SP5">§5</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP19_3">§19.3</a>, <a href="4-rsfk.html#SP27_1">§27.1</a>, <a href="4-rsfk.html#SP27_2">§27.2</a>, <a href="4-rsfk.html#SP27_3">§27.3</a>, <a href="4-rsfk.html#SP27_4">§27.4</a>, <a href="4-rsfk.html#SP27_5">§27.5</a>, <a href="4-rsfk.html#SP27_6_1">§27.6.1</a>, <a href="4-rsfk.html#SP27_6_2">§27.6.2</a>, <a href="4-rsfk.html#SP27_6_3">§27.6.3</a>, <a href="4-rsfk.html#SP27_6_4">§27.6.4</a>, <a href="4-rsfk.html#SP27_6_5">§27.6.5</a>, <a href="4-rsfk.html#SP27_6_6">§27.6.6</a>, <a href="4-rsfk.html#SP28">§28</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4_1">§4.1</a>, <a href="4-vart.html#SP4_2">§4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP4_2">§4.2</a>, <a href="4-rart.html#SP6">§6</a>, <a href="4-rart.html#SP18_1">§18.1</a>, <a href="4-rart.html#SP18_2">§18.2</a>, <a href="4-rart.html#SP18_3">§18.3</a>, <a href="4-rart.html#SP18_4">§18.4</a>, <a href="4-rart.html#SP18_5">§18.5</a>, <a href="4-rart.html#SP18_6">§18.6</a>, <a href="4-rart.html#SP19">§19</a>, <a href="4-rart.html#SP23">§23</a><br/>Literal Patterns at Run Time - <a href="4-lpart.html#SP2">§2</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">§2</a>, <a href="4-rsft.html#SP5">§5</a><br/>Naming - <a href="5-nmn.html#SP2">§2</a><br/>Backdrops - <a href="5-bck.html#SP2_1">§2.1</a>, <a href="5-bck.html#SP2_2">§2.2</a><br/>Regions - <a href="5-rgn.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::begin</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">Routines::begin</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Text Literals - <a href="4-tl.html#SP13_2">§13.2</a><br/>Text Substitutions - <a href="4-ts.html#SP11">§11</a><br/>Responses - <a href="4-rsp.html#SP5_1">§5.1</a>, <a href="4-rsp.html#SP5_2">§5.2</a>, <a href="4-rsp.html#SP6_2">§6.2</a><br/>Equations Support - <a href="4-es.html#SP1">§1</a><br/>Test Scripts - <a href="4-ts2.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">§1.1</a>, <a href="4-uoart.html#SP1_2">§1.2</a><br/>Variables - <a href="4-vrb.html#SP5_1">§5.1</a><br/>Measurements - <a href="4-msr.html#SP1">§1</a><br/>Adjectives - <a href="4-adj.html#SP3_2">§3.2</a>, <a href="4-adj.html#SP5">§5</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP19_3">§19.3</a>, <a href="4-rsfk.html#SP27_1">§27.1</a>, <a href="4-rsfk.html#SP27_2">§27.2</a>, <a href="4-rsfk.html#SP27_3">§27.3</a>, <a href="4-rsfk.html#SP27_4">§27.4</a>, <a href="4-rsfk.html#SP27_5">§27.5</a>, <a href="4-rsfk.html#SP27_6_1">§27.6.1</a>, <a href="4-rsfk.html#SP27_6_2">§27.6.2</a>, <a href="4-rsfk.html#SP27_6_3">§27.6.3</a>, <a href="4-rsfk.html#SP27_6_4">§27.6.4</a>, <a href="4-rsfk.html#SP27_6_5">§27.6.5</a>, <a href="4-rsfk.html#SP27_6_6">§27.6.6</a>, <a href="4-rsfk.html#SP28">§28</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4_1">§4.1</a>, <a href="4-vart.html#SP4_2">§4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP4_2">§4.2</a>, <a href="4-rart.html#SP6">§6</a>, <a href="4-rart.html#SP18_1">§18.1</a>, <a href="4-rart.html#SP18_2">§18.2</a>, <a href="4-rart.html#SP18_3">§18.3</a>, <a href="4-rart.html#SP18_4">§18.4</a>, <a href="4-rart.html#SP18_5">§18.5</a>, <a href="4-rart.html#SP18_6">§18.6</a>, <a href="4-rart.html#SP19">§19</a>, <a href="4-rart.html#SP23">§23</a><br/>Literal Patterns at Run Time - <a href="4-lpart.html#SP2">§2</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">§2</a>, <a href="4-rsft.html#SP5">§5</a><br/>Naming - <a href="5-nmn.html#SP2">§2</a><br/>Backdrops - <a href="5-bck.html#SP2_1">§2.1</a>, <a href="5-bck.html#SP2_2">§2.2</a><br/>Regions - <a href="5-rgn.html#SP2">§2</a><br/>The Map - <a href="5-tm.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</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">return</span><span class="plain-syntax"> </span><a href="4-rtn.html#SP3" class="function-link"><span class="function-syntax">Routines::begin_framed</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -140,7 +140,7 @@ did not.
|
|||
</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">Routines::end</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">Routines::end</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Text Literals - <a href="4-tl.html#SP13_2">§13.2</a><br/>Text Substitutions - <a href="4-ts.html#SP11">§11</a><br/>Responses - <a href="4-rsp.html#SP5_1">§5.1</a>, <a href="4-rsp.html#SP5_2">§5.2</a>, <a href="4-rsp.html#SP6_2">§6.2</a><br/>Equations Support - <a href="4-es.html#SP1">§1</a><br/>Test Scripts - <a href="4-ts2.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">§1.1</a>, <a href="4-uoart.html#SP1_2">§1.2</a><br/>Variables - <a href="4-vrb.html#SP5_1">§5.1</a><br/>Measurements - <a href="4-msr.html#SP1">§1</a><br/>Adjectives - <a href="4-adj.html#SP3_2">§3.2</a>, <a href="4-adj.html#SP5">§5</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP19_3">§19.3</a>, <a href="4-rsfk.html#SP27_1">§27.1</a>, <a href="4-rsfk.html#SP27_2">§27.2</a>, <a href="4-rsfk.html#SP27_3">§27.3</a>, <a href="4-rsfk.html#SP27_4">§27.4</a>, <a href="4-rsfk.html#SP27_5">§27.5</a>, <a href="4-rsfk.html#SP27_6_1">§27.6.1</a>, <a href="4-rsfk.html#SP27_6_2">§27.6.2</a>, <a href="4-rsfk.html#SP27_6_3">§27.6.3</a>, <a href="4-rsfk.html#SP27_6_4">§27.6.4</a>, <a href="4-rsfk.html#SP27_6_5">§27.6.5</a>, <a href="4-rsfk.html#SP27_6_6">§27.6.6</a>, <a href="4-rsfk.html#SP28">§28</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4_1">§4.1</a>, <a href="4-vart.html#SP4_2">§4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP4_2">§4.2</a>, <a href="4-rart.html#SP6">§6</a>, <a href="4-rart.html#SP18_1">§18.1</a>, <a href="4-rart.html#SP18_2">§18.2</a>, <a href="4-rart.html#SP18_3">§18.3</a>, <a href="4-rart.html#SP18_4">§18.4</a>, <a href="4-rart.html#SP18_5">§18.5</a>, <a href="4-rart.html#SP18_6">§18.6</a>, <a href="4-rart.html#SP19">§19</a>, <a href="4-rart.html#SP23">§23</a><br/>Literal Patterns at Run Time - <a href="4-lpart.html#SP2">§2</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">§2</a>, <a href="4-rsft.html#SP5">§5</a><br/>Naming - <a href="5-nmn.html#SP2">§2</a><br/>Backdrops - <a href="5-bck.html#SP2_1">§2.1</a>, <a href="5-bck.html#SP2_2">§2.2</a><br/>Regions - <a href="5-rgn.html#SP2">§2</a></span></button><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="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Routines::end</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">Routines::end</span></span>:<br/>List Together - <a href="4-lt.html#SP3_1">§3.1</a><br/>Text Literals - <a href="4-tl.html#SP13_2">§13.2</a><br/>Text Substitutions - <a href="4-ts.html#SP11">§11</a><br/>Responses - <a href="4-rsp.html#SP5_1">§5.1</a>, <a href="4-rsp.html#SP5_2">§5.2</a>, <a href="4-rsp.html#SP6_2">§6.2</a><br/>Equations Support - <a href="4-es.html#SP1">§1</a><br/>Test Scripts - <a href="4-ts2.html#SP3">§3</a><br/>Internal Test Cases - <a href="4-itc.html#SP4">§4</a><br/>Use Options at Run Time - <a href="4-uoart.html#SP1_1">§1.1</a>, <a href="4-uoart.html#SP1_2">§1.2</a><br/>Variables - <a href="4-vrb.html#SP5_1">§5.1</a><br/>Measurements - <a href="4-msr.html#SP1">§1</a><br/>Adjectives - <a href="4-adj.html#SP3_2">§3.2</a>, <a href="4-adj.html#SP5">§5</a><br/>Runtime Support for Kinds - <a href="4-rsfk.html#SP19_3">§19.3</a>, <a href="4-rsfk.html#SP27_1">§27.1</a>, <a href="4-rsfk.html#SP27_2">§27.2</a>, <a href="4-rsfk.html#SP27_3">§27.3</a>, <a href="4-rsfk.html#SP27_4">§27.4</a>, <a href="4-rsfk.html#SP27_5">§27.5</a>, <a href="4-rsfk.html#SP27_6_1">§27.6.1</a>, <a href="4-rsfk.html#SP27_6_2">§27.6.2</a>, <a href="4-rsfk.html#SP27_6_3">§27.6.3</a>, <a href="4-rsfk.html#SP27_6_4">§27.6.4</a>, <a href="4-rsfk.html#SP27_6_5">§27.6.5</a>, <a href="4-rsfk.html#SP27_6_6">§27.6.6</a>, <a href="4-rsfk.html#SP28">§28</a><br/>Extension Files at Run Time - <a href="4-efart.html#SP1">§1</a><br/>Verbs at Run Time - <a href="4-vart.html#SP4_1">§4.1</a>, <a href="4-vart.html#SP4_2">§4.2</a><br/>Relations at Run Time - <a href="4-rart.html#SP4">§4</a>, <a href="4-rart.html#SP4_2">§4.2</a>, <a href="4-rart.html#SP6">§6</a>, <a href="4-rart.html#SP18_1">§18.1</a>, <a href="4-rart.html#SP18_2">§18.2</a>, <a href="4-rart.html#SP18_3">§18.3</a>, <a href="4-rart.html#SP18_4">§18.4</a>, <a href="4-rart.html#SP18_5">§18.5</a>, <a href="4-rart.html#SP18_6">§18.6</a>, <a href="4-rart.html#SP19">§19</a>, <a href="4-rart.html#SP23">§23</a><br/>Literal Patterns at Run Time - <a href="4-lpart.html#SP2">§2</a><br/>Runtime Support for Tables - <a href="4-rsft.html#SP2">§2</a>, <a href="4-rsft.html#SP5">§5</a><br/>Naming - <a href="5-nmn.html#SP2">§2</a><br/>Backdrops - <a href="5-bck.html#SP2_1">§2.1</a>, <a href="5-bck.html#SP2_2">§2.2</a><br/>Regions - <a href="5-rgn.html#SP2">§2</a><br/>The Map - <a href="5-tm.html#SP4">§4</a></span></button><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="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R_kind</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::deduced_function_kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">currently_compiling_in_frame</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">kernel_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, *</span><span class="identifier-syntax">public_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">currently_compiling_iname</span><span class="plain-syntax">;</span>
|
||||
|
|
|
@ -142,7 +142,7 @@
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-bck.html#SP2">§2</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-tp.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresscurrent">bck</li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progressnext"><a href="5-rgn.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-tp.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresscurrent">bck</li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progressnext"><a href="5-rgn.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -211,7 +211,7 @@ around it, in byte-accessible memory.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ef.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresscurrent">bd</li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progressnext"><a href="5-spt.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ef.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresscurrent">bd</li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progressnext"><a href="5-spt.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -129,7 +129,7 @@
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure external_file_compilation_data is private to this section.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-se.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresscurrent">ef</li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progressnext"><a href="5-bd.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-se.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresscurrent">ef</li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progressnext"><a href="5-bd.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-prs.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresscurrent">fgr</li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progressnext"><a href="5-se.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-prs.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresscurrent">fgr</li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progressnext"><a href="5-se.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -186,7 +186,7 @@ function togglePopup(material_id) {
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure short_name_notice is private to this section.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-rsft.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresscurrent">nmn</li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progressnext"><a href="5-prs.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-rsft.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresscurrent">nmn</li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progressnext"><a href="5-prs.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -148,7 +148,7 @@ for the kinds we inherit from.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-nmn.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresscurrent">prs</li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progressnext"><a href="5-fgr.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-nmn.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresscurrent">prs</li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progressnext"><a href="5-fgr.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -108,7 +108,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="5-bck.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresscurrent">rgn</li><li class="progressnextoff">❯</li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-bck.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresscurrent">rgn</li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progressnext"><a href="5-tm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -77,7 +77,7 @@
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-fgr.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresscurrent">se</li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progressnext"><a href="5-ef.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-fgr.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresscurrent">se</li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progressnext"><a href="5-ef.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -142,7 +142,7 @@ be compiled, so this code is never used.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-bd.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresscurrent">spt</li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progressnext"><a href="5-tp.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-bd.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresscurrent">spt</li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progressnext"><a href="5-tp.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
350
docs/runtime-module/5-tm.html
Normal file
350
docs/runtime-module/5-tm.html
Normal file
|
@ -0,0 +1,350 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>The Map</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">
|
||||
<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="index.html"><span class="selectedlink">runtime</span></a></li>
|
||||
<li><a href="../if-module/index.html">if</a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="../index-module/index.html">index</a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../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 'The Map' 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">runtime</a></li><li><a href="index.html#5">Chapter 5: Plugin Support</a></li><li><b>The Map</b></li></ul></div>
|
||||
<ul class="toc"><li><a href="5-tm.html#SP3">§3. Two-sided doors</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </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">RTMap::new_direction_iname</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">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PR</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::synoptic_package</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DIRECTIONS_HAP</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DIRECTION_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">PR</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>One of the few early breaks with I6 practice was that I7 stores the
|
||||
map differently at run-time compared to earlier I6 games.
|
||||
</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">RTMap::compile_model_tables</span><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="5-tm.html#SP2_1" class="named-paragraph-link"><span class="named-paragraph">Declare I6 constants for the directions</span><span class="named-paragraph-number">2.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-tm.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Compile the I6 Map-Storage array</span><span class="named-paragraph-number">2.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="SP2_1" class="paragraph-anchor"></a><b>§2.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">2.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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ndi</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">NO_DIRECTIONS_HL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::named_numeric_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">ndi</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">Map::number_of_directions</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><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">ndi</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_direction</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::named_iname_constant</span></a><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="identifier-syntax">direction_iname</span><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-ins.html#SP4" class="function-link"><span class="function-syntax">RTInstances::emitted_iname</span></a><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="5-tm.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_2" class="paragraph-anchor"></a><b>§2.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">2.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">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><a href="4-ins.html#SP4" class="function-link"><span class="function-syntax">RTInstances::emitted_iname</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</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">MAP_STORAGE_HL</span><span class="plain-syntax">);</span>
|
||||
<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="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::named_array_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">words_used</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">Task::wraps_existing_storyfile</span><span class="plain-syntax">()) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_divider</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"minimal, as there are no rooms"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><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">words_used</span><span class="plain-syntax"> = </span><span class="constant-syntax">4</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><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_divider</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"one row per room"</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::object_is_a_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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Map::number_of_directions</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">N</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">to</span><span class="plain-syntax"> = </span><span class="identifier-syntax">MAP_EXIT</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</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">to</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><a href="4-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::iname</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">else</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_numeric_entry</span></a><span class="plain-syntax">(0);</span>
|
||||
<span class="plain-syntax"> }</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">divider</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">divider</span><span class="plain-syntax">, </span><span class="string-syntax">"Exits from: %~I"</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-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_divider</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">divider</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">divider</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_available</span></a><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">iname</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-tm.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. Two-sided doors. </b>The I6 implementation of two-way doors and of what, in I7, are called backdrops,
|
||||
is quite complicated; and the Inter code we generate follows that traditional
|
||||
form. See the Inform Designer's Manual, fourth edition (the "DM4") for explanations.
|
||||
We are essentially trying to program all of that automatically, which is why these
|
||||
awkward multi-purpose I6 properties (<span class="extract"><span class="extract-syntax">door_to</span></span>, <span class="extract"><span class="extract-syntax">found_in</span></span>, etc.) have no direct
|
||||
I7 equivalents.
|
||||
</p>
|
||||
|
||||
<p class="commentary">These little structures are needed to remember routines to compile later:
|
||||
</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">door_dir_notice</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ddn_iname</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">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">door</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">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R1</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">instance</span><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">struct</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="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">door_dir_notice</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">door_to_notice</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">dtn_iname</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">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">door</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">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R1</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">instance</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">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">door_to_notice</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">RTMap::door_dir_for_2_sided</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">R1</span><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="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="plain-syntax"> </span><span class="reserved-syntax">door_dir_notice</span><span class="plain-syntax"> *</span><span class="identifier-syntax">notice</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">door_dir_notice</span><span class="plain-syntax">);</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="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TSD_DOOR_DIR_FN_HL</span><span class="plain-syntax">, </span><a href="4-ins.html#SP4" class="function-link"><span class="function-syntax">RTInstances::package</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">notice</span><span class="plain-syntax">-></span><span class="element-syntax">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">notice</span><span class="plain-syntax">-></span><span class="element-syntax">R1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">R1</span><span class="plain-syntax">;</span>
|
||||
<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="identifier-syntax">D1</span><span class="plain-syntax">;</span>
|
||||
<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="identifier-syntax">D2</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">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="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">RTMap::door_to_for_2_sided</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">R1</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">R2</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">door_to_notice</span><span class="plain-syntax"> *</span><span class="identifier-syntax">notice</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">door_to_notice</span><span class="plain-syntax">);</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="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TSD_DOOR_TO_FN_HL</span><span class="plain-syntax">, </span><a href="4-ins.html#SP4" class="function-link"><span class="function-syntax">RTInstances::package</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">notice</span><span class="plain-syntax">-></span><span class="element-syntax">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">notice</span><span class="plain-syntax">-></span><span class="element-syntax">R1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">R1</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">notice</span><span class="plain-syntax">-></span><span class="element-syntax">R2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">R2</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">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="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="function-syntax">RTMap::found_in_for_2_sided</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">R1</span><span class="plain-syntax">, </span><span class="identifier-syntax">instance</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">package_request</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PR</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::package_within</span></a><span class="plain-syntax">(</span><span class="constant-syntax">INLINE_PROPERTIES_HAP</span><span class="plain-syntax">, </span><a href="4-ins.html#SP4" class="function-link"><span class="function-syntax">RTInstances::package</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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><a href="2-hrr.html#SP4" class="function-link"><span class="function-syntax">Hierarchy::make_iname_in</span></a><span class="plain-syntax">(</span><span class="constant-syntax">INLINE_PROPERTY_HL</span><span class="plain-syntax">, </span><span class="identifier-syntax">PR</span><span class="plain-syntax">);</span>
|
||||
<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="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::named_array_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><a href="4-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R1</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_iname_entry</span></a><span class="plain-syntax">(</span><a href="4-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">R2</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><a href="2-emt.html#SP3" class="function-link"><span class="function-syntax">Emit::array_end</span></a><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><span class="reserved-syntax">return</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="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="SP4" class="paragraph-anchor"></a><b>§4. </b>Redeeming those notices:
|
||||
</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">RTMap::write_door_dir_routines</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">door_dir_notice</span><span class="plain-syntax"> *</span><span class="identifier-syntax">notice</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">notice</span><span class="plain-syntax">, </span><span class="reserved-syntax">door_dir_notice</span><span class="plain-syntax">) {</span>
|
||||
<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><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="plain-syntax"> </span><span class="identifier-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::add_internal_local_c</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"loc"</span><span class="plain-syntax">, </span><span class="string-syntax">"room of actor"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::declare_this</span><span class="plain-syntax">(</span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</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">STORE_BIP</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>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::ref_symbol</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">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_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">K_value</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">LOCATION_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</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="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</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">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><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</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">EQ_BIP</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>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_symbol</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">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_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">K_value</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">THEDARK_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</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="plain-syntax"> </span><span class="identifier-syntax">Produce::code</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="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>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</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">STORE_BIP</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>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::ref_symbol</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">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_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">K_value</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">REAL_LOCATION_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</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="plain-syntax"> </span><span class="identifier-syntax">Produce::up</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="plain-syntax"> </span><span class="identifier-syntax">Produce::up</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="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</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">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><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</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">EQ_BIP</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>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_symbol</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">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_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">K_value</span><span class="plain-syntax">, </span><a href="4-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">notice</span><span class="plain-syntax">-></span><span class="element-syntax">R1</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</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="plain-syntax"> </span><span class="identifier-syntax">Produce::code</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="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>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</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">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><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_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">K_value</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Map::get_value_of_opposite_property</span><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><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</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="plain-syntax"> </span><span class="identifier-syntax">Produce::up</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="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</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">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><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_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">K_value</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="4-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Map::get_value_of_opposite_property</span><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><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
|
||||
<span class="plain-syntax"> </span><a href="4-rtn.html#SP4" class="function-link"><span class="function-syntax">Routines::end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</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">RTMap::write_door_to_routines</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">door_to_notice</span><span class="plain-syntax"> *</span><span class="identifier-syntax">notice</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">notice</span><span class="plain-syntax">, </span><span class="reserved-syntax">door_to_notice</span><span class="plain-syntax">) {</span>
|
||||
<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><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="plain-syntax"> </span><span class="identifier-syntax">local_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::add_internal_local_c</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"loc"</span><span class="plain-syntax">, </span><span class="string-syntax">"room of actor"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_symbol</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc_s</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LocalVariables::declare_this</span><span class="plain-syntax">(</span><span class="identifier-syntax">loc</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">8</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</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">STORE_BIP</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>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::ref_symbol</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">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_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">K_value</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">LOCATION_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</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="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</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">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><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</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">EQ_BIP</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>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_symbol</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">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_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">K_value</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">THEDARK_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</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="plain-syntax"> </span><span class="identifier-syntax">Produce::code</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="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>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</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">STORE_BIP</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>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::ref_symbol</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">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_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">K_value</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">REAL_LOCATION_HL</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</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="plain-syntax"> </span><span class="identifier-syntax">Produce::up</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="plain-syntax"> </span><span class="identifier-syntax">Produce::up</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="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</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">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><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</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">EQ_BIP</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>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_symbol</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">K_value</span><span class="plain-syntax">, </span><span class="identifier-syntax">loc_s</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_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">K_value</span><span class="plain-syntax">, </span><a href="4-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">notice</span><span class="plain-syntax">-></span><span class="element-syntax">R1</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</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="plain-syntax"> </span><span class="identifier-syntax">Produce::code</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="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>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</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">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><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_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">K_value</span><span class="plain-syntax">, </span><a href="4-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">notice</span><span class="plain-syntax">-></span><span class="element-syntax">R2</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</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="plain-syntax"> </span><span class="identifier-syntax">Produce::up</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="plain-syntax"> </span><span class="identifier-syntax">Produce::up</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="plain-syntax"> </span><span class="identifier-syntax">Produce::inv_primitive</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">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><a href="2-emt.html#SP2" class="function-link"><span class="function-syntax">Emit::tree</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::val_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">K_value</span><span class="plain-syntax">, </span><a href="4-ins.html#SP1" class="function-link"><span class="function-syntax">RTInstances::iname</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">notice</span><span class="plain-syntax">-></span><span class="element-syntax">R1</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Produce::up</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="plain-syntax"> </span><a href="4-rtn.html#SP4" class="function-link"><span class="function-syntax">Routines::end</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">save</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. </b><span class="extract"><span class="extract-syntax">ident</span></span> is an identifier name for the direction instance. It seems redundant
|
||||
here because surely if we know <span class="extract"><span class="extract-syntax">I</span></span>, we know its runtime representation; but
|
||||
that's not true — we need to call this function at a time when the final
|
||||
identifier names for instance have not yet been settled.
|
||||
</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">RTMap::set_map_schemas</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="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">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ident</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="identifier-syntax">direction_iname</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">task_functions</span><span class="plain-syntax">[</span><span class="identifier-syntax">TEST_ATOM_TASK</span><span class="plain-syntax">] =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"(MapConnection(*2,%n) == *1)"</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">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">task_functions</span><span class="plain-syntax">[</span><span class="identifier-syntax">NOW_ATOM_TRUE_TASK</span><span class="plain-syntax">] =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"AssertMapConnection(*2,%n,*1)"</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">bp</span><span class="plain-syntax">-></span><span class="identifier-syntax">task_functions</span><span class="plain-syntax">[</span><span class="identifier-syntax">NOW_ATOM_FALSE_TASK</span><span class="plain-syntax">] =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Calculus::Schemas::new</span><span class="plain-syntax">(</span><span class="string-syntax">"AssertMapUnconnection(*2,%n,*1)"</span><span class="plain-syntax">, </span><span class="identifier-syntax">ident</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-rgn.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresssection"><a href="5-tp.html">tp</a></li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresscurrent">tm</li><li class="progressnextoff">❯</li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -114,7 +114,7 @@ the function <span class="extract"><span class="extract-syntax">ChangePlayer</sp
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-spt.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresscurrent">tp</li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progressnext"><a href="5-bck.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-spt.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-rm.html">1</a></li><li class="progresschapter"><a href="2-hrr.html">2</a></li><li class="progresschapter"><a href="3-ad.html">3</a></li><li class="progresschapter"><a href="4-fc.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-nmn.html">nmn</a></li><li class="progresssection"><a href="5-prs.html">prs</a></li><li class="progresssection"><a href="5-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresssection"><a href="5-ef.html">ef</a></li><li class="progresssection"><a href="5-bd.html">bd</a></li><li class="progresssection"><a href="5-spt.html">spt</a></li><li class="progresscurrent">tp</li><li class="progresssection"><a href="5-bck.html">bck</a></li><li class="progresssection"><a href="5-rgn.html">rgn</a></li><li class="progresssection"><a href="5-tm.html">tm</a></li><li class="progressnext"><a href="5-bck.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -349,6 +349,11 @@
|
|||
<spon class="sectiontitle">Regions</span></a> -
|
||||
<span class="sectionpurpose"></span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="5-tm.html">
|
||||
<spon class="sectiontitle">The Map</span></a> -
|
||||
<span class="sectionpurpose"></span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
Total memory consumption was 258576K = 253 MB
|
||||
|
||||
62.4% was used for 1337985 objects, in 278606 frames in 202 x 800K = 161600K = 157 MB:
|
||||
62.4% was used for 1337984 objects, in 278605 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 2595 x 100 = 259500 objects, 14615040 bytes
|
||||
3.9% parse_node 129993 objects, 10399440 bytes
|
||||
2.8% verb_conjugation 160 objects, 7425280 bytes
|
||||
2.6% parse_node_annotation_array 431 x 500 = 215500 objects, 6909792 bytes
|
||||
2.4% linked_list 11779 objects, 6596240 bytes
|
||||
2.4% linked_list 11780 objects, 6596800 bytes
|
||||
2.3% inter_symbol_array 70 x 1024 = 71680 objects, 6310080 bytes
|
||||
1.2% pcalc_prop_array 24 x 1000 = 24000 objects, 3264768 bytes
|
||||
1.2% map_data 670 objects, 3178480 bytes
|
||||
|
@ -91,8 +91,8 @@ Total memory consumption was 258576K = 253 MB
|
|||
---- parse_node_tree 20 objects, 17280 bytes
|
||||
---- match_avinue_array 1 x 1000 objects, 16032 bytes
|
||||
---- linked_list_item_array 1 x 1000 objects, 16032 bytes
|
||||
---- method 325 objects, 15600 bytes
|
||||
---- to_phrase_request 59 objects, 15576 bytes
|
||||
---- method 323 objects, 15504 bytes
|
||||
---- adjective 137 objects, 14248 bytes
|
||||
---- literal_text 147 objects, 12936 bytes
|
||||
---- adjective_iname_holder 320 objects, 12800 bytes
|
||||
|
@ -124,23 +124,23 @@ Total memory consumption was 258576K = 253 MB
|
|||
---- instance_usage_array 1 x 200 objects, 3232 bytes
|
||||
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
|
||||
---- method_set 100 objects, 3200 bytes
|
||||
---- definition 44 objects, 3168 bytes
|
||||
---- compatibility_specification 66 objects, 3168 bytes
|
||||
---- definition 44 objects, 3168 bytes
|
||||
---- inform_extension 19 objects, 3040 bytes
|
||||
---- either_or_property_data 62 objects, 2976 bytes
|
||||
---- property_of_value_storage 93 objects, 2976 bytes
|
||||
---- submodule_request 72 objects, 2880 bytes
|
||||
---- inter_construct 32 objects, 2560 bytes
|
||||
---- part_of_inference_data 79 objects, 2528 bytes
|
||||
---- parentage_inference_data 79 objects, 2528 bytes
|
||||
---- part_of_inference_data 79 objects, 2528 bytes
|
||||
---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes
|
||||
---- kind_constructor_casting_rule_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
|
||||
---- table_contribution_array 1 x 100 objects, 1632 bytes
|
||||
---- kind_interaction 39 objects, 1560 bytes
|
||||
---- inter_annotation_form 37 objects, 1480 bytes
|
||||
---- plugin 23 objects, 1472 bytes
|
||||
|
@ -148,52 +148,52 @@ Total memory consumption was 258576K = 253 MB
|
|||
---- noun_filter_token 22 objects, 1408 bytes
|
||||
---- scene 1 object, 1344 bytes
|
||||
---- special_meaning_holder 33 objects, 1320 bytes
|
||||
---- constant_phrase 20 objects, 1280 bytes
|
||||
---- build_script 40 objects, 1280 bytes
|
||||
---- constant_phrase 20 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
|
||||
---- code_generation 1 object, 864 bytes
|
||||
---- control_structure_phrase 12 objects, 864 bytes
|
||||
---- code_generation 1 object, 864 bytes
|
||||
---- cached_understanding 21 objects, 840 bytes
|
||||
---- runtime_kind_structure 13 objects, 832 bytes
|
||||
---- phrase_option_array 1 x 100 objects, 824 bytes
|
||||
---- pipeline_stage 17 objects, 816 bytes
|
||||
---- target_vm 6 objects, 816 bytes
|
||||
---- pipeline_stage 17 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
|
||||
---- 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
|
||||
---- module_package 10 objects, 400 bytes
|
||||
---- equation 4 objects, 416 bytes
|
||||
---- dval_written 10 objects, 400 bytes
|
||||
---- article_usage 8 objects, 384 bytes
|
||||
---- module_package 10 objects, 400 bytes
|
||||
---- bp_family 12 objects, 384 bytes
|
||||
---- article_usage 8 objects, 384 bytes
|
||||
---- source_file 5 objects, 360 bytes
|
||||
---- inbuild_genre 7 objects, 336 bytes
|
||||
---- grammatical_category 8 objects, 320 bytes
|
||||
---- pronoun 8 objects, 320 bytes
|
||||
---- door_dir_notice 5 objects, 320 bytes
|
||||
---- pronoun 8 objects, 320 bytes
|
||||
---- grammatical_category 8 objects, 320 bytes
|
||||
---- build_step 4 objects, 288 bytes
|
||||
---- up_family 9 objects, 288 bytes
|
||||
---- door_to_notice 5 objects, 280 bytes
|
||||
---- explicit_bp_data 5 objects, 280 bytes
|
||||
---- door_to_notice 5 objects, 280 bytes
|
||||
---- inform_pipeline 4 objects, 256 bytes
|
||||
---- verb_usage_tier 5 objects, 240 bytes
|
||||
---- adjective_meaning_family 7 objects, 224 bytes
|
||||
|
@ -201,34 +201,34 @@ Total memory consumption was 258576K = 253 MB
|
|||
---- test_scenario 1 object, 208 bytes
|
||||
---- build_skill 5 objects, 200 bytes
|
||||
---- compilation_unit 5 objects, 200 bytes
|
||||
---- kit_dependency 4 objects, 192 bytes
|
||||
---- plural_dictionary_entry 4 objects, 192 bytes
|
||||
---- kit_dependency 4 objects, 192 bytes
|
||||
---- inform_project 1 object, 176 bytes
|
||||
---- pointer_allocation 2 objects, 160 bytes
|
||||
---- inter_architecture 4 objects, 160 bytes
|
||||
---- link_instruction 4 objects, 160 bytes
|
||||
---- inter_architecture 4 objects, 160 bytes
|
||||
---- inference_subject_family 5 objects, 160 bytes
|
||||
---- pointer_allocation 2 objects, 160 bytes
|
||||
---- code_generation_target 4 objects, 160 bytes
|
||||
---- element_activation 4 objects, 128 bytes
|
||||
---- codegen_pipeline 1 object, 128 bytes
|
||||
---- element_activation 4 objects, 128 bytes
|
||||
---- inbuild_nest 3 objects, 120 bytes
|
||||
---- inform_kit_ittt 2 objects, 96 bytes
|
||||
---- list_together_routine 2 objects, 80 bytes
|
||||
---- article 2 objects, 80 bytes
|
||||
---- compile_task_data 1 object, 80 bytes
|
||||
---- article 2 objects, 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
|
||||
---- HTML_file_state 1 object, 48 bytes
|
||||
---- figures_data 1 object, 48 bytes
|
||||
---- parse_name_notice 1 object, 40 bytes
|
||||
---- by_routine_bp_data 1 object, 40 bytes
|
||||
---- star_invention 1 object, 48 bytes
|
||||
---- kind_template_definition 1 object, 40 bytes
|
||||
---- by_routine_bp_data 1 object, 40 bytes
|
||||
---- parse_name_notice 1 object, 40 bytes
|
||||
---- loop_over_scope 1 object, 40 bytes
|
||||
|
||||
37.5% was used for memory not allocated for objects:
|
||||
|
||||
15.9% text stream storage 42248372 bytes in 265816 claims
|
||||
15.9% text stream storage 42248420 bytes in 265816 claims
|
||||
3.5% dictionary storage 9278976 bytes in 16372 claims
|
||||
---- sorting 1064 bytes in 3 claims
|
||||
2.7% source text 7200000 bytes in 3 claims
|
||||
|
@ -244,5 +244,5 @@ Total memory consumption was 258576K = 253 MB
|
|||
---- emitter array storage 12320 bytes in 8 claims
|
||||
---- code generation workspace for objects 9200 bytes in 9 claims
|
||||
|
||||
19.9% was overhead - 52765592 bytes = 51528K = 50 MB
|
||||
19.9% was overhead - 52765128 bytes = 51528K = 50 MB
|
||||
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
100.0% in inform7 run
|
||||
67.8% in compilation to Inter
|
||||
25.8% in //Phrases::Manager::compile_first_block//
|
||||
67.2% in compilation to Inter
|
||||
25.6% in //Phrases::Manager::compile_first_block//
|
||||
8.9% in //Phrases::Manager::compile_as_needed//
|
||||
6.7% in //Strings::compile_responses//
|
||||
6.4% in //InferenceSubjects::emit_all//
|
||||
6.8% in //Strings::compile_responses//
|
||||
5.9% in //InferenceSubjects::emit_all//
|
||||
4.4% in //MajorNodes::pre_pass//
|
||||
3.4% in //MajorNodes::pass_1//
|
||||
3.3% in //MajorNodes::pass_1//
|
||||
2.0% in //Phrases::Manager::RulePrintingRule_routine//
|
||||
1.8% in //Phrases::Manager::rulebooks_array//
|
||||
0.9% in //Phrases::Manager::traverse//
|
||||
0.9% 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,11 +19,11 @@
|
|||
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.3% not specifically accounted for
|
||||
29.7% in running Inter pipeline
|
||||
9.7% in step preparation
|
||||
9.5% in inter step 2/12: link
|
||||
6.9% in inter step 12/12: generate inform6 -> auto.inf
|
||||
3.4% not specifically accounted for
|
||||
30.3% in running Inter pipeline
|
||||
10.0% in step preparation
|
||||
9.6% in inter step 2/12: link
|
||||
7.0% 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
|
||||
0.1% in inter step 11/12: eliminate-redundant-labels
|
||||
|
|
|
@ -105,7 +105,7 @@ void Anaphora::change_discussion_topic(inference_subject *infsx,
|
|||
if (Annotations::node_has(current_sentence, implicit_in_creation_of_ANNOT))
|
||||
return;
|
||||
#ifdef IF_MODULE
|
||||
if ((PL::Map::is_a_direction(infsx)) &&
|
||||
if ((Map::subject_is_a_direction(infsx)) &&
|
||||
((InstanceSubjects::to_object_instance(infsx) == NULL) ||
|
||||
(InstanceSubjects::to_object_instance(infsy_full)))) infsx = NULL;
|
||||
#endif
|
||||
|
|
|
@ -52,14 +52,13 @@ void Classifying::sentence(parse_node *p) {
|
|||
SyntaxTree::graft(Task::syntax_tree(), VP_PN, p);
|
||||
if (SyntaxTree::is_trace_set(Task::syntax_tree())) LOG("$T\n", p);
|
||||
@<Check that this is allowed, if it occurs in the Options file@>;
|
||||
#ifdef IF_MODULE
|
||||
PL::MapDirections::look_for_direction_creation(p);
|
||||
#endif
|
||||
PropertySentences::look_for_property_creation(p);
|
||||
@<Issue problem message if either subject or object contains mismatched brackets@>;
|
||||
@<Issue problem message if subject starts with double-quoted literal text@>;
|
||||
if ((VP_PN->next) && (VP_PN->next->next) && (Diagrams::is_possessive_RELATIONSHIP(VP_PN->next->next)))
|
||||
if ((VP_PN->next) && (VP_PN->next->next) &&
|
||||
(Diagrams::is_possessive_RELATIONSHIP(VP_PN->next->next)))
|
||||
@<Diagram property callings@>;
|
||||
PluginCalls::new_assertion_notify(p);
|
||||
} else {
|
||||
LOG("$T\n", p);
|
||||
<no-primary-verb-diagnosis>(W);
|
||||
|
|
|
@ -379,7 +379,7 @@ at which point it becomes a |PROPER_NOUN_NT| node.)
|
|||
@<Case 3 - Miscellaneous vs WITH@> =
|
||||
#ifdef IF_MODULE
|
||||
if ((Node::get_type(px) == PROPER_NOUN_NT) &&
|
||||
(PL::Map::is_a_direction(Node::get_subject(px))) &&
|
||||
(Map::subject_is_a_direction(Node::get_subject(px))) &&
|
||||
(Node::get_type(py->down) == PROPER_NOUN_NT)) {
|
||||
int np = problem_count;
|
||||
Assertions::make_coupling(px, py->down); /* A is a B */
|
||||
|
@ -1025,10 +1025,10 @@ in this case.
|
|||
#ifdef IF_MODULE
|
||||
if ((PL::MapDirections::get_mapping_relationship(px)) &&
|
||||
(PL::MapDirections::get_mapping_relationship(py))) {
|
||||
PL::Map::enter_one_way_mode();
|
||||
Map::enter_one_way_mode();
|
||||
Assertions::make_coupling(px, py->down);
|
||||
Assertions::make_coupling(px->down, py);
|
||||
PL::Map::exit_one_way_mode();
|
||||
Map::exit_one_way_mode();
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
@ -1559,8 +1559,8 @@ There is also one case in which an object can be set equal to another object:
|
|||
}
|
||||
|
||||
#ifdef IF_MODULE
|
||||
if ((PL::Map::is_a_direction(Node::get_subject(px))) ||
|
||||
(PL::Map::is_a_direction(Node::get_subject(py))))
|
||||
if ((Map::subject_is_a_direction(Node::get_subject(px))) ||
|
||||
(Map::subject_is_a_direction(Node::get_subject(py))))
|
||||
@<This is a map connection referred to metonymically@>
|
||||
else
|
||||
#endif
|
||||
|
@ -1592,7 +1592,7 @@ There is also one case in which an object can be set equal to another object:
|
|||
return;
|
||||
}
|
||||
inference_subject *target = Node::get_subject(py), *way = Node::get_subject(px);
|
||||
if (PL::Map::is_a_direction(target)) {
|
||||
if (Map::subject_is_a_direction(target)) {
|
||||
target = Node::get_subject(px); way = Node::get_subject(py);
|
||||
}
|
||||
if (global_pass_state.pass == 2) {
|
||||
|
@ -1603,7 +1603,7 @@ There is also one case in which an object can be set equal to another object:
|
|||
"like saying '20 is north'. This is an odd thing "
|
||||
"to say, and makes me think that I've misunderstood you.");
|
||||
} else {
|
||||
PL::Map::connect(Anaphora::get_current_subject(), target, way);
|
||||
Map::connect(Anaphora::get_current_subject(), target, way);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -76,9 +76,9 @@ void Assertions::Relational::assert_subtree_in_relationship(parse_node *value, p
|
|||
if ((iy == NULL) || (id == NULL))
|
||||
internal_error("malformed directional subtree");
|
||||
if (Rvalues::is_nothing_object_constant(value))
|
||||
PL::Map::connect(iy, NULL, id);
|
||||
Map::connect(iy, NULL, id);
|
||||
else if (Rvalues::is_object(Node::get_evaluation(value)))
|
||||
PL::Map::connect(iy, Node::get_subject(value), id);
|
||||
Map::connect(iy, Node::get_subject(value), id);
|
||||
else {
|
||||
LOG("Val is $P\n", value);
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_MapToNonobject),
|
||||
|
|
|
@ -182,6 +182,8 @@ DECLARE_CLASS(use_as_event)
|
|||
@e backdrop_found_in_notice_CLASS
|
||||
@e bp_runtime_implementation_CLASS
|
||||
@e definition_CLASS
|
||||
@e door_dir_notice_CLASS
|
||||
@e door_to_notice_CLASS
|
||||
@e dval_written_CLASS
|
||||
@e i6_inclusion_matter_CLASS
|
||||
@e internal_test_case_CLASS
|
||||
|
@ -199,6 +201,8 @@ DECLARE_CLASS(adjective_iname_holder)
|
|||
DECLARE_CLASS(backdrop_found_in_notice)
|
||||
DECLARE_CLASS(bp_runtime_implementation)
|
||||
DECLARE_CLASS(definition)
|
||||
DECLARE_CLASS(door_dir_notice)
|
||||
DECLARE_CLASS(door_to_notice)
|
||||
DECLARE_CLASS(dval_written)
|
||||
DECLARE_CLASS(i6_inclusion_matter)
|
||||
DECLARE_CLASS(internal_test_case)
|
||||
|
@ -234,8 +238,6 @@ DECLARE_CLASS(index_lexicon_entry)
|
|||
@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
|
||||
|
@ -272,8 +274,6 @@ 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)
|
||||
|
|
|
@ -139,6 +139,17 @@ int PluginCalls::refine_implicit_noun(parse_node *p) {
|
|||
PLUGINS_CALL(REFINE_IMPLICIT_NOUN_PLUG, p);
|
||||
}
|
||||
|
||||
@ Called from //assertions: Classifying Sentences// to give plugins the chance
|
||||
of an early look at a newly-read assertion. For example, the map plugin uses
|
||||
this to spot that a sentence will create a new direction.
|
||||
|
||||
@e NEW_ASSERTION_NOTIFY_PLUG
|
||||
|
||||
=
|
||||
int PluginCalls::new_assertion_notify(parse_node *p) {
|
||||
PLUGINS_CALL(NEW_ASSERTION_NOTIFY_PLUG, p);
|
||||
}
|
||||
|
||||
@ Called from //assertions: The Equality Relation Revisited// when we have
|
||||
to decide if it's valid to ask or declare that two things are the same.
|
||||
Returning |TRUE| says that it is always valid; returning |FALSE| leaves
|
||||
|
|
|
@ -80,7 +80,7 @@ void IFModule::create_plugins(void) {
|
|||
bibliographic_plugin = PluginManager::new(&BibliographicData::start, I"bibliographic data", ifp);
|
||||
chronology_plugin = PluginManager::new(&Chronology::start_plugin, I"chronology", ifp);
|
||||
devices_plugin = PluginManager::new(&PL::Devices::start, I"devices", ifp);
|
||||
map_plugin = PluginManager::new(&PL::Map::start, I"mapping", ifp);
|
||||
map_plugin = PluginManager::new(&Map::start, I"mapping", ifp);
|
||||
persons_plugin = PluginManager::new(&PL::Persons::start, I"persons", ifp);
|
||||
player_plugin = PluginManager::new(&Player::start, I"player", ifp);
|
||||
regions_plugin = PluginManager::new(&Regions::start, I"regions", ifp);
|
||||
|
|
|
@ -408,10 +408,7 @@ just too short to care overmuch about this.
|
|||
|
||||
@<Compile bibliographic text as a truncated filename@> =
|
||||
int i, pos = STREAM_EXTENT(OUT), whitespace_count=0, black_chars_written = 0;
|
||||
int N = 100;
|
||||
#ifdef IF_MODULE
|
||||
N = BIBLIOGRAPHIC_TEXT_TRUNCATION;
|
||||
#endif
|
||||
int N = BIBLIOGRAPHIC_TEXT_TRUNCATION;
|
||||
if (p[0] == '"') p++;
|
||||
for (i=0; p[i]; i++) {
|
||||
if (STREAM_EXTENT(OUT) - pos >= N) break;
|
||||
|
|
|
@ -170,7 +170,7 @@ int Backdrops::complete_model(int stage) {
|
|||
@<The object is found in many rooms or in whole regions, so make it a routine@>;
|
||||
if ((val_of_found_in == NULL) && (Instances::of_kind(I, K_backdrop)))
|
||||
@<The object is found nowhere, so give it a stub found-in property and mark it absent@>;
|
||||
if (val_of_found_in) PL::Map::set_found_in(I, val_of_found_in);
|
||||
if (val_of_found_in) Map::set_found_in(I, val_of_found_in);
|
||||
}
|
||||
}
|
||||
return FALSE;
|
||||
|
|
|
@ -4,6 +4,12 @@ To define one binary predicate for each map direction, such as
|
|||
"mapped north of".
|
||||
|
||||
@h Family.
|
||||
This section creates a family of implicit relations (implemented as binary
|
||||
predicates) corresponding to the different directions.
|
||||
|
||||
For every direction created, a predicate is created for the possibility of
|
||||
a map connection. For instance, "if Versailles is mapped north of the
|
||||
Metro" tests the "mapped-north" BP.
|
||||
|
||||
=
|
||||
bp_family *map_connecting_bp_family = NULL;
|
||||
|
@ -12,42 +18,8 @@ void PL::MapDirections::start(void) {
|
|||
map_connecting_bp_family = BinaryPredicateFamilies::new();
|
||||
METHOD_ADD(map_connecting_bp_family, TYPECHECK_BPF_MTID, PL::MapDirections::typecheck);
|
||||
METHOD_ADD(map_connecting_bp_family, ASSERT_BPF_MTID, PL::MapDirections::assert);
|
||||
METHOD_ADD(map_connecting_bp_family, SCHEMA_BPF_MTID, PL::MapDirections::schema);
|
||||
METHOD_ADD(map_connecting_bp_family, DESCRIBE_FOR_PROBLEMS_BPF_MTID, PL::MapDirections::describe_for_problems);
|
||||
METHOD_ADD(map_connecting_bp_family, DESCRIBE_FOR_INDEX_BPF_MTID, PL::MapDirections::describe_for_index);
|
||||
}
|
||||
|
||||
@ This section creates a family of implicit relations (implemented as binary
|
||||
predicates) corresponding to the different directions.
|
||||
|
||||
For every direction created, a predicate is created for the possibility of
|
||||
a map connection. For instance, "if Versailles is mapped north of the
|
||||
Metro" tests the "mapped-north" BP. There is also one general relation
|
||||
built in:
|
||||
|
||||
=
|
||||
binary_predicate *R_adjacency = NULL;
|
||||
|
||||
@h The adjacency relation.
|
||||
We may as well do this here: creating the relation "X is adjacent to Y".
|
||||
|
||||
=
|
||||
void PL::MapDirections::create_relations(void) {
|
||||
R_adjacency =
|
||||
BinaryPredicates::make_pair(spatial_bp_family,
|
||||
BPTerms::new(infs_room),
|
||||
BPTerms::new(infs_room),
|
||||
I"adjacent-to", I"adjacent-from",
|
||||
NULL, Calculus::Schemas::new("TestAdjacency(*1,*2)"),
|
||||
PreformUtilities::wording(<relation-names>, ADJACENCY_RELATION_NAME));
|
||||
|
||||
}
|
||||
|
||||
@ There is nothing special about asserting this, so we don't intervene:
|
||||
|
||||
=
|
||||
int PL::MapDirections::assert_relations(binary_predicate *relation, instance *I0, instance *I1) {
|
||||
return FALSE;
|
||||
METHOD_ADD(map_connecting_bp_family, DESCRIBE_FOR_INDEX_BPF_MTID,
|
||||
PL::MapDirections::describe_for_index);
|
||||
}
|
||||
|
||||
@h Subsequent creations.
|
||||
|
@ -118,14 +90,6 @@ this to other languages.)
|
|||
is intentionally done very early on.
|
||||
|
||||
@d MAX_DIRECTIONS 100 /* the Standard Rules define only 12, so this is plenty */
|
||||
|
||||
=
|
||||
parse_node *directions_noticed[MAX_DIRECTIONS];
|
||||
binary_predicate *direction_relations_noticed[MAX_DIRECTIONS];
|
||||
int no_directions_noticed = 0;
|
||||
|
||||
@
|
||||
|
||||
@d MAX_MAPPING_RELATION_NAME_LENGTH MAX_WORDS_IN_DIRECTION*MAX_WORD_LENGTH+10
|
||||
|
||||
@<Create the mapping BP for the new direction@> =
|
||||
|
@ -169,22 +133,17 @@ int no_directions_noticed = 0;
|
|||
instance |I| for the direction, and given it the kind "direction". That
|
||||
makes it possible to complete the details of the BP.
|
||||
|
||||
|ident| can be any string of text which evaluates in I6 to the
|
||||
object number of the direction object. It seems redundant here because
|
||||
surely if we know |I|, we know its runtime representation; but that's not
|
||||
true -- we need to call this routine at a time when the final identifier
|
||||
names for I6 objects have not yet been settled.
|
||||
|
||||
=
|
||||
int mmp_call_counter = 0;
|
||||
void PL::MapDirections::make_mapped_predicate(instance *I, inter_name *ident) {
|
||||
void PL::MapDirections::make_mapped_predicate(instance *I) {
|
||||
wording W = Instances::get_name(I, FALSE);
|
||||
if ((Wordings::empty(W)) || (Wordings::length(W) > MAX_WORDS_IN_DIRECTION))
|
||||
internal_error("bad direction name");
|
||||
binary_predicate *bp = direction_relations_noticed[mmp_call_counter++];
|
||||
if (bp == NULL) {
|
||||
LOG("Improper text: %W\n", W);
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(), _p_(PM_ImproperlyMadeDirection),
|
||||
StandardProblems::sentence_problem(Task::syntax_tree(),
|
||||
_p_(PM_ImproperlyMadeDirection),
|
||||
"directions must be created by only the simplest possible sentences",
|
||||
"in the form 'North-north-west is a direction' only. Using adjectives, "
|
||||
"'called', 'which', and so on is not allowed. (In practice this is not "
|
||||
|
@ -196,35 +155,10 @@ void PL::MapDirections::make_mapped_predicate(instance *I, inter_name *ident) {
|
|||
bp->term_details[0] = BPTerms::new(NULL);
|
||||
bp->term_details[1] = BPTerms::new(NULL);
|
||||
BinaryPredicates::set_index_details(bp, "room/door", "room/door");
|
||||
bp->task_functions[TEST_ATOM_TASK] = Calculus::Schemas::new("(MapConnection(*2,%n) == *1)", ident);
|
||||
bp->task_functions[NOW_ATOM_TRUE_TASK] = Calculus::Schemas::new("AssertMapConnection(*2,%n,*1)", ident);
|
||||
bp->task_functions[NOW_ATOM_FALSE_TASK] = Calculus::Schemas::new("AssertMapUnconnection(*2,%n,*1)", ident);
|
||||
RTMap::set_map_schemas(bp, I);
|
||||
MAP_DATA(I)->direction_relation = bp;
|
||||
}
|
||||
|
||||
@
|
||||
|
||||
=
|
||||
void PL::MapDirections::look_for_direction_creation(parse_node *pn) {
|
||||
if (Node::get_type(pn) != SENTENCE_NT) return;
|
||||
if ((pn->down == NULL) || (pn->down->next == NULL) || (pn->down->next->next == NULL)) return;
|
||||
if (Node::get_type(pn->down) != VERB_NT) return;
|
||||
if (Node::get_type(pn->down->next) != UNPARSED_NOUN_NT) return;
|
||||
if (Node::get_type(pn->down->next->next) != UNPARSED_NOUN_NT) return;
|
||||
current_sentence = pn;
|
||||
pn = pn->down->next;
|
||||
if (!((<notable-map-kinds>(Node::get_text(pn->next)))
|
||||
&& (<<r>> == 0))) return;
|
||||
if (no_directions_noticed >= MAX_DIRECTIONS) {
|
||||
StandardProblems::limit_problem(Task::syntax_tree(), _p_(PM_TooManyDirections),
|
||||
"different directions", MAX_DIRECTIONS);
|
||||
return;
|
||||
}
|
||||
direction_relations_noticed[no_directions_noticed] =
|
||||
PL::MapDirections::create_sketchy_mapping_direction(Node::get_text(pn));
|
||||
directions_noticed[no_directions_noticed++] = pn;
|
||||
}
|
||||
|
||||
@h Typechecking.
|
||||
This won't catch everything, but it will do. Run-time checking will pick up
|
||||
remaining anomalies.
|
||||
|
@ -237,7 +171,8 @@ int PL::MapDirections::typecheck(bp_family *self, binary_predicate *bp,
|
|||
if ((Kinds::compatible(kinds_of_terms[t], K_room) == NEVER_MATCH) &&
|
||||
(Kinds::compatible(kinds_of_terms[t], K_door) == NEVER_MATCH)) {
|
||||
LOG("Term %d is %u but should be a room or door\n", t, kinds_of_terms[t]);
|
||||
Propositions::Checker::issue_bp_typecheck_error(bp, kinds_of_terms[0], kinds_of_terms[1], tck);
|
||||
Propositions::Checker::issue_bp_typecheck_error(bp, kinds_of_terms[0],
|
||||
kinds_of_terms[1], tck);
|
||||
return NEVER_MATCH;
|
||||
}
|
||||
return ALWAYS_MATCH;
|
||||
|
@ -261,30 +196,20 @@ int PL::MapDirections::assert(bp_family *self, binary_predicate *bp,
|
|||
SpatialInferences::infer_is_room(infs_from, prevailing_mood);
|
||||
if ((prevailing_mood >= 0) && (infs_to))
|
||||
SpatialInferences::infer_is_room(infs_to, LIKELY_CE);
|
||||
PL::Map::infer_direction(infs_from, infs_to, o_dir);
|
||||
Map::infer_direction(infs_from, infs_to, o_dir);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
@h Compilation.
|
||||
We need do nothing special: these relations can be compiled from their schemas.
|
||||
@h Indexing.
|
||||
|
||||
=
|
||||
int PL::MapDirections::schema(bp_family *self, int task, binary_predicate *bp, annotated_i6_schema *asch) {
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@h Problem message text.
|
||||
|
||||
=
|
||||
int PL::MapDirections::describe_for_problems(bp_family *self, OUTPUT_STREAM, binary_predicate *bp) {
|
||||
return FALSE;
|
||||
}
|
||||
void PL::MapDirections::describe_for_index(bp_family *self, OUTPUT_STREAM, binary_predicate *bp) {
|
||||
void PL::MapDirections::describe_for_index(bp_family *self, OUTPUT_STREAM,
|
||||
binary_predicate *bp) {
|
||||
WRITE("map");
|
||||
}
|
||||
|
||||
@h The correspondence with directions.
|
||||
(Speed really does not matter here.)
|
||||
Speed really does not matter here.
|
||||
|
||||
=
|
||||
binary_predicate *PL::MapDirections::get_mapping_relation(instance *dir) {
|
||||
|
@ -311,3 +236,16 @@ instance *PL::MapDirections::get_mapping_relationship(parse_node *p) {
|
|||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
@h The adjacency relation.
|
||||
There is also one general relation built in, though it belongs to the spatial family:
|
||||
|
||||
=
|
||||
void PL::MapDirections::create_relations(void) {
|
||||
BinaryPredicates::make_pair(spatial_bp_family,
|
||||
BPTerms::new(infs_room),
|
||||
BPTerms::new(infs_room),
|
||||
I"adjacent-to", I"adjacent-from",
|
||||
NULL, Calculus::Schemas::new("TestAdjacency(*1,*2)"),
|
||||
PreformUtilities::wording(<relation-names>, ADJACENCY_RELATION_NAME));
|
||||
}
|
||||
|
|
|
@ -221,8 +221,8 @@ for any subsequent story directions to be unshown:
|
|||
int story_dir_to_page_dir[MAX_DIRECTIONS];
|
||||
|
||||
void PL::SpatialMap::initialise_page_directions(void) {
|
||||
int i;
|
||||
for (i=0; i<registered_directions; i++)
|
||||
int N = Map::number_of_directions();
|
||||
for (int i=0; i<N; i++)
|
||||
story_dir_to_page_dir[i] = i;
|
||||
}
|
||||
|
||||
|
@ -358,7 +358,7 @@ we use these hard-wired macros instead.
|
|||
for (i=0; i<12; i++)
|
||||
|
||||
@d LOOP_OVER_STORY_DIRECTIONS(i)
|
||||
for (i=0; i<registered_directions; i++)
|
||||
for (i=0; i<Map::number_of_directions(); i++)
|
||||
|
||||
@d LOOP_OVER_LATTICE_DIRECTIONS(i)
|
||||
for (i=0; i<10; i++)
|
||||
|
@ -465,10 +465,10 @@ instance *PL::SpatialMap::room_exit(instance *origin, int dir_num, instance **vi
|
|||
if (immediate_destination) {
|
||||
if (Spatial::object_is_a_room(immediate_destination))
|
||||
ultimate_destination = immediate_destination;
|
||||
if (PL::Map::object_is_a_door(immediate_destination)) {
|
||||
if (Map::instance_is_a_door(immediate_destination)) {
|
||||
if (via) *via = immediate_destination;
|
||||
instance *A = NULL, *B = NULL;
|
||||
PL::Map::get_door_data(immediate_destination, &A, &B);
|
||||
Map::get_door_data(immediate_destination, &A, &B);
|
||||
if (A == origin) ultimate_destination = B;
|
||||
if (B == origin) ultimate_destination = A;
|
||||
}
|
||||
|
@ -2736,7 +2736,7 @@ void PL::SpatialMap::log_precis_of_map(void) {
|
|||
if ((Instances::of_kind(R, K_direction)) &&
|
||||
(MAP_DATA(R)->direction_index >= 12)) {
|
||||
wording W = Instances::get_name(R, FALSE);
|
||||
wording OW = Instances::get_name(PL::Map::get_value_of_opposite_property(R), FALSE);
|
||||
wording OW = Instances::get_name(Map::get_value_of_opposite_property(R), FALSE);
|
||||
LOG("%+W is a direction. The opposite of %+W is %+W.\n", W, W, OW);
|
||||
}
|
||||
if (Instances::of_kind(R, K_region)) {
|
||||
|
@ -2799,7 +2799,7 @@ void PL::SpatialMap::log_precis_of_map(void) {
|
|||
if (MAP_DATA(dir)->direction_index == i) {
|
||||
wording DW = Instances::get_name(dir, FALSE);
|
||||
LOG("%+W is %W of %+W.\n", OW, DW, RW);
|
||||
instance *opp = PL::Map::get_value_of_opposite_property(dir);
|
||||
instance *opp = Map::get_value_of_opposite_property(dir);
|
||||
int od = MAP_DATA(opp)->direction_index;
|
||||
if ((S) && (PL::SpatialMap::room_exit(S, od, NULL) == NULL)) {
|
||||
wording OPW = Instances::get_name(dir, FALSE);
|
||||
|
@ -2830,7 +2830,7 @@ void PL::SpatialMap::index_room_connections(OUTPUT_STREAM, instance *R) {
|
|||
instance *dir;
|
||||
LOOP_OVER_INSTANCES(dir, K_direction) {
|
||||
int i = MAP_DATA(dir)->direction_index;
|
||||
instance *opp = PL::Map::get_value_of_opposite_property(dir);
|
||||
instance *opp = Map::get_value_of_opposite_property(dir);
|
||||
int od = opp?(MAP_DATA(opp)->direction_index):(-1);
|
||||
instance *D = NULL;
|
||||
instance *S = PL::SpatialMap::room_exit(R, i, &D);
|
||||
|
|
|
@ -784,7 +784,7 @@ when it finishes this will be set to the most recently mentioned.
|
|||
@<Determine whether the object in question is a component part@> =
|
||||
inference *inf;
|
||||
POSITIVE_KNOWLEDGE_LOOP(inf, Instances::as_subject(I), part_of_inf) {
|
||||
if ((Spatial::object_is_a_room(I)) || (PL::Map::object_is_a_door(I))) {
|
||||
if ((Spatial::object_is_a_room(I)) || (Map::instance_is_a_door(I))) {
|
||||
StandardProblems::object_problem(_p_(PM_RoomOrDoorAsPart),
|
||||
I,
|
||||
"was set up as being part of something else, which doors and rooms "
|
||||
|
|
|
@ -206,7 +206,6 @@ way which isn't symmetrical between the two, and this way round is cleanest.
|
|||
|
||||
@<Offer our dependent plugins a chance to assert the relation instead@> =
|
||||
if (Backdrops::assert_relations(bp, I0, I1)) return TRUE;
|
||||
if (PL::MapDirections::assert_relations(bp, I0, I1)) return TRUE;
|
||||
if (Regions::assert_relations(bp, I0, I1)) return TRUE;
|
||||
|
||||
@ This is the point at which non-assertable relations are thrown out.
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -66,7 +66,7 @@ void Data::Objects::page_World(OUTPUT_STREAM) {
|
|||
instance *I;
|
||||
LOOP_OVER_INSTANCES(I, K_object)
|
||||
if ((IXSpatial::no_detail_index(I))
|
||||
|| (PL::Map::object_is_a_direction(I)))
|
||||
|| (Map::instance_is_a_direction(I)))
|
||||
IXInstances::increment_indexing_count(I);
|
||||
|
||||
@<Give room details within each region in turn in the World index@> =
|
||||
|
|
|
@ -43,12 +43,12 @@ void IXSpatial::index_object_further(OUTPUT_STREAM, instance *I, int depth, int
|
|||
if (SPATIAL_DATA(I)->object_tree_child)
|
||||
Data::Objects::index(OUT, SPATIAL_DATA(I)->object_tree_child, NULL, depth+1, details);
|
||||
if ((Spatial::object_is_a_room(I)) &&
|
||||
(PL::Map::object_is_a_door(I) == FALSE)) {
|
||||
(Map::instance_is_a_door(I) == FALSE)) {
|
||||
instance *I2;
|
||||
LOOP_OVER_INSTANCES(I2, K_object) {
|
||||
if ((PL::Map::object_is_a_door(I2)) && (Spatial::progenitor(I2) != I)) {
|
||||
if ((Map::instance_is_a_door(I2)) && (Spatial::progenitor(I2) != I)) {
|
||||
instance *A = NULL, *B = NULL;
|
||||
PL::Map::get_door_data(I2, &A, &B);
|
||||
Map::get_door_data(I2, &A, &B);
|
||||
if (A == I) Data::Objects::index(OUT, I2, NULL, depth+1, details);
|
||||
if (B == I) Data::Objects::index(OUT, I2, NULL, depth+1, details);
|
||||
}
|
||||
|
|
32
inform7/index-module/Chapter 3/The Map.w
Normal file
32
inform7/index-module/Chapter 3/The Map.w
Normal file
|
@ -0,0 +1,32 @@
|
|||
[IXMap::] The Map.
|
||||
|
||||
Indexing the player's initial position.
|
||||
|
||||
@ =
|
||||
int IXMap::add_to_World_index(OUTPUT_STREAM, instance *O) {
|
||||
if ((O) && (Instances::of_kind(O, K_room))) {
|
||||
PL::SpatialMap::index_room_connections(OUT, O);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int IXMap::annotate_in_World_index(OUTPUT_STREAM, instance *O) {
|
||||
if ((O) && (Instances::of_kind(O, K_door))) {
|
||||
instance *A = NULL, *B = NULL;
|
||||
Map::get_door_data(O, &A, &B);
|
||||
if ((A) && (B)) WRITE(" - <i>door to ");
|
||||
else WRITE(" - <i>one-sided door to ");
|
||||
instance *X = A;
|
||||
if (A == Data::Objects::room_being_indexed()) X = B;
|
||||
if (X == NULL) {
|
||||
parse_node *S = PropertyInferences::value_of(
|
||||
Instances::as_subject(O), P_other_side);
|
||||
X = Rvalues::to_object_instance(S);
|
||||
}
|
||||
if (X == NULL) WRITE("nowhere");
|
||||
else IXInstances::index_name(OUT, X);
|
||||
WRITE("</i>");
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
|
@ -31,3 +31,4 @@ Chapter 3: Indexing for Plugins
|
|||
The Player
|
||||
Backdrops
|
||||
Regions
|
||||
The Map
|
||||
|
|
|
@ -55,9 +55,7 @@ int RTInstances::emit_all(inference_subject_family *family, int ignored) {
|
|||
LOOP_OVER(I, instance)
|
||||
if (Kinds::Behaviour::is_object(Instances::to_kind(I)) == FALSE)
|
||||
RTInstances::emit_one(family, Instances::as_subject(I));
|
||||
#ifdef IF_MODULE
|
||||
RTNaming::compile_small_names();
|
||||
#endif
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
|
263
inform7/runtime-module/Chapter 5/The Map.w
Normal file
263
inform7/runtime-module/Chapter 5/The Map.w
Normal file
|
@ -0,0 +1,263 @@
|
|||
[RTMap::] The Map.
|
||||
|
||||
@
|
||||
|
||||
=
|
||||
inter_name *RTMap::new_direction_iname(void) {
|
||||
package_request *PR = Hierarchy::synoptic_package(DIRECTIONS_HAP);
|
||||
return Hierarchy::make_iname_in(DIRECTION_HL, PR);
|
||||
}
|
||||
|
||||
@ One of the few early breaks with I6 practice was that I7 stores the
|
||||
map differently at run-time compared to earlier I6 games.
|
||||
|
||||
=
|
||||
int RTMap::compile_model_tables(void) {
|
||||
@<Declare I6 constants for the directions@>;
|
||||
@<Compile the I6 Map-Storage array@>;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@<Declare I6 constants for the directions@> =
|
||||
inter_name *ndi = Hierarchy::find(NO_DIRECTIONS_HL);
|
||||
Emit::named_numeric_constant(ndi, (inter_ti) Map::number_of_directions());
|
||||
Hierarchy::make_available(Emit::tree(), ndi);
|
||||
|
||||
instance *I;
|
||||
LOOP_OVER_INSTANCES(I, K_direction)
|
||||
Emit::named_iname_constant(MAP_DATA(I)->direction_iname, K_object,
|
||||
RTInstances::emitted_iname(I));
|
||||
|
||||
@ The |Map_Storage| array consists only of the |exits| arrays written out
|
||||
one after another. It looks wasteful of memory, since it is almost always
|
||||
going to be filled mostly with |0| 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.
|
||||
|
||||
@<Compile the I6 Map-Storage array@> =
|
||||
instance *I;
|
||||
LOOP_OVER_INSTANCES(I, K_object)
|
||||
RTInstances::emitted_iname(I);
|
||||
inter_name *iname = Hierarchy::find(MAP_STORAGE_HL);
|
||||
packaging_state save = Emit::named_array_begin(iname, K_object);
|
||||
int words_used = 0;
|
||||
if (Task::wraps_existing_storyfile()) {
|
||||
Emit::array_divider(I"minimal, as there are no rooms");
|
||||
Emit::array_iname_entry(NULL);
|
||||
Emit::array_iname_entry(NULL);
|
||||
Emit::array_iname_entry(NULL);
|
||||
Emit::array_iname_entry(NULL);
|
||||
words_used = 4;
|
||||
} else {
|
||||
Emit::array_divider(I"one row per room");
|
||||
instance *I;
|
||||
LOOP_OVER_INSTANCES(I, K_object)
|
||||
if (Spatial::object_is_a_room(I)) {
|
||||
int N = Map::number_of_directions();
|
||||
for (int i=0; i<N; i++) {
|
||||
instance *to = MAP_EXIT(I, i);
|
||||
if (to)
|
||||
Emit::array_iname_entry(RTInstances::iname(to));
|
||||
else
|
||||
Emit::array_numeric_entry(0);
|
||||
}
|
||||
words_used++;
|
||||
TEMPORARY_TEXT(divider)
|
||||
WRITE_TO(divider, "Exits from: %~I", I);
|
||||
Emit::array_divider(divider);
|
||||
DISCARD_TEXT(divider)
|
||||
}
|
||||
}
|
||||
Emit::array_end(save);
|
||||
Hierarchy::make_available(Emit::tree(), iname);
|
||||
|
||||
@h Two-sided doors.
|
||||
The I6 implementation of two-way doors and of what, in I7, are called backdrops,
|
||||
is quite complicated; and the Inter code we generate follows that traditional
|
||||
form. See the Inform Designer's Manual, fourth edition (the "DM4") for explanations.
|
||||
We are essentially trying to program all of that automatically, which is why these
|
||||
awkward multi-purpose I6 properties (|door_to|, |found_in|, etc.) have no direct
|
||||
I7 equivalents.
|
||||
|
||||
These little structures are needed to remember routines to compile later:
|
||||
|
||||
=
|
||||
typedef struct door_dir_notice {
|
||||
struct inter_name *ddn_iname;
|
||||
struct instance *door;
|
||||
struct instance *R1;
|
||||
struct instance *D1;
|
||||
struct instance *D2;
|
||||
CLASS_DEFINITION
|
||||
} door_dir_notice;
|
||||
|
||||
typedef struct door_to_notice {
|
||||
struct inter_name *dtn_iname;
|
||||
struct instance *door;
|
||||
struct instance *R1;
|
||||
struct instance *R2;
|
||||
CLASS_DEFINITION
|
||||
} door_to_notice;
|
||||
|
||||
parse_node *RTMap::door_dir_for_2_sided(instance *I, instance *R1, instance *D1,
|
||||
instance *D2) {
|
||||
door_dir_notice *notice = CREATE(door_dir_notice);
|
||||
notice->ddn_iname =
|
||||
Hierarchy::make_iname_in(TSD_DOOR_DIR_FN_HL, RTInstances::package(I));
|
||||
notice->door = I;
|
||||
notice->R1 = R1;
|
||||
notice->D1 = D1;
|
||||
notice->D2 = D2;
|
||||
return Rvalues::from_iname(notice->ddn_iname);
|
||||
}
|
||||
|
||||
parse_node *RTMap::door_to_for_2_sided(instance *I, instance *R1, instance *R2) {
|
||||
door_to_notice *notice = CREATE(door_to_notice);
|
||||
notice->dtn_iname =
|
||||
Hierarchy::make_iname_in(TSD_DOOR_TO_FN_HL, RTInstances::package(I));
|
||||
notice->door = I;
|
||||
notice->R1 = R1;
|
||||
notice->R2 = R2;
|
||||
return Rvalues::from_iname(notice->dtn_iname);
|
||||
}
|
||||
|
||||
parse_node *RTMap::found_in_for_2_sided(instance *I, instance *R1, instance *R2) {
|
||||
package_request *PR =
|
||||
Hierarchy::package_within(INLINE_PROPERTIES_HAP, RTInstances::package(I));
|
||||
inter_name *S = Hierarchy::make_iname_in(INLINE_PROPERTY_HL, PR);
|
||||
packaging_state save = Emit::named_array_begin(S, K_value);
|
||||
Emit::array_iname_entry(RTInstances::iname(R1));
|
||||
Emit::array_iname_entry(RTInstances::iname(R2));
|
||||
Emit::array_end(save);
|
||||
Produce::annotate_i(S, INLINE_ARRAY_IANN, 1);
|
||||
return Rvalues::from_iname(S);
|
||||
}
|
||||
|
||||
@ Redeeming those notices:
|
||||
|
||||
=
|
||||
void RTMap::write_door_dir_routines(void) {
|
||||
door_dir_notice *notice;
|
||||
LOOP_OVER(notice, door_dir_notice) {
|
||||
packaging_state save = Routines::begin(notice->ddn_iname);
|
||||
local_variable *loc = LocalVariables::add_internal_local_c(I"loc", "room of actor");
|
||||
inter_symbol *loc_s = LocalVariables::declare_this(loc, FALSE, 8);
|
||||
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::ref_symbol(Emit::tree(), K_value, loc_s);
|
||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(LOCATION_HL));
|
||||
Produce::up(Emit::tree());
|
||||
|
||||
Produce::inv_primitive(Emit::tree(), IF_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), EQ_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_symbol(Emit::tree(), K_value, loc_s);
|
||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(THEDARK_HL));
|
||||
Produce::up(Emit::tree());
|
||||
Produce::code(Emit::tree());
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::ref_symbol(Emit::tree(), K_value, loc_s);
|
||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(REAL_LOCATION_HL));
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
|
||||
Produce::inv_primitive(Emit::tree(), IF_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), EQ_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_symbol(Emit::tree(), K_value, loc_s);
|
||||
Produce::val_iname(Emit::tree(), K_value, RTInstances::iname(notice->R1));
|
||||
Produce::up(Emit::tree());
|
||||
Produce::code(Emit::tree());
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), RETURN_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_iname(Emit::tree(), K_value,
|
||||
RTInstances::iname(Map::get_value_of_opposite_property(notice->D1)));
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
|
||||
Produce::inv_primitive(Emit::tree(), RETURN_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_iname(Emit::tree(), K_value,
|
||||
RTInstances::iname(Map::get_value_of_opposite_property(notice->D2)));
|
||||
Produce::up(Emit::tree());
|
||||
|
||||
Routines::end(save);
|
||||
}
|
||||
}
|
||||
|
||||
void RTMap::write_door_to_routines(void) {
|
||||
door_to_notice *notice;
|
||||
LOOP_OVER(notice, door_to_notice) {
|
||||
packaging_state save = Routines::begin(notice->dtn_iname);
|
||||
local_variable *loc = LocalVariables::add_internal_local_c(I"loc", "room of actor");
|
||||
inter_symbol *loc_s = LocalVariables::declare_this(loc, FALSE, 8);
|
||||
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::ref_symbol(Emit::tree(), K_value, loc_s);
|
||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(LOCATION_HL));
|
||||
Produce::up(Emit::tree());
|
||||
|
||||
Produce::inv_primitive(Emit::tree(), IF_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), EQ_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_symbol(Emit::tree(), K_value, loc_s);
|
||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(THEDARK_HL));
|
||||
Produce::up(Emit::tree());
|
||||
Produce::code(Emit::tree());
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), STORE_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::ref_symbol(Emit::tree(), K_value, loc_s);
|
||||
Produce::val_iname(Emit::tree(), K_value, Hierarchy::find(REAL_LOCATION_HL));
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
|
||||
Produce::inv_primitive(Emit::tree(), IF_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), EQ_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_symbol(Emit::tree(), K_value, loc_s);
|
||||
Produce::val_iname(Emit::tree(), K_value, RTInstances::iname(notice->R1));
|
||||
Produce::up(Emit::tree());
|
||||
Produce::code(Emit::tree());
|
||||
Produce::down(Emit::tree());
|
||||
Produce::inv_primitive(Emit::tree(), RETURN_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_iname(Emit::tree(), K_value, RTInstances::iname(notice->R2));
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
Produce::up(Emit::tree());
|
||||
|
||||
Produce::inv_primitive(Emit::tree(), RETURN_BIP);
|
||||
Produce::down(Emit::tree());
|
||||
Produce::val_iname(Emit::tree(), K_value, RTInstances::iname(notice->R1));
|
||||
Produce::up(Emit::tree());
|
||||
|
||||
Routines::end(save);
|
||||
}
|
||||
}
|
||||
|
||||
@ |ident| is an identifier name for the direction instance. It seems redundant
|
||||
here because surely if we know |I|, we know its runtime representation; but
|
||||
that's not true -- we need to call this function at a time when the final
|
||||
identifier names for instance have not yet been settled.
|
||||
|
||||
=
|
||||
void RTMap::set_map_schemas(binary_predicate *bp, instance *I) {
|
||||
inter_name *ident = MAP_DATA(I)->direction_iname;
|
||||
bp->task_functions[TEST_ATOM_TASK] =
|
||||
Calculus::Schemas::new("(MapConnection(*2,%n) == *1)", ident);
|
||||
bp->task_functions[NOW_ATOM_TRUE_TASK] =
|
||||
Calculus::Schemas::new("AssertMapConnection(*2,%n,*1)", ident);
|
||||
bp->task_functions[NOW_ATOM_FALSE_TASK] =
|
||||
Calculus::Schemas::new("AssertMapUnconnection(*2,%n,*1)", ident);
|
||||
}
|
|
@ -69,3 +69,4 @@ Chapter 5: Plugin Support
|
|||
The Player
|
||||
Backdrops
|
||||
Regions
|
||||
The Map
|
||||
|
|
Loading…
Reference in a new issue