mirror of
https://github.com/ganelson/inform.git
synced 2024-06-26 04:00:43 +03:00
Rebuilt bibliographic plugin
This commit is contained in:
parent
a9fd0cc33c
commit
49fbd6df7d
|
@ -187,9 +187,6 @@ be a single word, and are hyphenated.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-dlr.html#SP2" class="function-link"><span class="function-syntax">Sentences::DLRs::omit_from_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"omit-from"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginCalls::make_special_meanings</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">IFModuleMeanings::bootstrap</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-bv.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_4" class="paragraph-anchor"></a><b>§1.4. </b>We need the English infinitive forms of two verbs to get started. In each
|
||||
|
|
|
@ -221,7 +221,7 @@ organisation, and are not directly functional in themselves.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">BIBLIOGRAPHIC_NT:</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">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><span class="identifier-syntax">PL::Bibliographic::bibliographic_data</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">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><span class="identifier-syntax">BibliographicData::bibliographic_data</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><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
|
||||
|
|
|
@ -370,8 +370,10 @@ now absolutely any non-empty word range is accepted as the property name.
|
|||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-nvr.html#SP6">§6</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5_3" class="paragraph-anchor"></a><b>§5.3. </b>So we can now use the above grammar to understand the definition of the
|
||||
verb.
|
||||
<p class="commentary firstcommentary"><a id="SP5_3" class="paragraph-anchor"></a><b>§5.3. </b>So we can now use the above grammar to understand the definition of the verb.
|
||||
Note that it is legal, but does nothing, to request a built-in meaning which
|
||||
does not exist: this allows for Basic Inform to mention built-in meanings
|
||||
which exist only when certain plugins are active.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Find the verb meaning and priority</span><span class="named-paragraph-number">5.3</span></span><span class="comment-syntax"> =</span>
|
||||
|
@ -393,17 +395,7 @@ verb.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">MW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">GET_RW</span><span class="plain-syntax">(</span><span class="function-syntax"><verb-definition></span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">smh</span><span class="plain-syntax"> = </span><span class="identifier-syntax">SpecialMeanings::find_from_wording</span><span class="plain-syntax">(</span><span class="identifier-syntax">MW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">smh</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">ifndef</span><span class="plain-syntax"> </span><span class="identifier-syntax">IF_MODULE</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">source_file</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pos</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Lexer::file_of_origin</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">MW</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inform_extension</span><span class="plain-syntax"> *</span><span class="identifier-syntax">loc</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Extensions::corresponding_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">pos</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Extensions::is_standard</span><span class="plain-syntax">(</span><span class="identifier-syntax">loc</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">endif</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_NoSuchBuiltInMeaning</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"that's not one of the built-in meanings I know"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"and should be one of the ones used in the Preamble to the "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"Standard Rules."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VerbMeanings::regular</span><span class="plain-syntax">(</span><span class="identifier-syntax">R_equality</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="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">vm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VerbMeanings::special</span><span class="plain-syntax">(</span><span class="identifier-syntax">smh</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">priority</span><span class="plain-syntax"> = </span><span class="identifier-syntax">SpecialMeanings::get_metadata_N</span><span class="plain-syntax">(</span><span class="identifier-syntax">smh</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -256,9 +256,6 @@ so on. Those absolute basics are made here.
|
|||
<span class="plain-syntax"> </span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::advance_stage_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TABLES_CSEQ</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Tables and grammar"</span><span class="plain-syntax">, -1);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Measurements::validate_definitions</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">BinaryPredicateFamilies::second_stock</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Bibliographic::IFID::define_UUID</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTFigures::compile_ResourceIDsOfFigures_array</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTSounds::compile_ResourceIDsOfSounds_array</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Player::InitialSituation</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Tables::check_tables_for_kind_clashes</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTTables::compile_print_table_names</span><span class="plain-syntax">)</span>
|
||||
|
@ -291,7 +288,6 @@ so on. Those absolute basics are made here.
|
|||
<span class="plain-syntax"> </span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::advance_stage_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">INTER_CSEQ</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Generating inter"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTUseOptions::compile_pragmas</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">FundamentalConstants::emit_build_number</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">PL::Bibliographic::compile_constants</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTExtensions::ShowExtensionVersions_routine</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Kinds::Constructors::emit_constants</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH_IF</span><span class="plain-syntax">(</span><span class="identifier-syntax">scoring_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">PL::Score::compile_max_score</span><span class="plain-syntax">)</span>
|
||||
|
@ -325,7 +321,6 @@ so on. Those absolute basics are made here.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Phrases::Manager::rulebooks_array</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH_IF</span><span class="plain-syntax">(</span><span class="identifier-syntax">scenes_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">PL::Scenes::DetectSceneChange_routine</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH_IF</span><span class="plain-syntax">(</span><span class="identifier-syntax">scenes_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">PL::Scenes::ShowSceneStatus_routine</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTExternalFiles::arrays</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Rulebooks::rulebook_var_creators</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">Activities::activity_var_creators</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">RTRelations::IterateRelations</span><span class="plain-syntax">)</span>
|
||||
|
@ -389,7 +384,7 @@ so on. Those absolute basics are made here.
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><a href="1-wtc.html#SP5" class="function-link"><span class="function-syntax">Task::advance_stage_to</span></a><span class="plain-syntax">(</span><span class="constant-syntax">BIBLIOGRAPHIC_CSEQ</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Bibliographic work"</span><span class="plain-syntax">, -1);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH_IF</span><span class="plain-syntax">(</span><span class="identifier-syntax">bibliographic_plugin</span><span class="plain-syntax">, </span><span class="identifier-syntax">PL::Bibliographic::Release::write_ifiction_and_blurb</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="3-pc.html#SP32" class="function-link"><span class="function-syntax">PluginCalls::post_compilation</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><span class="identifier-syntax">I6T::produce_index</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-htc.html#SP2">§2</a>.</li></ul>
|
||||
|
|
|
@ -12,6 +12,14 @@
|
|||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
|
@ -64,7 +72,7 @@
|
|||
<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 assertions</a></li><li><a href="3-pc.html#SP12">§12. Influencing values</a></li><li><a href="3-pc.html#SP15">§15. Influencing knowledge</a></li><li><a href="3-pc.html#SP28">§28. Influencing runtime</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 assertions</a></li><li><a href="3-pc.html#SP12">§12. Influencing values</a></li><li><a href="3-pc.html#SP15">§15. Influencing knowledge</a></li><li><a href="3-pc.html#SP28">§28. Influencing runtime</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><li><a href="3-pc.html#SP32">§32. Influencing core itself</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
|
||||
|
@ -477,6 +485,18 @@ the mapping plugin uses this to say where a door leads.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PLUGINS_CALL</span><span class="plain-syntax">(</span><span class="constant-syntax">ANNOTATE_IN_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="SP32" class="paragraph-anchor"></a><b>§32. Influencing core itself. </b>Called from <a href="1-htc.html" class="internal">How To Compile (in core)</a>. This is called when a successful
|
||||
compilation has finished, and is used, for example, by the bibliographic data
|
||||
plugin as an opportunity to write out release instructions.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">POST_COMPILATION_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::post_compilation</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">PluginCalls::post_compilation</span></span>:<br/>How To Compile - <a href="1-htc.html#SP2_9">§2.9</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">PLUGINS_CALLV</span><span class="plain-syntax">(</span><span class="constant-syntax">POST_COMPILATION_PLUG</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-pm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-cm.html">1</a></li><li class="progresschapter"><a href="2-up.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-pm.html">pm</a></li><li class="progresscurrent">pc</li><li class="progressnextoff">❯</li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -100,6 +100,7 @@ which use this module:
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">parsing_pp_data_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">part_of_inference_data_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">regions_data_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">release_instructions_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">reserved_command_verb_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">rubric_holder_CLASS</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">scene_CLASS</span>
|
||||
|
@ -138,6 +139,7 @@ which use this module:
|
|||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">parsing_pp_data</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">part_of_inference_data</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">regions_data</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">release_instructions</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">reserved_command_verb</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">rubric_holder</span><span class="plain-syntax">)</span>
|
||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">scene</span><span class="plain-syntax">)</span>
|
||||
|
@ -177,6 +179,7 @@ foundation module does that automatically.)
|
|||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-im.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">Create this module's plugins</span><span class="named-paragraph-number">4.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-im.html#SP4_3" class="named-paragraph-link"><span class="named-paragraph">Register this module's debugging log aspects</span><span class="named-paragraph-number">4.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="1-im.html#SP4_4" class="named-paragraph-link"><span class="named-paragraph">Register this module's debugging log writers</span><span class="named-paragraph-number">4.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ri.html#SP3" class="function-link"><span class="function-syntax">ReleaseInstructions::start</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="3-enah.html#SP2" class="function-link"><span class="function-syntax">WherePredicates::start</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="3-sr.html#SP2" class="function-link"><span class="function-syntax">PL::SpatialRelations::start</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><a href="3-mcr.html#SP1" class="function-link"><span class="function-syntax">PL::MapDirections::start</span></a><span class="plain-syntax">();</span>
|
||||
|
@ -202,7 +205,7 @@ foundation module does that automatically.)
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">showme_plugin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PluginManager::new</span><span class="plain-syntax">(&</span><a href="3-sc.html#SP1" class="function-link"><span class="function-syntax">PL::Showme::start</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"showme"</span><span class="plain-syntax">, </span><span class="identifier-syntax">if_plugin</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">times_plugin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PluginManager::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">TimesOfDay::start</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"times of day"</span><span class="plain-syntax">, </span><span class="identifier-syntax">if_plugin</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">scenes_plugin</span><span class="plain-syntax"> = </span><span class="identifier-syntax">PluginManager::new</span><span class="plain-syntax">(&</span><a href="3-scn.html#SP7" class="function-link"><span class="function-syntax">PL::Scenes::start</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"scenes"</span><span class="plain-syntax">, </span><span class="identifier-syntax">if_plugin</span><span class="plain-syntax">);</span>
|
||||
<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#SP2" class="function-link"><span class="function-syntax">PL::Bibliographic::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">if_plugin</span><span class="plain-syntax">);</span>
|
||||
<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">if_plugin</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">NULL</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">if_plugin</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-im.html#SP4">§4</a>.</li></ul>
|
||||
|
@ -371,7 +374,7 @@ foundation module does that automatically.)
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprevoff">❮</li><li class="progresscurrentchapter">1</li><li class="progresscurrent">im</li><li class="progresssection"><a href="1-ism.html">ism</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="1-ism.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="P-wtmd.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresscurrentchapter">1</li><li class="progresscurrent">im</li><li class="progresschapter"><a href="2-bd.html">2</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="2-bd.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -1,89 +0,0 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>IF Special Meanings</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="index.html"><span class="selectedlink">if</span></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 'IF Special Meanings' 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">if</a></li><li><a href="index.html#1">Chapter 1: Starting Up</a></li><li><b>IF Special Meanings</b></li></ul></div>
|
||||
<p class="purpose">Setting up the use of this module.</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">void</span><span class="plain-syntax"> </span><span class="function-syntax">IFModuleMeanings::bootstrap</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">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-scn.html#SP16" class="function-link"><span class="function-syntax">PL::Scenes::begins_when_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"scene-begins-when"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-scn.html#SP17" class="function-link"><span class="function-syntax">PL::Scenes::ends_when_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"scene-ends-when"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="5-tfg.html#SP5" class="function-link"><span class="function-syntax">PL::Parsing::understand_as_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"understand-as"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="4-act.html#SP24" class="function-link"><span class="function-syntax">PL::Actions::new_action_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-action"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="2-bd.html#SP8" class="function-link"><span class="function-syntax">PL::Bibliographic::episode_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"episode"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="2-ri.html#SP6" class="function-link"><span class="function-syntax">PL::Bibliographic::Release::release_along_with_SMF</span></a><span class="plain-syntax">,</span><span class="identifier-syntax">I</span><span class="string-syntax">"release-along-with"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-em.html#SP14" class="function-link"><span class="function-syntax">PL::EPSMap::index_map_with_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"index-map-with"</span><span class="plain-syntax">, </span><span class="constant-syntax">4</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="1-im.html">❮</a></li><li class="progresscurrentchapter">1</li><li class="progresssection"><a href="1-im.html">im</a></li><li class="progresscurrent">ism</li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="2-ifi.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -73,188 +73,63 @@ 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#2">Chapter 2: Bibliographic Data</a></li><li><b>Bibliographic Data</b></li></ul></div>
|
||||
<p class="purpose">To manage the special variables providing bibliographic data on the work of IF being generated (title, author's name and so forth), and to write the Library Card in the index.</p>
|
||||
|
||||
<ul class="toc"><li><a href="2-bd.html#SP14">§14. Bibliographic text</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="2-bd.html#SP1">§1. Enter the plugin</a></li><li><a href="2-bd.html#SP3">§3. Episode sentences</a></li><li><a href="2-bd.html#SP5">§5. Bibliographic variables</a></li><li><a href="2-bd.html#SP8">§8. The opening sentence</a></li><li><a href="2-bd.html#SP10">§10. The IFID</a></li><li><a href="2-bd.html#SP11">§11. Bibliographic text</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>Much of this section is best understood by reference to the Treaty of
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Enter the plugin. </b>This chapter defines the "bibliographic data" plugin, whose activation
|
||||
function follows.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Much of this chapter is best understood by reference to the Treaty of
|
||||
Babel, a cross-IF-system standard for bibliographic data and packaging
|
||||
agreed between the major IF design systems in 2006. Inform aims to comply
|
||||
fully with the Treaty and the code below should be maintained as such.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The bibliographic data for the story is kept in the following variables,
|
||||
which are used to build the iFiction record and the releasing blurb at
|
||||
the end of a successful compilation.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_headline_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_genre_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_description_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_release_number_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_creation_year_VAR</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">episode_number</span><span class="plain-syntax"> = -1; </span><span class="comment-syntax"> for a work which is part of a numbered series</span>
|
||||
<span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">series_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>This is organised as a plugin since it's all broadly IF-based, and not
|
||||
something you'd expect in a general programming language. But the main
|
||||
effect is only to make a small number of variables special.
|
||||
</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::Bibliographic::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::Bibliographic::start</span></span>:<br/>IF Module - <a href="1-im.html#SP4_1">§4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_VARIABLE_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="2-bd.html#SP4" class="function-link"><span class="function-syntax">PL::Bibliographic::bibliographic_new_variable_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BibliographicData::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">BibliographicData::start</span></span>:<br/>IF Module - <a href="1-im.html#SP4_1">§4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">MAKE_SPECIAL_MEANINGS_PLUG</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="2-bd.html#SP2" class="function-link"><span class="function-syntax">BibliographicData::make_special_meanings</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_VARIABLE_NOTIFY_PLUG</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="2-bd.html#SP7" class="function-link"><span class="function-syntax">BibliographicData::bibliographic_new_variable_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPILE_RUNTIME_DATA_PLUG</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTBibliographicData::compile_constants</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">POST_COMPILATION_PLUG</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ri.html#SP9" class="function-link"><span class="function-syntax">ReleaseInstructions::write_ifiction_and_blurb</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>The following grammar contains the names of all of the bibliographic
|
||||
variables — those used to set entries on the Library Card about a project.
|
||||
As usual, Inform uses these English wordings to detect the creation of the
|
||||
variables in the Standard Rules, which are in English: so there's no point
|
||||
in translating this nonterminal to other languages.
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>This enables two special sentence shapes: one which really should never
|
||||
have been included in Inform, to do with episode numbers, and another which
|
||||
is essential, allowing authors to specify how releases are made.
|
||||
</p>
|
||||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><notable-bibliographic-variables></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">title</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">author</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">headline</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">genre</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">description</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">creation</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">year</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">release</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">number</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="SP4" class="paragraph-anchor"></a><b>§4. </b>And we read them here:
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="Preform-constant-syntax">STORY_TITLE_BIBV</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">0</span>
|
||||
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">STORY_AUTHOR_BIBV</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">1</span>
|
||||
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">STORY_HEADLINE_BIBV</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">2</span>
|
||||
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">STORY_GENRE_BIBV</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">3</span>
|
||||
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">STORY_DESCRIPTION_BIBV</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">4</span>
|
||||
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">STORY_CREATION_YEAR_BIBV</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">5</span>
|
||||
<span class="definition-keyword">define</span> <span class="Preform-constant-syntax">RELEASE_NUMBER_BIBV</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">6</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">PL::Bibliographic::bibliographic_new_variable_notify</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::Bibliographic::bibliographic_new_variable_notify</span></span>:<br/><a href="2-bd.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</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-bibliographic-variables>(q-></span><span class="element-syntax">name</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="function-syntax"><<r>></span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STORY_TITLE_BIBV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">q</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STORY_AUTHOR_BIBV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">q</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STORY_HEADLINE_BIBV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_headline_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">q</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STORY_GENRE_BIBV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_genre_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">q</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STORY_DESCRIPTION_BIBV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_description_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">q</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STORY_CREATION_YEAR_BIBV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_creation_year_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">q</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">RELEASE_NUMBER_BIBV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_release_number_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">q</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NonlocalVariables::make_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">q</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">BibliographicData::make_special_meanings</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">BibliographicData::make_special_meanings</span></span>:<br/><a href="2-bd.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="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="2-bd.html#SP3" class="function-link"><span class="function-syntax">BibliographicData::episode_SMF</span></a><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"episode"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="2-ri.html#SP8" class="function-link"><span class="function-syntax">ReleaseInstructions::release_along_with_SMF</span></a><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"release-along-with"</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">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. </b>The following is called in response to the bibliographic sentence. That in
|
||||
fact has already been parsed by Inbuild, so we simply extract the results,
|
||||
and set the "story title" and "story author" variables accordingly.
|
||||
</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::Bibliographic::bibliographic_data</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="identifier-syntax">inbuild_edition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">edn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Task::edition</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="string-syntax">"\"%S\" "</span><span class="plain-syntax">, </span><span class="identifier-syntax">edn</span><span class="plain-syntax">-></span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="identifier-syntax">title</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">A</span><span class="plain-syntax">, </span><span class="string-syntax">"\"%S\" "</span><span class="plain-syntax">, </span><span class="identifier-syntax">edn</span><span class="plain-syntax">-></span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="identifier-syntax">author_name</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">TW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::feed_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">AW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::feed_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</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">story_title_VAR</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">story_author_VAR</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">the_title</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><s-value></span><span class="plain-syntax">(</span><span class="identifier-syntax">TW</span><span class="plain-syntax">)) </span><span class="identifier-syntax">the_title</span><span class="plain-syntax"> = </span><span class="function-syntax"><<rp>></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">the_title</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::new_UNKNOWN</span><span class="plain-syntax">(</span><span class="identifier-syntax">TW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Assertions::PropertyKnowledge::initialise_global_variable</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">the_title</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TextLiterals::suppress_quote_expansion</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">the_title</span><span class="plain-syntax">));</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">edn</span><span class="plain-syntax">-></span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="identifier-syntax">author_name</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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">the_author</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><s-value></span><span class="plain-syntax">(</span><span class="identifier-syntax">AW</span><span class="plain-syntax">)) </span><span class="identifier-syntax">the_author</span><span class="plain-syntax"> = </span><span class="function-syntax"><<rp>></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">the_author</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::new_UNKNOWN</span><span class="plain-syntax">(</span><span class="identifier-syntax">AW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Assertions::PropertyKnowledge::initialise_global_variable</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">the_author</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>This unattractive routine performs a string comparison of the author's name
|
||||
against one that's supplied, case sensitively, and is used when deciding
|
||||
whether to print credits at run-time for extensions written by the same
|
||||
person as the author of the main work.
|
||||
</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::Bibliographic::story_author_is</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</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">story_author_VAR</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VariableSubjects::get_initial_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">result</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</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">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">w1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-bd.html#SP14" class="function-link"><span class="function-syntax">PL::Bibliographic::compile_bibliographic_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="identifier-syntax">Lexer::word_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">w1</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">)) </span><span class="identifier-syntax">result</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</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">result</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>Inform probably shouldn't support this sentence, which does nothing other
|
||||
than to fill in two pieces of rarely-used bibliographic data (which could
|
||||
just as easily be variables). But two of the larger worked examples we were
|
||||
trying Inform out on, in the early days, belonged to a sequence called
|
||||
"When in Rome". So it didn't seem such an obscure request at the time.
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. Episode sentences. </b>Episode sentences do nothing other than to fill in two pieces of rarely-used
|
||||
bibliographic data (which could just as easily be variables). But two of the
|
||||
larger worked examples we were trying Inform out on, in the early days,
|
||||
belonged to a sequence called "When in Rome". So it didn't seem such an
|
||||
obscure request at the time.
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
<p>This is episode 2 of "When in Rome".</p>
|
||||
</blockquote>
|
||||
|
||||
<p class="commentary">The subject noun phrase is fixed, so the information is in the object NP,
|
||||
which must match:
|
||||
</p>
|
||||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><episode-sentence-subject></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><definite-article></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">this</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span>
|
||||
|
||||
<span class="Preform-function-syntax"><episode-sentence-object></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">episode</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><cardinal-number></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">of</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><quoted-text-without-subs></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { R[1], -, <<series>> = R[2] }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">episode</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP7_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_BadEpisode problem</span><span class="named-paragraph-number">7.1</span></a></span><span class="Preform-constant-syntax">;</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="SP7_1" class="paragraph-anchor"></a><b>§7.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_BadEpisode problem</span><span class="named-paragraph-number">7.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
<p class="commentary">This handles the special meaning "The story is episode...".
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<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_BadEpisode</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"this is not the right way to specify how the story "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"fits into a larger narrative"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"and should take the form 'The story is episode 2 of "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"\"Belt of Orion\", where the episode number has to be a "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"whole number 0, 1, 2, ... and the series name has to be "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"plain text without [substitutions]."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> ==> { -1, - };</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP7">§7</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>This handles the special meaning "The story is episode...".
|
||||
</p>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">episode_number</span><span class="plain-syntax"> = -1; </span><span class="comment-syntax"> for a work which is part of a numbered series</span>
|
||||
<span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">series_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Bibliographic::episode_SMF</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::Bibliographic::episode_SMF</span></span>:<br/>IF Special Meanings - <a href="1-ism.html#SP1">§1</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">BibliographicData::episode_SMF</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">BibliographicData::episode_SMF</span></span>:<br/><a href="2-bd.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">SW</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">[0]):</span><span class="identifier-syntax">EMPTY_WORDING</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"> "The story is episode 2 of ..."</span>
|
||||
|
@ -272,212 +147,190 @@ which must match:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>In the I6 template layer, some of the bibliographic variables are actually
|
||||
compiled to constants, used early on at run-time to print the banner.
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. </b>The subject noun phrase is fixed, so the information is in the object NP,
|
||||
which must match:
|
||||
</p>
|
||||
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><episode-sentence-subject></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><definite-article></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">this</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span>
|
||||
|
||||
<span class="Preform-function-syntax"><episode-sentence-object></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">episode</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><cardinal-number></span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">of</span><span class="Preform-plain-syntax"> </span><span class="Preform-function-syntax"><quoted-text-without-subs></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> { R[1], -, <<series>> = R[2] }</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">episode</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">...</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">==></span><span class="Preform-plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP4_1" class="named-paragraph-link"><span class="named-paragraph">Issue PM_BadEpisode problem</span><span class="named-paragraph-number">4.1</span></a></span><span class="Preform-constant-syntax">;</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="SP4_1" class="paragraph-anchor"></a><b>§4.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Issue PM_BadEpisode problem</span><span class="named-paragraph-number">4.1</span></span><span class="Preform-comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Bibliographic::compile_constants</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">encode_constant_text_bibliographically</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BEGIN_COMPILATION_MODE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">COMPILATION_MODE_ENTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPILE_TEXT_TO_I6_CMODE</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_BadEpisode</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"this is not the right way to specify how the story "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"fits into a larger narrative"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"and should take the form 'The story is episode 2 of "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"\"Belt of Orion\", where the episode number has to be a "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"whole number 0, 1, 2, ... and the series name has to be "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"plain text without [substitutions]."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> ==> { -1, - };</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP4">§4</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP5" class="paragraph-anchor"></a><b>§5. Bibliographic variables. </b>Most of the bibliographic data on a story is kept global variables, however,
|
||||
which are used to build the iFiction record and the releasing blurb at the end
|
||||
of a successful compilation. They are:
|
||||
</p>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP9_1" class="named-paragraph-link"><span class="named-paragraph">Compile the I6 Story constant</span><span class="named-paragraph-number">9.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">story_headline_VAR</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP9_2" class="named-paragraph-link"><span class="named-paragraph">Compile the I6 Headline constant</span><span class="named-paragraph-number">9.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP9_3" class="named-paragraph-link"><span class="named-paragraph">Compile the I6 Story Author constant</span><span class="named-paragraph-number">9.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">story_release_number_VAR</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP9_4" class="named-paragraph-link"><span class="named-paragraph">Compile the I6 Release directive</span><span class="named-paragraph-number">9.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP9_5" class="named-paragraph-link"><span class="named-paragraph">Compile the I6 serial number, based on the date</span><span class="named-paragraph-number">9.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_headline_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_genre_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_description_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_creation_year_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_release_number_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>As usual, Inform uses these English wordings to detect the creation of the
|
||||
variables in the Standard Rules, which are in English: so there's no point
|
||||
in translating this nonterminal to other languages.
|
||||
</p>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">END_COMPILATION_MODE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">encode_constant_text_bibliographically</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">STORY_TITLE_BIBV</span><span class="plain-syntax"> </span><span class="constant-syntax">0</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">STORY_AUTHOR_BIBV</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">STORY_HEADLINE_BIBV</span><span class="plain-syntax"> </span><span class="constant-syntax">2</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">STORY_GENRE_BIBV</span><span class="plain-syntax"> </span><span class="constant-syntax">3</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">STORY_DESCRIPTION_BIBV</span><span class="plain-syntax"> </span><span class="constant-syntax">4</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">STORY_CREATION_YEAR_BIBV</span><span class="plain-syntax"> </span><span class="constant-syntax">5</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">RELEASE_NUMBER_BIBV</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span>
|
||||
</pre>
|
||||
<pre class="Preform-displayed-code all-displayed-code code-font">
|
||||
<span class="Preform-function-syntax"><notable-bibliographic-variables></span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">::=</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">title</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">author</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">headline</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">genre</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">description</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">story</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">creation</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">year</span><span class="Preform-plain-syntax"> </span><span class="Preform-reserved-syntax">|</span>
|
||||
<span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">release</span><span class="Preform-plain-syntax"> </span><span class="Preform-constant-syntax">number</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="SP7" class="paragraph-anchor"></a><b>§7. </b>And we read them here:
|
||||
</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">BibliographicData::bibliographic_new_variable_notify</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">BibliographicData::bibliographic_new_variable_notify</span></span>:<br/><a href="2-bd.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">q</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-bibliographic-variables>(q-></span><span class="element-syntax">name</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="function-syntax"><<r>></span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STORY_TITLE_BIBV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">q</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STORY_AUTHOR_BIBV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">q</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STORY_HEADLINE_BIBV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_headline_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">q</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STORY_GENRE_BIBV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_genre_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">q</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STORY_DESCRIPTION_BIBV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_description_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">q</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">STORY_CREATION_YEAR_BIBV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_creation_year_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">q</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">RELEASE_NUMBER_BIBV:</span><span class="plain-syntax"> </span><span class="identifier-syntax">story_release_number_VAR</span><span class="plain-syntax"> = </span><span class="identifier-syntax">q</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NonlocalVariables::make_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">q</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9_1" class="paragraph-anchor"></a><b>§9.1. </b>If the author doesn't name a work, then its title is properly "", not
|
||||
"Welcome": that's just something we use to provide a readable banner.
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. The opening sentence. </b>The following is called in response to the bibliographic sentence — the
|
||||
optional one at the start of a source text which gives its title and author.
|
||||
This isn't handled by the special meaning machinery above because it really
|
||||
isn't a conventional sentence at all — there's no verb. Instead, <a href="../assertions-module/index.html" class="internal">assertions</a>
|
||||
calls this function directly on pass 2.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the I6 Story constant</span><span class="named-paragraph-number">9.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary">Should either title or author be unspecified, we use whatever the <a href="../supervisor-module/index.html" class="internal">supervisor</a>
|
||||
module thought was the title or author.
|
||||
</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">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">STORY_HL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NonlocalVariables::initial_value_as_plain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">v1</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTVariables::seek_initial_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_title_VAR</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">TextLiterals::compile_literal_from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"\"Welcome\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::named_generic_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_2" class="paragraph-anchor"></a><b>§9.2. </b>And similarly here:
|
||||
</p>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BibliographicData::bibliographic_data</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="identifier-syntax">inbuild_edition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">edn</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Task::edition</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">, </span><span class="string-syntax">"\"%S\" "</span><span class="plain-syntax">, </span><span class="identifier-syntax">edn</span><span class="plain-syntax">-></span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="identifier-syntax">title</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">A</span><span class="plain-syntax">, </span><span class="string-syntax">"\"%S\" "</span><span class="plain-syntax">, </span><span class="identifier-syntax">edn</span><span class="plain-syntax">-></span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="identifier-syntax">author_name</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">TW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::feed_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">AW</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::feed_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">T</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">A</span><span class="plain-syntax">)</span>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the I6 Headline constant</span><span class="named-paragraph-number">9.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">story_author_VAR</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">the_title</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><s-value></span><span class="plain-syntax">(</span><span class="identifier-syntax">TW</span><span class="plain-syntax">)) </span><span class="identifier-syntax">the_title</span><span class="plain-syntax"> = </span><span class="function-syntax"><<rp>></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">the_title</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::new_UNKNOWN</span><span class="plain-syntax">(</span><span class="identifier-syntax">TW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Assertions::PropertyKnowledge::initialise_global_variable</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">the_title</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TextLiterals::suppress_quote_expansion</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">the_title</span><span class="plain-syntax">));</span>
|
||||
|
||||
<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">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">HEADLINE_HL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">v1</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_headline_VAR</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NonlocalVariables::initial_value_as_plain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_headline_VAR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTVariables::seek_initial_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_headline_VAR</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">TextLiterals::compile_literal_from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"\"An Interactive Fiction\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::named_generic_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_3" class="paragraph-anchor"></a><b>§9.3. </b>This time we compile nothing if no author is provided:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the I6 Story Author constant</span><span class="named-paragraph-number">9.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_author_VAR</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><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">STORY_AUTHOR_HL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">v1</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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">NonlocalVariables::initial_value_as_plain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">RTVariables::seek_initial_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::named_generic_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">global_compilation_settings</span><span class="plain-syntax">.</span><span class="identifier-syntax">story_author_given</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">STORY_AUTHOR_HL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">v1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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">Emit::named_generic_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_4" class="paragraph-anchor"></a><b>§9.4. </b>Similarly (but numerically):
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the I6 Release directive</span><span class="named-paragraph-number">9.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_release_number_VAR</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><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">RELEASE_HL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">v1</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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">RTVariables::seek_initial_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_release_number_VAR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::named_generic_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP9_5" class="paragraph-anchor"></a><b>§9.5. </b>This innocuous code — if Inform runs on 25 June 2013, we compile the serial
|
||||
number "130625" — is actually controversial: quite a few users feel they
|
||||
should be able to fake the date-stamp with dates of their own choosing.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the I6 serial number, based on the date</span><span class="named-paragraph-number">9.5</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">SERIAL_HL</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">SN</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">year_digits</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">the_present</span><span class="plain-syntax">-></span><span class="identifier-syntax">tm_year</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">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">SN</span><span class="plain-syntax">, </span><span class="string-syntax">"%02d%02d%02d"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">year_digits</span><span class="plain-syntax">, (</span><span class="identifier-syntax">the_present</span><span class="plain-syntax">-></span><span class="identifier-syntax">tm_mon</span><span class="plain-syntax">)+1, </span><span class="identifier-syntax">the_present</span><span class="plain-syntax">-></span><span class="identifier-syntax">tm_mday</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::named_text_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">SN</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">SN</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP9">§9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. </b>The Library Card is part of the Contents index, and is intended as a
|
||||
natural way to present bibliographic data to the user. In effect, it's a
|
||||
simplified form of the iFiction record, without the XML overhead.
|
||||
</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::Bibliographic::index_library_card</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">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::anchor</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"LCARD"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"*bg_images/indexcard.png"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-bd.html#SP11" class="function-link"><span class="function-syntax">PL::Bibliographic::library_card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Story title"</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Untitled"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-bd.html#SP11" class="function-link"><span class="function-syntax">PL::Bibliographic::library_card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Story author"</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Anonymous"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-bd.html#SP11" class="function-link"><span class="function-syntax">PL::Bibliographic::library_card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Story headline"</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_headline_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"An Interactive Fiction"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-bd.html#SP11" class="function-link"><span class="function-syntax">PL::Bibliographic::library_card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Story genre"</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_genre_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Fiction"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">episode_number</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">episode_text</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">episode_text</span><span class="plain-syntax">, </span><span class="string-syntax">"%d of %w"</span><span class="plain-syntax">, </span><span class="identifier-syntax">episode_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">series_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-bd.html#SP11" class="function-link"><span class="function-syntax">PL::Bibliographic::library_card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Episode"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">episode_text</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">episode_text</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="2-bd.html#SP11" class="function-link"><span class="function-syntax">PL::Bibliographic::library_card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Release number"</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_release_number_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"1"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-bd.html#SP11" class="function-link"><span class="function-syntax">PL::Bibliographic::library_card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Story creation year"</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_creation_year_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"(This year)"</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">lang</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inform_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Projects::get_language_of_play</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::project</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">L</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">lang</span><span class="plain-syntax">, </span><span class="string-syntax">"English"</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_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">lang</span><span class="plain-syntax">, </span><span class="string-syntax">"%X"</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-></span><span class="identifier-syntax">edition</span><span class="plain-syntax">-></span><span class="identifier-syntax">work</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-bd.html#SP11" class="function-link"><span class="function-syntax">PL::Bibliographic::library_card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Language of play"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">lang</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">lang</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="2-bd.html#SP11" class="function-link"><span class="function-syntax">PL::Bibliographic::library_card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"IFID number"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><a href="2-ifi.html#SP1" class="function-link"><span class="function-syntax">PL::Bibliographic::IFID::read_uuid</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><a href="2-bd.html#SP11" class="function-link"><span class="function-syntax">PL::Bibliographic::library_card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Story description"</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_description_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"None"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>This uses:
|
||||
</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::Bibliographic::library_card_entry</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::Bibliographic::library_card_entry</span></span>:<br/><a href="2-bd.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">field</span><span class="plain-syntax">, </span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">col</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"303030"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">nlv</span><span class="plain-syntax"> == </span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax">) </span><span class="identifier-syntax">col</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"803030"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::first_html_column_nowrap</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</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">HTML::begin_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">col</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">, </span><span class="string-syntax">"class=\"typewritten\""</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">"%s"</span><span class="plain-syntax">, </span><span class="identifier-syntax">field</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::next_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">HTML::begin_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">col</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">, </span><span class="string-syntax">"class=\"typewritten\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"b"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-bd.html#SP13" class="function-link"><span class="function-syntax">PL::Bibliographic::index_bibliographic_variable</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">nlv</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">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"b"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_row</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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>The Index also likes to print the name and authorship at the top of the
|
||||
Contents listing, so:
|
||||
</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::Bibliographic::contents_heading</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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">story_author_VAR</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Contents"</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-bd.html#SP13" class="function-link"><span class="function-syntax">PL::Bibliographic::index_bibliographic_variable</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Untitled"</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">" by "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-bd.html#SP13" class="function-link"><span class="function-syntax">PL::Bibliographic::index_bibliographic_variable</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Anonymous"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">edn</span><span class="plain-syntax">-></span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="identifier-syntax">author_name</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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">the_author</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="function-syntax"><s-value></span><span class="plain-syntax">(</span><span class="identifier-syntax">AW</span><span class="plain-syntax">)) </span><span class="identifier-syntax">the_author</span><span class="plain-syntax"> = </span><span class="function-syntax"><<rp>></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">the_author</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Specifications::new_UNKNOWN</span><span class="plain-syntax">(</span><span class="identifier-syntax">AW</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Assertions::PropertyKnowledge::initialise_global_variable</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">the_author</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. </b>And both of those features use:
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b>This unattractive function performs a string comparison of the author's name
|
||||
against one that's supplied, case sensitively, and is used when deciding
|
||||
whether to print credits at run-time for extensions written by the same
|
||||
person as the author of the main work.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Bibliographic::index_bibliographic_variable</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::Bibliographic::index_bibliographic_variable</span></span>:<br/><a href="2-bd.html#SP11">§11</a>, <a href="2-bd.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BEGIN_COMPILATION_MODE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">COMPILATION_MODE_ENTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPILE_TEXT_TO_XML_CMODE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NonlocalVariables::initial_value_as_plain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-bd.html#SP14" class="function-link"><span class="function-syntax">PL::Bibliographic::compile_bibliographic_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Lexer::word_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</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">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">t</span><span class="plain-syntax">);</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">BibliographicData::story_author_is</span><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</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">story_author_VAR</span><span class="plain-syntax">) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">spec</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VariableSubjects::get_initial_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Node::set_kind_of_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_text</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">result</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</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">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">spec</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">w1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-bd.html#SP11" class="function-link"><span class="function-syntax">BibliographicData::compile_bibliographic_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="identifier-syntax">Lexer::word_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">w1</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">)) </span><span class="identifier-syntax">result</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</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">result</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">END_COMPILATION_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="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. Bibliographic text. </b>"Bibliographic text" is text used in bibliographic data about the work
|
||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. The IFID. </b>The Interactive Fiction ID number for an Inform 7-compiled work is the same
|
||||
as the UUID unique ID generated by the Inform 7 application.
|
||||
</p>
|
||||
|
||||
<p class="commentary">UUIDs are not generated here, but by the user interface application. We expect
|
||||
to read them in the form of the <span class="extract"><span class="extract-syntax">uuid.txt</span></span> file placed in the project bundle
|
||||
by that application. After some agonising, I decided that the Treaty did not
|
||||
actually oblige me to crash out if this file did not exist: but in such
|
||||
cases the UUID is empty.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">MAX_UUID_LENGTH</span><span class="plain-syntax"> </span><span class="constant-syntax">128</span><span class="plain-syntax"> </span><span class="comment-syntax"> the UUID is truncated to this if necessary</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uuid_text</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">uuid_read</span><span class="plain-syntax"> = -1;</span>
|
||||
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">BibliographicData::read_uuid</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">BibliographicData::read_uuid</span></span>:<br/>The iFiction Record - <a href="2-tir.html#SP1_1_1">§1.1.1</a><br/>The Blurb File - <a href="2-tbf.html#SP1_2_5">§1.2.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">uuid_read</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">uuid_text</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">uuid_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">uuid_read</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">FILE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">xf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::fopen</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::uuid_file</span><span class="plain-syntax">(), </span><span class="string-syntax">"r"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">xf</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">uuid_text</span><span class="plain-syntax">; </span><span class="comment-syntax"> the UUID is the empty string if the file is missing</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (((</span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="identifier-syntax">fgetc</span><span class="plain-syntax">(</span><span class="identifier-syntax">xf</span><span class="plain-syntax">)) != </span><span class="identifier-syntax">EOF</span><span class="plain-syntax">) </span><span class="comment-syntax"> the UUID file is plain text, not Unicode</span>
|
||||
<span class="plain-syntax"> && (</span><span class="identifier-syntax">uuid_read</span><span class="plain-syntax">++ < </span><span class="constant-syntax">MAX_UUID_LENGTH</span><span class="plain-syntax">-1))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">uuid_text</span><span class="plain-syntax">, (</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">Characters::toupper</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="identifier-syntax">c</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">fclose</span><span class="plain-syntax">(</span><span class="identifier-syntax">xf</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">uuid_text</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. Bibliographic text. </b>"Bibliographic text" is text used in bibliographic data about the work
|
||||
of IF compiled: for instance, in the iFiction record, or in the Library
|
||||
Card section of the HTML index. Note that the exact output format depends
|
||||
on global variables, which allow the bibliographic text writing code to
|
||||
|
@ -486,38 +339,39 @@ therefore splits into one of three independent methods.
|
|||
</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::Bibliographic::compile_bibliographic_text</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::Bibliographic::compile_bibliographic_text</span></span>:<br/><a href="2-bd.html#SP6">§6</a>, <a href="2-bd.html#SP13">§13</a><br/>Release Instructions - <a href="2-ri.html#SP11">§11</a>, <a href="2-ri.html#SP12">§12</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BibliographicData::compile_bibliographic_text</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">BibliographicData::compile_bibliographic_text</span></span>:<br/><a href="2-bd.html#SP9">§9</a><br/>The iFiction Record - <a href="2-tir.html#SP2">§2</a><br/>The Blurb File - <a href="2-tbf.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">p</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="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">TEST_COMPILATION_MODE</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPILE_TEXT_TO_XML_CMODE</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP14_1" class="named-paragraph-link"><span class="named-paragraph">Compile bibliographic text as XML respecting Treaty of Babel rules</span><span class="named-paragraph-number">14.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP11_1" class="named-paragraph-link"><span class="named-paragraph">Compile bibliographic text as XML respecting Treaty of Babel rules</span><span class="named-paragraph-number">11.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">TEST_COMPILATION_MODE</span><span class="plain-syntax">(</span><span class="identifier-syntax">TRUNCATE_TEXT_CMODE</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP14_4" class="named-paragraph-link"><span class="named-paragraph">Compile bibliographic text as a truncated filename</span><span class="named-paragraph-number">14.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP11_4" class="named-paragraph-link"><span class="named-paragraph">Compile bibliographic text as a truncated filename</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">TEST_COMPILATION_MODE</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPILE_TEXT_TO_I6_CMODE</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP14_3" class="named-paragraph-link"><span class="named-paragraph">Compile bibliographic text as an I6 string</span><span class="named-paragraph-number">14.3</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP14_2" class="named-paragraph-link"><span class="named-paragraph">Compile bibliographic text as HTML</span><span class="named-paragraph-number">14.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP11_3" class="named-paragraph-link"><span class="named-paragraph">Compile bibliographic text as an I6 string</span><span class="named-paragraph-number">11.3</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-bd.html#SP11_2" class="named-paragraph-link"><span class="named-paragraph">Compile bibliographic text as HTML</span><span class="named-paragraph-number">11.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP14_1" class="paragraph-anchor"></a><b>§14.1. </b>This looks like a standard routine for converting ISO Latin-1 to UTF-8
|
||||
<p class="commentary firstcommentary"><a id="SP11_1" class="paragraph-anchor"></a><b>§11.1. </b>This looks like a standard routine for converting ISO Latin-1 to UTF-8
|
||||
with XML escapes, but there are a few conventions on whitespace, too, in order
|
||||
to comply with a strict reading of the Treaty of Babel. (This is intended
|
||||
for fields in iFiction records.)
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile bibliographic text as XML respecting Treaty of Babel rules</span><span class="named-paragraph-number">14.1</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile bibliographic text as XML respecting Treaty of Babel rules</span><span class="named-paragraph-number">11.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="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">i2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wide::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)-1, </span><span class="identifier-syntax">snl</span><span class="plain-syntax">, </span><span class="identifier-syntax">wsc</span><span 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="identifier-syntax">i2</span><span class="plain-syntax">] == </span><span class="character-syntax">'"'</span><span class="plain-syntax">)) { </span><span class="identifier-syntax">i</span><span class="plain-syntax">++; </span><span class="identifier-syntax">i2</span><span class="plain-syntax">--; } </span><span class="comment-syntax"> omit surrounding double-quotes</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Characters::is_babel_whitespace</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">])) </span><span class="identifier-syntax">i</span><span class="plain-syntax">++; </span><span class="comment-syntax"> omit leading whitespace</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">i2</span><span class="plain-syntax">>=0) && (</span><span class="identifier-syntax">Characters::is_babel_whitespace</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">i2</span><span class="plain-syntax">]))) </span><span class="identifier-syntax">i2</span><span class="plain-syntax">--; </span><span class="comment-syntax"> omit trailing whitespace</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Characters::is_babel_whitespace</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">])) </span><span class="identifier-syntax">i</span><span class="plain-syntax">++; </span><span class="comment-syntax"> omit leading space</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">i2</span><span class="plain-syntax">>=0) && (</span><span class="identifier-syntax">Characters::is_babel_whitespace</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">i2</span><span class="plain-syntax">]))) </span><span class="identifier-syntax">i2</span><span class="plain-syntax">--; </span><span class="comment-syntax"> omit trailing space</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="identifier-syntax">snl</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">wsc</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">; </span><span class="identifier-syntax">i</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">switch</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">i</span><span class="plain-syntax">]) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">' '</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'\x0a'</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'\x0d'</span><span class="plain-syntax">: </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="character-syntax">'\t'</span><span class="plain-syntax">:</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">snl</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">wsc</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">k</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">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">k</span><span class="plain-syntax">] == </span><span class="character-syntax">' '</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">k</span><span class="plain-syntax">] == </span><span class="character-syntax">'\x0a'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">k</span><span class="plain-syntax">] == </span><span class="character-syntax">'\x0d'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">k</span><span class="plain-syntax">] == </span><span class="character-syntax">'\t'</span><span class="plain-syntax">)) </span><span class="identifier-syntax">k</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">k</span><span class="plain-syntax">] == </span><span class="character-syntax">' '</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">k</span><span class="plain-syntax">] == </span><span class="character-syntax">'\x0a'</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">k</span><span class="plain-syntax">] == </span><span class="character-syntax">'\x0d'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">k</span><span class="plain-syntax">] == </span><span class="character-syntax">'\t'</span><span class="plain-syntax">)) </span><span class="identifier-syntax">k</span><span class="plain-syntax">++;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">wsc</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">p</span><span class="plain-syntax">[</span><span class="identifier-syntax">k</span><span class="plain-syntax">] != </span><span class="identifier-syntax">NEWLINE_IN_STRING</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">" "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">NEWLINE_IN_STRING:</span>
|
||||
|
@ -546,12 +400,12 @@ for fields in iFiction records.)
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP14">§14</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP14_2" class="paragraph-anchor"></a><b>§14.2. </b>In the HTML version, we want to respect the forcing of newlines, and
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP11">§11</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11_2" class="paragraph-anchor"></a><b>§11.2. </b>In the HTML version, we want to respect the forcing of newlines, and
|
||||
also the <span class="extract"><span class="extract-syntax">[']</span></span> escape to obtain a literal single quotation mark.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile bibliographic text as HTML</span><span class="named-paragraph-number">14.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile bibliographic text as HTML</span><span class="named-paragraph-number">11.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -587,12 +441,12 @@ also the <span class="extract"><span class="extract-syntax">[']</span></span> es
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP14">§14</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP14_3" class="paragraph-anchor"></a><b>§14.3. </b>In the Inform 6 string version, we suppress the forcing of newlines, but
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP11">§11</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11_3" class="paragraph-anchor"></a><b>§11.3. </b>In the Inform 6 string version, we suppress the forcing of newlines, but
|
||||
otherwise it's much the same.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile bibliographic text as an I6 string</span><span class="named-paragraph-number">14.3</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile bibliographic text as an I6 string</span><span class="named-paragraph-number">11.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -618,8 +472,8 @@ otherwise it's much the same.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP14">§14</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP14_4" class="paragraph-anchor"></a><b>§14.4. </b>This code is used to work out a good filename for something given a name
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP11">§11</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP11_4" class="paragraph-anchor"></a><b>§11.4. </b>This code is used to work out a good filename for something given a name
|
||||
inside Inform. For instance, if a project is called
|
||||
</p>
|
||||
|
||||
|
@ -655,7 +509,7 @@ German eszet will be barbarously shortened to a single "s", but life is
|
|||
just too short to care overmuch about this.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile bibliographic text as a truncated filename</span><span class="named-paragraph-number">14.4</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile bibliographic text as a truncated filename</span><span class="named-paragraph-number">11.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
@ -690,9 +544,9 @@ just too short to care overmuch about this.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</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="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"story"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP14">§14</a>.</li></ul>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-bd.html#SP11">§11</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ifi.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-ifi.html">ifi</a></li><li class="progresscurrent">bd</li><li class="progresssection"><a href="2-ri.html">ri</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="2-ri.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-im.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="progresscurrentchapter">2</li><li class="progresscurrent">bd</li><li class="progresssection"><a href="2-ri.html">ri</a></li><li class="progresssection"><a href="2-tir.html">tir</a></li><li class="progresssection"><a href="2-tbf.html">tbf</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="2-ri.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -1,132 +0,0 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Interactive Fiction ID</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="../core-module/index.html">core</a></li>
|
||||
<li><a href="../assertions-module/index.html">assertions</a></li>
|
||||
<li><a href="../values-module/index.html">values</a></li>
|
||||
<li><a href="../knowledge-module/index.html">knowledge</a></li>
|
||||
<li><a href="../imperative-module/index.html">imperative</a></li>
|
||||
<li><a href="../runtime-module/index.html">runtime</a></li>
|
||||
<li><a href="index.html"><span class="selectedlink">if</span></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 'Interactive Fiction ID' 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">if</a></li><li><a href="index.html#2">Chapter 2: Bibliographic Data</a></li><li><b>Interactive Fiction ID</b></li></ul></div>
|
||||
<p class="purpose">Computes and makes available the IFID (Interactive Fiction ID) number for an Inform-generated work of IF, in compliance with the Treaty of Babel.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The Interactive Fiction ID number for an Inform 7-compiled work is the
|
||||
same as the UUID unique ID generated by the Inform 7 application.
|
||||
</p>
|
||||
|
||||
<p class="commentary">UUIDs are not generated here, but by the user interface application: we expect
|
||||
to read them in the form of the <span class="extract"><span class="extract-syntax">uuid.txt</span></span> file placed in the project bundle
|
||||
by that application. After some agonising, I decided that the Treaty did not
|
||||
actually oblige me to crash out if this file did not exist: but in such
|
||||
cases the UUID is empty.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">MAX_UUID_LENGTH</span><span class="plain-syntax"> </span><span class="constant-syntax">128</span><span class="plain-syntax"> </span><span class="comment-syntax"> the UUID is truncated to this if necessary</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uuid_text</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">uuid_read</span><span class="plain-syntax"> = -1;</span>
|
||||
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">PL::Bibliographic::IFID::read_uuid</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::Bibliographic::IFID::read_uuid</span></span>:<br/><a href="2-ifi.html#SP2">§2</a><br/>Bibliographic Data - <a href="2-bd.html#SP10">§10</a><br/>Release Instructions - <a href="2-ri.html#SP10_1_1">§10.1.1</a>, <a href="2-ri.html#SP13_2_5">§13.2.5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">uuid_read</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">uuid_text</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">uuid_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::new</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">uuid_read</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">FILE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">xf</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::fopen</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::uuid_file</span><span class="plain-syntax">(), </span><span class="string-syntax">"r"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">xf</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">uuid_text</span><span class="plain-syntax">; </span><span class="comment-syntax"> the UUID is the empty string if the file is missing</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">while</span><span class="plain-syntax"> (((</span><span class="identifier-syntax">c</span><span class="plain-syntax"> = </span><span class="identifier-syntax">fgetc</span><span class="plain-syntax">(</span><span class="identifier-syntax">xf</span><span class="plain-syntax">)) != </span><span class="identifier-syntax">EOF</span><span class="plain-syntax">) </span><span class="comment-syntax"> the UUID file is plain text, not Unicode</span>
|
||||
<span class="plain-syntax"> && (</span><span class="identifier-syntax">uuid_read</span><span class="plain-syntax">++ < </span><span class="constant-syntax">MAX_UUID_LENGTH</span><span class="plain-syntax">-1))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PUT_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">uuid_text</span><span class="plain-syntax">, (</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">Characters::toupper</span><span class="plain-syntax">((</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax">) </span><span class="identifier-syntax">c</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">fclose</span><span class="plain-syntax">(</span><span class="identifier-syntax">xf</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">uuid_text</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>The IFID is written into the compiled story file, too, both in order
|
||||
that it can be printed by the VERSION command and to brand the file so
|
||||
that it can still be identified even if it loses touch with its iFiction
|
||||
record. We store the IFID in plain text, with a "magic string" identifier
|
||||
around it, in byte-accessible memory.
|
||||
</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::Bibliographic::IFID::define_UUID</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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uuid</span><span class="plain-syntax"> = </span><a href="2-ifi.html#SP1" class="function-link"><span class="function-syntax">PL::Bibliographic::IFID::read_uuid</span></a><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">UUID_array_iname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">UUID_ARRAY_HL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Emit::named_string_constant</span><span class="plain-syntax">(</span><span class="identifier-syntax">UUID_array_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">uuid</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::make_available</span><span class="plain-syntax">(</span><span class="identifier-syntax">Emit::tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">UUID_array_iname</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">PL::Bibliographic::IFID::UUID</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Hierarchy::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">UUID_ARRAY_HL</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="1-ism.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">ifi</li><li class="progresssection"><a href="2-bd.html">bd</a></li><li class="progresssection"><a href="2-ri.html">ri</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="2-bd.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
File diff suppressed because it is too large
Load diff
503
docs/if-module/2-tbf.html
Normal file
503
docs/if-module/2-tbf.html
Normal file
|
@ -0,0 +1,503 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>The Blurb File</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="../core-module/index.html">core</a></li>
|
||||
<li><a href="../assertions-module/index.html">assertions</a></li>
|
||||
<li><a href="../values-module/index.html">values</a></li>
|
||||
<li><a href="../knowledge-module/index.html">knowledge</a></li>
|
||||
<li><a href="../imperative-module/index.html">imperative</a></li>
|
||||
<li><a href="../runtime-module/index.html">runtime</a></li>
|
||||
<li><a href="index.html"><span class="selectedlink">if</span></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 Blurb File' 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">if</a></li><li><a href="index.html#2">Chapter 2: Bibliographic Data</a></li><li><b>The Blurb File</b></li></ul></div>
|
||||
<p class="purpose">To write the blurb file of instructions for inblorb to release the project.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>Releasing requires four programs to work together: this one, Inform 6
|
||||
to turn our output into a story file, a releasing agent called "Inblorb"
|
||||
which binds up the result into a blorbed file, and lastly the user interface,
|
||||
which calls the other three in the right sequence.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Although the user interface looks as if it's in charge, in fact we are
|
||||
pulling the strings, because we write a "blurb file" of instructions
|
||||
telling Inblorb exactly what to do. The format for this is an extension of
|
||||
the "blurb" format documented in the "Inform Designer's Manual",
|
||||
fourth edition (the "DM4"); see the published source code for Inblorb.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Note that the code below does not generate an <span class="extract"><span class="extract-syntax">author</span></span> blurb instruction,
|
||||
which would lead to an AUTH chunk in the final blorb. This is partly
|
||||
because the AUTH chunk is now obsolete in the wake of the Treaty of
|
||||
Babel, but also because it avoids problems with Unicode: an AUTH can
|
||||
only contain plainest ASCII, whereas the author's name known to Inform
|
||||
may very well use characters not representable in ASCII. There is no
|
||||
good way round this: so, farewell AUTH.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Similarly, we do not supply a release number. The release number of a blorb
|
||||
has a different meaning from that of the story file embedded in it: the
|
||||
number refers to the release of the picture and sound resources found
|
||||
in the blorb, and we know nothing about that. (It's a feature provided
|
||||
for archival re-releases of 1980s IF.)
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">BIBLIOGRAPHIC_TEXT_TRUNCATION</span><span class="plain-syntax"> </span><span class="constant-syntax">31</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BlurbFile::write</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">BlurbFile::write</span></span>:<br/>Release Instructions - <a href="2-ri.html#SP9_2">§9.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">release_instructions</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rel</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">TEMP</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tbf.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Compose the blorbed story filename into the TEMP stream</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"! Blurb file created by Inform %B (build %B)\n\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tbf.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Write the body of the Blurb file</span><span class="named-paragraph-number">1.2</span></a></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">TEMP</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1" class="paragraph-anchor"></a><b>§1.1. </b>Note that we truncate the title if it becomes vastly long, to make sure
|
||||
the Blorb-file's filename won't be too long for the file system.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compose the blorbed story filename into the TEMP stream</span><span class="named-paragraph-number">1.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="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">story_title_VAR</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">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BEGIN_COMPILATION_MODE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">COMPILATION_MODE_ENTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">TRUNCATE_TEXT_CMODE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tbf.html#SP3" class="function-link"><span class="function-syntax">BlurbFile::write_var_to_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">END_COMPILATION_MODE</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_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="string-syntax">"story"</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">TEMP</span><span class="plain-syntax">, </span><span class="string-syntax">".%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">TargetVMs::get_blorbed_extension</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::vm</span><span class="plain-syntax">()));</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tbf.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2" class="paragraph-anchor"></a><b>§1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the body of the Blurb file</span><span class="named-paragraph-number">1.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="named-paragraph-container code-font"><a href="2-tbf.html#SP1_2_1" class="named-paragraph-link"><span class="named-paragraph">Tell Inblorb where to write its report to</span><span class="named-paragraph-number">1.2.1</span></a></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">"\n! Identification\n\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tbf.html#SP1_2_2" class="named-paragraph-link"><span class="named-paragraph">Tell Inblorb where the project and release folders are</span><span class="named-paragraph-number">1.2.2</span></a></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">"\n! Blorb instructions\n\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tbf.html#SP1_2_3" class="named-paragraph-link"><span class="named-paragraph">Tell Inblorb where the story file and iFiction files are</span><span class="named-paragraph-number">1.2.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tbf.html#SP1_2_4" class="named-paragraph-link"><span class="named-paragraph">Give instructions about the cover image</span><span class="named-paragraph-number">1.2.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Figures::write_blurb_commands</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Sounds::write_blurb_commands</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">"\n! Placeholder variables\n\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tbf.html#SP1_2_5" class="named-paragraph-link"><span class="named-paragraph">Write numerous placeholder variables</span><span class="named-paragraph-number">1.2.5</span></a></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">"\n! Other material to release\n\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tbf.html#SP1_2_6" class="named-paragraph-link"><span class="named-paragraph">Give instructions about source text, solution and library card</span><span class="named-paragraph-number">1.2.6</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tbf.html#SP1_2_7" class="named-paragraph-link"><span class="named-paragraph">Give instructions about auxiliary files</span><span class="named-paragraph-number">1.2.7</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">rel</span><span class="plain-syntax">-></span><span class="element-syntax">release_interpreter</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-tbf.html#SP1_2_8" class="named-paragraph-link"><span class="named-paragraph">Give instructions to release with an interpreter for Web play</span><span class="named-paragraph-number">1.2.8</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">rel</span><span class="plain-syntax">-></span><span class="element-syntax">release_website</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-tbf.html#SP1_2_9" class="named-paragraph-link"><span class="named-paragraph">Give instructions to construct a website around the release</span><span class="named-paragraph-number">1.2.9</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tbf.html#SP1_2_10" class="named-paragraph-link"><span class="named-paragraph">Give hints to Inblorb for its HTML status page</span><span class="named-paragraph-number">1.2.10</span></a></span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tbf.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_1" class="paragraph-anchor"></a><b>§1.2.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Tell Inblorb where to write its report to</span><span class="named-paragraph-number">1.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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"status \"%f\" \"%f\"\n\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Supervisor::file_from_installation</span><span class="plain-syntax">(</span><span class="identifier-syntax">CBLORB_REPORT_MODEL_IRES</span><span class="plain-syntax">),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Task::cblorb_report_file</span><span class="plain-syntax">());</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tbf.html#SP1_2">§1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_2" class="paragraph-anchor"></a><b>§1.2.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Tell Inblorb where the project and release folders are</span><span class="named-paragraph-number">1.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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"project folder \"%p\"\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Projects::path</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::project</span><span class="plain-syntax">()));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">create_Materials</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">"release to \"%p\"\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Task::release_path</span><span class="plain-syntax">());</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tbf.html#SP1_2">§1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_3" class="paragraph-anchor"></a><b>§1.2.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Tell Inblorb where the story file and iFiction files are</span><span class="named-paragraph-number">1.2.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"storyfile leafname \""</span><span class="plain-syntax">); </span><span class="identifier-syntax">STREAM_COPY</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\"\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Task::wraps_existing_storyfile</span><span class="plain-syntax">())</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"storyfile \"%f\" include\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Task::existing_storyfile_file</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">"storyfile \"%f\" include\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Task::storyfile_file</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">"ifiction \"%f\" include\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Task::ifiction_record_file</span><span class="plain-syntax">());</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tbf.html#SP1_2">§1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_4" class="paragraph-anchor"></a><b>§1.2.4. </b>A controversial point here is that if the author supplies no cover art, we
|
||||
supply it for him, and if necessary copy a suitable image into any website
|
||||
released along with the work.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Give instructions about the cover image</span><span class="named-paragraph-number">1.2.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">release_cover</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">large</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">strcmp</span><span class="plain-syntax">(</span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">cover_art_format</span><span class="plain-syntax">, </span><span class="string-syntax">"jpg"</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">large</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Task::large_cover_art_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">large</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Task::large_cover_art_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"cover \"%f\"\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">large</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">"picture %d \"%f\"\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">cover_picture_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">large</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"cover \"%f\"\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Supervisor::file_from_installation</span><span class="plain-syntax">(</span><span class="identifier-syntax">LARGE_DEFAULT_COVER_ART_IRES</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">"picture %d \"%f\"\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="identifier-syntax">Supervisor::file_from_installation</span><span class="plain-syntax">(</span><span class="identifier-syntax">LARGE_DEFAULT_COVER_ART_IRES</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">release_website</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">"release file \"%f\"\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Supervisor::file_from_installation</span><span class="plain-syntax">(</span><span class="identifier-syntax">LARGE_DEFAULT_COVER_ART_IRES</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">"release file \"%f\"\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Supervisor::file_from_installation</span><span class="plain-syntax">(</span><span class="identifier-syntax">SMALL_DEFAULT_COVER_ART_IRES</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tbf.html#SP1_2">§1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_5" class="paragraph-anchor"></a><b>§1.2.5. </b>This will be recognisable as yet another form of the Library Card information.
|
||||
"Placeholders" are the only data structure in the primitive blurb language, and
|
||||
are in effect strings, whose names appear in block capitals within square
|
||||
brackets [THUS].
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write numerous placeholder variables</span><span class="named-paragraph-number">1.2.5</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"placeholder [IFID] = \"%S\"\n"</span><span class="plain-syntax">, </span><a href="2-bd.html#SP10" class="function-link"><span class="function-syntax">BibliographicData::read_uuid</span></a><span class="plain-syntax">());</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_release_number_VAR</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">"placeholder [RELEASE] = \""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tbf.html#SP3" class="function-link"><span class="function-syntax">BlurbFile::write_var_to_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_release_number_VAR</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">"\"\n"</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">"placeholder [RELEASE] = \"1\"\n"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BEGIN_COMPILATION_MODE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">COMPILATION_MODE_ENTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPILE_TEXT_TO_XML_CMODE</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_creation_year_VAR</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">"placeholder [YEAR] = \""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tbf.html#SP3" class="function-link"><span class="function-syntax">BlurbFile::write_var_to_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_creation_year_VAR</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">"\"\n"</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">"placeholder [YEAR] = \"%d\"\n"</span><span class="plain-syntax">, (</span><span class="identifier-syntax">the_present</span><span class="plain-syntax">-></span><span class="identifier-syntax">tm_year</span><span class="plain-syntax">)+1900);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NonlocalVariables::initial_value_as_plain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_title_VAR</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">"placeholder [TITLE] = \""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tbf.html#SP3" class="function-link"><span class="function-syntax">BlurbFile::write_var_to_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_title_VAR</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">"\"\n"</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">"placeholder [TITLE] = \"Untitled\"\n"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NonlocalVariables::initial_value_as_plain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_author_VAR</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">"placeholder [AUTHOR] = \""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tbf.html#SP3" class="function-link"><span class="function-syntax">BlurbFile::write_var_to_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_author_VAR</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">"\"\n"</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">"placeholder [AUTHOR] = \"Anonymous\"\n"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_description_VAR</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NonlocalVariables::initial_value_as_plain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_description_VAR</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">"placeholder [BLURB] = \""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tbf.html#SP3" class="function-link"><span class="function-syntax">BlurbFile::write_var_to_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_description_VAR</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">"\"\n"</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">"placeholder [BLURB] = \"A work of interactive fiction.\"\n"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">END_COMPILATION_MODE</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tbf.html#SP1_2">§1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_6" class="paragraph-anchor"></a><b>§1.2.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Give instructions about source text, solution and library card</span><span class="named-paragraph-number">1.2.6</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">release_source</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">source_public</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"source public\n"</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">"source\n"</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">rel</span><span class="plain-syntax">-></span><span class="element-syntax">release_solution</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">solution_public</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"solution public\n"</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">"solution\n"</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">rel</span><span class="plain-syntax">-></span><span class="element-syntax">release_card</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">card_public</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"ifiction public\n"</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">"ifiction\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tbf.html#SP1_2">§1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_7" class="paragraph-anchor"></a><b>§1.2.7. </b>The Introduction booklet and the Postcard are both squirreled away inside
|
||||
a standard Inform installation. Under the Creative Commons licence terms for
|
||||
the Postcard, we have to credit its authors here; but the booklet contains its
|
||||
own credits.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Give instructions about auxiliary files</span><span class="named-paragraph-number">1.2.7</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">auxiliary_file</span><span class="plain-syntax"> *</span><span class="identifier-syntax">af</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">af</span><span class="plain-syntax">, </span><span class="reserved-syntax">auxiliary_file</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">rel</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Pathnames::to_text_relative</span><span class="plain-syntax">(</span><span class="identifier-syntax">rel</span><span class="plain-syntax">, </span><span class="identifier-syntax">af</span><span class="plain-syntax">-></span><span class="element-syntax">folder_to_release_to</span><span class="plain-syntax">, </span><span class="identifier-syntax">Task::release_path</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">"auxiliary \"%f\" \"%S\" \"%S\"\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">af</span><span class="plain-syntax">-></span><span class="element-syntax">name_of_original_file</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">af</span><span class="plain-syntax">-></span><span class="element-syntax">brief_description</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">)?(</span><span class="identifier-syntax">af</span><span class="plain-syntax">-></span><span class="element-syntax">brief_description</span><span class="plain-syntax">):</span><span class="identifier-syntax">I</span><span class="string-syntax">"--"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">rel</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">)?</span><span class="identifier-syntax">rel:I</span><span class="string-syntax">"--"</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">rel</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">rel</span><span class="plain-syntax">-></span><span class="element-syntax">release_booklet</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">"auxiliary \"%f\" \"Introduction to IF\" \"--\"\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Supervisor::file_from_installation</span><span class="plain-syntax">(</span><span class="identifier-syntax">INTRO_BOOKLET_IRES</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">rel</span><span class="plain-syntax">-></span><span class="element-syntax">release_postcard</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">"auxiliary \"%f\" \"IF Postcard\" \"--\"\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Supervisor::file_from_installation</span><span class="plain-syntax">(</span><span class="identifier-syntax">INTRO_POSTCARD_IRES</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">"placeholder [OTHERCREDITS] = \"The postcard was written by Andrew Plotkin "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"and designed by Lea Albaugh.\"\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tbf.html#SP1_2">§1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_8" class="paragraph-anchor"></a><b>§1.2.8. </b>Facilities for a Javascript interpreter to play a base64-encoded story
|
||||
file online.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Give instructions to release with an interpreter for Web play</span><span class="named-paragraph-number">1.2.8</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\n! Website instructions\n\n"</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">"placeholder [ENCODEDSTORYFILE] = \""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_COPY</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEMP</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">".js\"\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tbf.html#SP1_2_8_1" class="named-paragraph-link"><span class="named-paragraph">Tell Inblorb where to find the website templates</span><span class="named-paragraph-number">1.2.8.1</span></a></span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">interpreter_template_leafname</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">rel</span><span class="plain-syntax">-></span><span class="element-syntax">interpreter_template_leafname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TargetVMs::get_default_interpreter</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::vm</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ext</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TargetVMs::get_blorbed_extension</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::vm</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">"placeholder [INTERPRETERSCRIPTS] = \" "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">auxiliary_file</span><span class="plain-syntax"> *</span><span class="identifier-syntax">af</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">af</span><span class="plain-syntax">, </span><span class="reserved-syntax">auxiliary_file</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">af</span><span class="plain-syntax">-></span><span class="element-syntax">from_payload</span><span class="plain-syntax"> == </span><span class="constant-syntax">JAVASCRIPT_PAYLOAD</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">rel</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Filenames::to_text_relative</span><span class="plain-syntax">(</span><span class="identifier-syntax">rel</span><span class="plain-syntax">, </span><span class="identifier-syntax">af</span><span class="plain-syntax">-></span><span class="element-syntax">name_of_original_file</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Projects::materials_path</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::project</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">"<script src='%S'></script>"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rel</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">rel</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">af</span><span class="plain-syntax">, </span><span class="reserved-syntax">auxiliary_file</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">af</span><span class="plain-syntax">-></span><span class="element-syntax">from_payload</span><span class="plain-syntax"> == </span><span class="constant-syntax">CSS_PAYLOAD</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">rel</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Filenames::to_text_relative</span><span class="plain-syntax">(</span><span class="identifier-syntax">rel</span><span class="plain-syntax">, </span><span class="identifier-syntax">af</span><span class="plain-syntax">-></span><span class="element-syntax">name_of_original_file</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Projects::materials_path</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::project</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">"<link rel='stylesheet' href='%S' type='text/css' media='all'></link>"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rel</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">rel</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\"\n"</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">"interpreter \"%S\" \"%c\"\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">interpreter_template_leafname</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::get_first_char</span><span class="plain-syntax">(</span><span class="identifier-syntax">ext</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">"base64 \"%f\" to \"%p%c"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Task::storyfile_file</span><span class="plain-syntax">(), </span><span class="identifier-syntax">Task::released_interpreter_path</span><span class="plain-syntax">(), </span><span class="identifier-syntax">FOLDER_SEPARATOR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_COPY</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEMP</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">".js\"\n"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tbf.html#SP1_2">§1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_9" class="paragraph-anchor"></a><b>§1.2.9. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Give instructions to construct a website around the release</span><span class="named-paragraph-number">1.2.9</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"\n! Website instructions\n\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tbf.html#SP1_2_8_1" class="named-paragraph-link"><span class="named-paragraph">Tell Inblorb where to find the website templates</span><span class="named-paragraph-number">1.2.8.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wide::cmp</span><span class="plain-syntax">(</span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">website_template_leafname</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"Classic"</span><span class="plain-syntax">) != </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"css\n"</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">"website \"%w\"\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">website_template_leafname</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tbf.html#SP1_2">§1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_8_1" class="paragraph-anchor"></a><b>§1.2.8.1. </b>The order here is significant, since Inblorb searches the folders in order,
|
||||
with the earliest quoted searched first.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Tell Inblorb where to find the website templates</span><span class="named-paragraph-number">1.2.8.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">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Projects::nest_list</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::project</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">inbuild_nest</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</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">"template path \"%p\"\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">TemplateManager::path_within_nest</span><span class="plain-syntax">(</span><span class="identifier-syntax">N</span><span class="plain-syntax">));</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tbf.html#SP1_2_8">§1.2.8</a>, <a href="2-tbf.html#SP1_2_9">§1.2.9</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2_10" class="paragraph-anchor"></a><b>§1.2.10. </b>Inblorb reports its progress, or lack of it, with an HTML page, just as we do.
|
||||
This page however includes some hints on what the user might have chosen
|
||||
instead of what he actually did choose, and we'll write those hints now, for
|
||||
Inblorb to copy out later.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Give hints to Inblorb for its HTML status page</span><span class="named-paragraph-number">1.2.10</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">SyntaxTree::traverse_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><a href="2-tbf.html#SP2" class="function-link"><span class="function-syntax">BlurbFile::visit_to_quote</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">release_cover</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"status alternative ||Using 'Release along with cover art', to "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"provide something more distinctive than the default artwork above"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::DocReferences::link_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"release_cover"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"||\n"</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">rel</span><span class="plain-syntax">-></span><span class="element-syntax">release_website</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"status alternative ||Using 'Release along with a website'"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::DocReferences::link_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"release_website"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"||\n"</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">rel</span><span class="plain-syntax">-></span><span class="element-syntax">release_interpreter</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"status alternative ||Using 'Release along with an interpreter', "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"for in-browser play on your website"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::DocReferences::link_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"release_interpreter"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"||\n"</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">NUMBER_CREATED</span><span class="plain-syntax">(</span><span class="reserved-syntax">auxiliary_file</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"status alternative ||Using 'Release along with a file of "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"\"Such-and-Such\" called \"whatever.pdf\"', perhaps to add a "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"manual, or a welcoming note"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::DocReferences::link_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"release_files"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"||\n"</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">rel</span><span class="plain-syntax">-></span><span class="element-syntax">release_source</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"status alternative ||Using 'Release along with the source text'"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::DocReferences::link_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"release_source"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"||\n"</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">rel</span><span class="plain-syntax">-></span><span class="element-syntax">release_solution</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"status alternative ||Using 'Release along with a solution'"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::DocReferences::link_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"release_solution"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"||\n"</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">rel</span><span class="plain-syntax">-></span><span class="element-syntax">release_card</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"status alternative ||Using 'Release along with the library card'"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::DocReferences::link_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"release_card"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"||\n"</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">rel</span><span class="plain-syntax">-></span><span class="element-syntax">release_booklet</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"status alternative ||Using 'Release along with the introductory booklet'"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::DocReferences::link_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"release_booklet"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"||\n"</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">rel</span><span class="plain-syntax">-></span><span class="element-syntax">release_postcard</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"status alternative ||Using 'Release along with the introductory postcard'"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::DocReferences::link_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"release_postcard"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"||\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tbf.html#SP1_2">§1.2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">BlurbFile::visit_to_quote</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">BlurbFile::visit_to_quote</span></span>:<br/><a href="2-tbf.html#SP1_2_10">§1.2.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">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Node::get_type</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">) == </span><span class="identifier-syntax">SENTENCE_NT</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">special_meaning_holder</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sm</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_special_meaning</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">-></span><span class="identifier-syntax">down</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">SpecialMeanings::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">sm</span><span class="plain-syntax">, </span><a href="2-ri.html#SP8" class="function-link"><span class="function-syntax">ReleaseInstructions::release_along_with_SMF</span></a><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">TEMP</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Index::link_to</span><span class="plain-syntax">(</span><span class="identifier-syntax">TEMP</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">)), </span><span class="identifier-syntax">TRUE</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">"status instruction ||"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">STREAM_COPY</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">TEMP</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">"||\n"</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">TEMP</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </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">BlurbFile::write_var_to_text</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">BlurbFile::write_var_to_text</span></span>:<br/><a href="2-tbf.html#SP1_1">§1.1</a>, <a href="2-tbf.html#SP1_2_5">§1.2.5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NonlocalVariables::substitute_constants</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VariableSubjects::get_initial_value</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">nlv</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NonlocalVariables::kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">UNKNOWN_NT</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"0"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> </span><span class="identifier-syntax">VH</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Holsters::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">INTER_DATA_VHMODE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Specifications::Compiler::compile_constant_to_kind_vh</span><span class="plain-syntax">(&</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">v1</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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">Holsters::unholster_pair</span><span class="plain-syntax">(&</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v2</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">"%d"</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">v2</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">w1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-bd.html#SP11" class="function-link"><span class="function-syntax">BibliographicData::compile_bibliographic_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Lexer::word_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">w1</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">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="2-tir.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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-bd.html">bd</a></li><li class="progresssection"><a href="2-ri.html">ri</a></li><li class="progresssection"><a href="2-tir.html">tir</a></li><li class="progresscurrent">tbf</li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-tnt.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
366
docs/if-module/2-tir.html
Normal file
366
docs/if-module/2-tir.html
Normal file
|
@ -0,0 +1,366 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>The iFiction Record</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="../core-module/index.html">core</a></li>
|
||||
<li><a href="../assertions-module/index.html">assertions</a></li>
|
||||
<li><a href="../values-module/index.html">values</a></li>
|
||||
<li><a href="../knowledge-module/index.html">knowledge</a></li>
|
||||
<li><a href="../imperative-module/index.html">imperative</a></li>
|
||||
<li><a href="../runtime-module/index.html">runtime</a></li>
|
||||
<li><a href="index.html"><span class="selectedlink">if</span></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 iFiction Record' 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">if</a></li><li><a href="index.html#2">Chapter 2: Bibliographic Data</a></li><li><b>The iFiction Record</b></li></ul></div>
|
||||
<p class="purpose">To write the iFiction record for the work of IF compiled.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The format of this file is exactly specified by the Treaty of Babel.
|
||||
</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">iFiction::write_ifiction_record</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">iFiction::write_ifiction_record</span></span>:<br/>Release Instructions - <a href="2-ri.html#SP9_1">§9.1</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">release_instructions</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rel</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">"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"</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">"<ifindex version=\"1.0\" "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"xmlns=\"http:</span><span class="comment-syntax">babel.ifarchive.org/protocol/iFiction/\">\n"); INDENT;</span>
|
||||
<span class="string-syntax"> WRITE("</span><span class="function-syntax"><story></span><span class="plain-syntax">\</span><span class="identifier-syntax">n</span><span class="string-syntax">"); INDENT;</span>
|
||||
<span class="string-syntax"> zbyte *header = rel->existing_story_header;</span>
|
||||
<span class="string-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tir.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Write the body of the iFiction record</span><span class="named-paragraph-number">1.1</span></a></span><span class="string-syntax">;</span>
|
||||
<span class="string-syntax"> OUTDENT; WRITE("</span><span class="function-syntax"></story></span><span class="plain-syntax">\</span><span class="identifier-syntax">n</span><span class="string-syntax">");</span>
|
||||
<span class="string-syntax"> OUTDENT; WRITE("</span><span class="function-syntax"></ifindex></span><span class="plain-syntax">\</span><span class="identifier-syntax">n</span><span class="string-syntax">");</span>
|
||||
<span class="string-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1" class="paragraph-anchor"></a><b>§1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the body of the iFiction record</span><span class="named-paragraph-number">1.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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">story_format</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TargetVMs::get_iFiction_format</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::vm</span><span class="plain-syntax">());</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tir.html#SP1_1_1" class="named-paragraph-link"><span class="named-paragraph">Write the identification tag of the iFiction record</span><span class="named-paragraph-number">1.1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tir.html#SP1_1_2" class="named-paragraph-link"><span class="named-paragraph">Write the bibliographic tag of the iFiction record</span><span class="named-paragraph-number">1.1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">NUMBER_CREATED</span><span class="plain-syntax">(</span><span class="reserved-syntax">auxiliary_file</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tir.html#SP1_1_3" class="named-paragraph-link"><span class="named-paragraph">Write the resources tag of the iFiction record</span><span class="named-paragraph-number">1.1.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">release_cover</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tir.html#SP1_1_4" class="named-paragraph-link"><span class="named-paragraph">Write the cover tag of the iFiction record</span><span class="named-paragraph-number">1.1.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tir.html#SP1_1_5" class="named-paragraph-link"><span class="named-paragraph">Write the releases tag of the iFiction record</span><span class="named-paragraph-number">1.1.5</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tir.html#SP1_1_6" class="named-paragraph-link"><span class="named-paragraph">Write the colophon tag of the iFiction record</span><span class="named-paragraph-number">1.1.6</span></a></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">"<%S>\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_format</span><span class="plain-syntax">); </span><span class="identifier-syntax">INDENT</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tir.html#SP1_1_7" class="named-paragraph-link"><span class="named-paragraph">Write the format-specific tag of the iFiction record</span><span class="named-paragraph-number">1.1.7</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">OUTDENT</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</%S>\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_format</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tir.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_1" class="paragraph-anchor"></a><b>§1.1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the identification tag of the iFiction record</span><span class="named-paragraph-number">1.1.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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<identification>\n"</span><span class="plain-syntax">); </span><span class="identifier-syntax">INDENT</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">"<ifid>%S</ifid>\n"</span><span class="plain-syntax">, </span><a href="2-bd.html#SP10" class="function-link"><span class="function-syntax">BibliographicData::read_uuid</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Task::wraps_existing_storyfile</span><span class="plain-syntax">()) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<ifid>ZCODE-%d-%c%c%c%c%c%c"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">header</span><span class="plain-syntax">[2]*256+</span><span class="identifier-syntax">header</span><span class="plain-syntax">[3],</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x12</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x13</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x14</span><span class="plain-syntax">],</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x15</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x16</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x17</span><span class="plain-syntax">]);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x12</span><span class="plain-syntax">] != </span><span class="character-syntax">'8'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">Characters::isdigit</span><span class="plain-syntax">(</span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x12</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">"-%04x"</span><span class="plain-syntax">, </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x1c</span><span class="plain-syntax">]*256 + </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x1d</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">"</ifid>\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<format>%S</format>\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_format</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">OUTDENT</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</identification>\n"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tir.html#SP1_1">§1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_2" class="paragraph-anchor"></a><b>§1.1.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the bibliographic tag of the iFiction record</span><span class="named-paragraph-number">1.1.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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<bibliographic>\n"</span><span class="plain-syntax">); </span><span class="identifier-syntax">INDENT</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">"<title>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-tir.html#SP2" class="function-link"><span class="function-syntax">iFiction::write_var_to_XML</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Untitled"</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">"</title>\n"</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">"<author>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-tir.html#SP2" class="function-link"><span class="function-syntax">iFiction::write_var_to_XML</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Anonymous"</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">"</author>\n"</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">"<headline>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-tir.html#SP2" class="function-link"><span class="function-syntax">iFiction::write_var_to_XML</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_headline_VAR</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"An Interactive Fiction"</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">"</headline>\n"</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">"<genre>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-tir.html#SP2" class="function-link"><span class="function-syntax">iFiction::write_var_to_XML</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_genre_VAR</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Fiction"</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">"</genre>\n"</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">"<firstpublished>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-tir.html#SP2" class="function-link"><span class="function-syntax">iFiction::write_var_to_XML</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_creation_year_VAR</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%d"</span><span class="plain-syntax">, (</span><span class="identifier-syntax">the_present</span><span class="plain-syntax">-></span><span class="identifier-syntax">tm_year</span><span class="plain-syntax">)+1900);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</firstpublished>\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_description_VAR</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">"<description>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tir.html#SP2" class="function-link"><span class="function-syntax">iFiction::write_var_to_XML</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_description_VAR</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">"</description>\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<language>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Languages::write_ISO_code</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Projects::get_language_of_play</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::project</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">"</language>\n"</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">"<group>Inform</group>\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">episode_number</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<seriesnumber>%d</seriesnumber>\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">episode_number</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">"<series>%w</series>\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">series_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">OUTDENT</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</bibliographic>\n"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tir.html#SP1_1">§1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_3" class="paragraph-anchor"></a><b>§1.1.3. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the resources tag of the iFiction record</span><span class="named-paragraph-number">1.1.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">auxiliary_file</span><span class="plain-syntax"> *</span><span class="identifier-syntax">af</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">"<resources>\n"</span><span class="plain-syntax">); </span><span class="identifier-syntax">INDENT</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">af</span><span class="plain-syntax">, </span><span class="reserved-syntax">auxiliary_file</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">"<auxiliary>\n"</span><span class="plain-syntax">); </span><span class="identifier-syntax">INDENT</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">"<leafname>"</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">rel</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Filenames::to_text_relative</span><span class="plain-syntax">(</span><span class="identifier-syntax">rel</span><span class="plain-syntax">, </span><span class="identifier-syntax">af</span><span class="plain-syntax">-></span><span class="element-syntax">name_of_original_file</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Projects::materials_path</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::project</span><span class="plain-syntax">()));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::write_xml_safe_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">rel</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">rel</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">"</leafname>\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">af</span><span class="plain-syntax">-></span><span class="element-syntax">brief_description</span><span class="plain-syntax">) > </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<description>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::write_xml_safe_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">af</span><span class="plain-syntax">-></span><span class="element-syntax">brief_description</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">"</description>\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">OUTDENT</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</auxiliary>\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">OUTDENT</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</resources>\n"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tir.html#SP1_1">§1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_4" class="paragraph-anchor"></a><b>§1.1.4. </b>The <span class="extract"><span class="extract-syntax"><description></span></span> key here was added in version 8 of the Treaty of Babel,
|
||||
in February 2014.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the cover tag of the iFiction record</span><span class="named-paragraph-number">1.1.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<cover>\n"</span><span class="plain-syntax">); </span><span class="identifier-syntax">INDENT</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">"<format>%s</format>\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">cover_art_format</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">"<height>%d</height>\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">height</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">"<width>%d</width>\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">width</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">cover_alt_text</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">Word::dequote</span><span class="plain-syntax">(</span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">cover_alt_text</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">"<description>%N</description>\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">cover_alt_text</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<description>%w</description>\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Figures::description_of_cover_art</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">OUTDENT</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</cover>\n"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tir.html#SP1_1">§1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_5" class="paragraph-anchor"></a><b>§1.1.5. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the releases tag of the iFiction record</span><span class="named-paragraph-number">1.1.5</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<releases>\n"</span><span class="plain-syntax">); </span><span class="identifier-syntax">INDENT</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">"<attached>\n"</span><span class="plain-syntax">); </span><span class="identifier-syntax">INDENT</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">"<release>\n"</span><span class="plain-syntax">); </span><span class="identifier-syntax">INDENT</span><span 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="named-paragraph-container code-font"><a href="2-tir.html#SP1_1_5_1" class="named-paragraph-link"><span class="named-paragraph">Write release data for an existing story file</span><span class="named-paragraph-number">1.1.5.1</span></a></span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-tir.html#SP1_1_5_2" class="named-paragraph-link"><span class="named-paragraph">Write release data for an Inform 7 project</span><span class="named-paragraph-number">1.1.5.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">OUTDENT</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</release>\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">OUTDENT</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</attached>\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">OUTDENT</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</releases>\n"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tir.html#SP1_1">§1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_5_1" class="paragraph-anchor"></a><b>§1.1.5.1. </b>ZILCH was Infocom's in-house compiler of Z-machine story files, and prior
|
||||
to Inform the only one to exist. Inform differs from it in using the last four
|
||||
bytes of the header to store its own version number.
|
||||
</p>
|
||||
|
||||
<p class="commentary">(The following code will be incorrect on 1 January 2080.)
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write release data for an existing story file</span><span class="named-paragraph-number">1.1.5.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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<releasedate>%s%c%c-%c%c-%c%c</releasedate>\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> ((</span><span class="identifier-syntax">Characters::isdigit</span><span class="plain-syntax">(</span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x12</span><span class="plain-syntax">])) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x12</span><span class="plain-syntax">] != </span><span class="character-syntax">'8'</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x12</span><span class="plain-syntax">] != </span><span class="character-syntax">'9'</span><span class="plain-syntax">))?</span><span class="string-syntax">"20"</span><span class="plain-syntax">:</span><span class="string-syntax">"19"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x12</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x13</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x14</span><span class="plain-syntax">],</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x15</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x16</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x17</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">"<version>%d</version>\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">header</span><span class="plain-syntax">[2]*256+</span><span class="identifier-syntax">header</span><span class="plain-syntax">[3]);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Characters::isdigit</span><span class="plain-syntax">(</span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3c</span><span class="plain-syntax">])) &&</span>
|
||||
<span class="plain-syntax"> ((</span><span class="identifier-syntax">Characters::isdigit</span><span class="plain-syntax">(</span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3d</span><span class="plain-syntax">])) || (</span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3d</span><span class="plain-syntax">] == </span><span class="character-syntax">'.'</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Characters::isdigit</span><span class="plain-syntax">(</span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3e</span><span class="plain-syntax">])) && (</span><span class="identifier-syntax">Characters::isdigit</span><span class="plain-syntax">(</span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3f</span><span class="plain-syntax">]))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3d</span><span class="plain-syntax">] == </span><span class="character-syntax">'.'</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<compiler>Inform 6</compiler>\n"</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">"<compilerversion>%c%c%c%c</compilerversion>\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3c</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3d</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3e</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3f</span><span class="plain-syntax">]);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<compiler>Inform 1-5</compiler>\n"</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">"<compilerversion>%c%c%c%c</compilerversion>\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3c</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3d</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3e</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3f</span><span class="plain-syntax">]);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<compiler>ZILCH</compiler>\n"</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">"<compilerversion>%d</compilerversion>\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x00</span><span class="plain-syntax">]);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tir.html#SP1_1_5">§1.1.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_5_2" class="paragraph-anchor"></a><b>§1.1.5.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write release data for an Inform 7 project</span><span class="named-paragraph-number">1.1.5.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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<releasedate>%04d-%02d-%02d</releasedate>\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">the_present</span><span class="plain-syntax">-></span><span class="identifier-syntax">tm_year</span><span class="plain-syntax">)+1900, (</span><span class="identifier-syntax">the_present</span><span class="plain-syntax">-></span><span class="identifier-syntax">tm_mon</span><span class="plain-syntax">)+1, </span><span class="identifier-syntax">the_present</span><span class="plain-syntax">-></span><span class="identifier-syntax">tm_mday</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">story_release_number_VAR</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">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_release_number_VAR</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">"<version>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tir.html#SP2" class="function-link"><span class="function-syntax">iFiction::write_var_to_XML</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_release_number_VAR</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">"</version>\n"</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">"<version>1</version>\n"</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">"<compiler>Inform 7</compiler>\n"</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">"<compilerversion>%B (build %B)</compilerversion>\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tir.html#SP1_1_5">§1.1.5</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_6" class="paragraph-anchor"></a><b>§1.1.6. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the colophon tag of the iFiction record</span><span class="named-paragraph-number">1.1.6</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<colophon>\n"</span><span class="plain-syntax">); </span><span class="identifier-syntax">INDENT</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">"<generator>Inform 7</generator>\n"</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">"<generatorversion>%B (build %B)</generatorversion>\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<originated>20%02d-%02d-%02d</originated>\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">the_present</span><span class="plain-syntax">-></span><span class="identifier-syntax">tm_year</span><span class="plain-syntax">)-100, (</span><span class="identifier-syntax">the_present</span><span class="plain-syntax">-></span><span class="identifier-syntax">tm_mon</span><span class="plain-syntax">)+1, </span><span class="identifier-syntax">the_present</span><span class="plain-syntax">-></span><span class="identifier-syntax">tm_mday</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">OUTDENT</span><span class="plain-syntax">; </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</colophon>\n"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tir.html#SP1_1">§1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1_7" class="paragraph-anchor"></a><b>§1.1.7. </b>ZIL was Infocom's in-house language, a variant of MDL which in turn resembled
|
||||
LISP.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Write the format-specific tag of the iFiction record</span><span class="named-paragraph-number">1.1.7</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Task::wraps_existing_storyfile</span><span class="plain-syntax">()) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<serial>%c%c%c%c%c%c</serial>\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x12</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x13</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x14</span><span class="plain-syntax">],</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x15</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x16</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x17</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">"<release>%d</release>\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">header</span><span class="plain-syntax">[2]*256+</span><span class="identifier-syntax">header</span><span class="plain-syntax">[3]);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<checksum>%04x</checksum>\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x1c</span><span class="plain-syntax">]*256 + </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x1d</span><span class="plain-syntax">]);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">Characters::isdigit</span><span class="plain-syntax">(</span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3c</span><span class="plain-syntax">])) &&</span>
|
||||
<span class="plain-syntax"> ((</span><span class="identifier-syntax">Characters::isdigit</span><span class="plain-syntax">(</span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3d</span><span class="plain-syntax">])) || (</span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3d</span><span class="plain-syntax">] == </span><span class="character-syntax">'.'</span><span class="plain-syntax">)) &&</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">Characters::isdigit</span><span class="plain-syntax">(</span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3e</span><span class="plain-syntax">])) && (</span><span class="identifier-syntax">Characters::isdigit</span><span class="plain-syntax">(</span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3f</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">"<compiler>Inform v%c%c%c%c</compiler>\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3c</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3d</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3e</span><span class="plain-syntax">], </span><span class="identifier-syntax">header</span><span class="plain-syntax">[</span><span class="constant-syntax">0x3f</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<compiler>Infocom ZIL</compiler>\n"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<serial>%02d%02d%02d</serial>\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> (</span><span class="identifier-syntax">the_present</span><span class="plain-syntax">-></span><span class="identifier-syntax">tm_year</span><span class="plain-syntax">)-100, (</span><span class="identifier-syntax">the_present</span><span class="plain-syntax">-></span><span class="identifier-syntax">tm_mon</span><span class="plain-syntax">)+1, </span><span class="identifier-syntax">the_present</span><span class="plain-syntax">-></span><span class="identifier-syntax">tm_mday</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">story_release_number_VAR</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">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_release_number_VAR</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">"<release>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-tir.html#SP2" class="function-link"><span class="function-syntax">iFiction::write_var_to_XML</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_release_number_VAR</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">"</release>\n"</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">"<release>1</release>\n"</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">"<compiler>Inform %B (build %B)</compiler>\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">release_cover</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">"<coverpicture>%d</coverpicture>\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rel</span><span class="plain-syntax">-></span><span class="element-syntax">cover_picture_number</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="2-tir.html#SP1_1">§1.1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">iFiction::write_var_to_XML</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">iFiction::write_var_to_XML</span></span>:<br/><a href="2-tir.html#SP1_1_2">§1.1.2</a>, <a href="2-tir.html#SP1_1_5_2">§1.1.5.2</a>, <a href="2-tir.html#SP1_1_7">§1.1.7</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NonlocalVariables::initial_value_as_plain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">parse_node</span><span class="plain-syntax"> *</span><span class="identifier-syntax">val</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NonlocalVariables::substitute_constants</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">VariableSubjects::get_initial_value</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">nlv</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">kind</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NonlocalVariables::kind</span><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Node::is</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">UNKNOWN_NT</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">)) </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"0"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Kinds::eq</span><span class="plain-syntax">(</span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_number</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> </span><span class="identifier-syntax">VH</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Holsters::new</span><span class="plain-syntax">(</span><span class="identifier-syntax">INTER_DATA_VHMODE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Specifications::Compiler::compile_constant_to_kind_vh</span><span class="plain-syntax">(&</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">val</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">v1</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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">Holsters::unholster_pair</span><span class="plain-syntax">(&</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v2</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">"%d"</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">v2</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">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Node::get_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">w1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-bd.html#SP11" class="function-link"><span class="function-syntax">BibliographicData::compile_bibliographic_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">Lexer::word_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">w1</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">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="2-ri.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="progresscurrentchapter">2</li><li class="progresssection"><a href="2-bd.html">bd</a></li><li class="progresssection"><a href="2-ri.html">ri</a></li><li class="progresscurrent">tir</li><li class="progresssection"><a href="2-tbf.html">tbf</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="2-tbf.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -507,7 +507,7 @@ code, derived from the old I6 library, requires <span class="extract"><span clas
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-bck.html#SP16">§16</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-dvc.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="progresscurrent">bck</li><li class="progresssection"><a href="3-rgn.html">rgn</a></li><li class="progresssection"><a href="3-tm.html">tm</a></li><li class="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-rgn.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-dvc.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-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="progresscurrent">bck</li><li class="progresssection"><a href="3-rgn.html">rgn</a></li><li class="progresssection"><a href="3-tm.html">tm</a></li><li class="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-rgn.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -123,7 +123,7 @@ age of Inter we want to avoid that sort of tomfoolery.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<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-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresscurrent">dvc</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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-bck.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-tp.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-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresscurrent">dvc</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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-bck.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -221,7 +221,7 @@ hold the applicable mapping parameters.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">EPS_map_level</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure EPS_map_level is private to this section.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure EPS_map_level is accessed in 2/ri, 2/tir and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP6" class="paragraph-anchor"></a><b>§6. </b>The following are the directions at which arrows for UP, DOWN, IN and OUT
|
||||
are drawn on EPS maps.
|
||||
</p>
|
||||
|
@ -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/>IF Special Meanings - <a href="1-ism.html#SP1">§1</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#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="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>
|
||||
|
@ -1633,7 +1633,7 @@ are written as triples of floating point numbers \(0 \leq b \leq 1\).
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-hm.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresscurrent">em</li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-sc.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-hm.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-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresscurrent">em</li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-sc.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -368,7 +368,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="3-sm.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresscurrent">enah</li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-sr.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-sm.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-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresscurrent">enah</li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-sr.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -1360,7 +1360,7 @@ that nothing is shown if all of the rooms are outside of regions.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-hm.html#SP13">§13</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-sm2.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresscurrent">hm</li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-em.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-sm2.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-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresscurrent">hm</li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-em.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -410,7 +410,7 @@ such.
|
|||
<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="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-sg.html">❯</a></li></ul></div>
|
||||
<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-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-sg.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -111,7 +111,7 @@ sort of tomfoolery.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-sr.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresscurrent">prs</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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-tp.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-sr.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-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresscurrent">prs</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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-tp.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -483,7 +483,7 @@ region is either the next broadest region containing it, or else <span class="ex
|
|||
<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-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-tm.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-bck.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-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-tm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -432,7 +432,7 @@ turn by turn.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="3-sc.html#SP4_2">§4.2</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-em.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresscurrent">sc</li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-scn.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-em.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-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresscurrent">sc</li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-scn.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -171,10 +171,17 @@ including bit 1 which records whether the scene has started.
|
|||
|
||||
<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::Scenes::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::Scenes::start</span></span>:<br/>IF Module - <a href="1-im.html#SP4_1">§4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">MAKE_SPECIAL_MEANINGS_PLUG</span><span class="plain-syntax">, </span><a href="3-scn.html#SP7" class="function-link"><span class="function-syntax">PL::Scenes::make_special_meanings</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_PROPERTY_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="3-scn.html#SP10" class="function-link"><span class="function-syntax">PL::Scenes::scenes_new_property_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_INSTANCE_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="3-scn.html#SP11" class="function-link"><span class="function-syntax">PL::Scenes::scenes_new_named_instance_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_BASE_KIND_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="3-scn.html#SP8" class="function-link"><span class="function-syntax">PL::Scenes::scenes_new_base_kind_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Scenes::make_special_meanings</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">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-scn.html#SP16" class="function-link"><span class="function-syntax">PL::Scenes::begins_when_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"scene-begins-when"</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-scn.html#SP17" class="function-link"><span class="function-syntax">PL::Scenes::ends_when_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"scene-ends-when"</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">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b>To detect "scene" and "recurring":
|
||||
</p>
|
||||
|
@ -409,7 +416,7 @@ begins when...".
|
|||
</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::Scenes::begins_when_SMF</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::Scenes::begins_when_SMF</span></span>:<br/>IF Special Meanings - <a href="1-ism.html#SP1">§1</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::Scenes::begins_when_SMF</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::Scenes::begins_when_SMF</span></span>:<br/><a href="3-scn.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">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">SW</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">[0]):</span><span class="identifier-syntax">EMPTY_WORDING</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"> "The Ballroom Scene begins when..."</span>
|
||||
|
@ -435,7 +442,7 @@ two noun phrases and sometimes three.
|
|||
</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::Scenes::ends_when_SMF</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::Scenes::ends_when_SMF</span></span>:<br/>IF Special Meanings - <a href="1-ism.html#SP1">§1</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::Scenes::ends_when_SMF</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::Scenes::ends_when_SMF</span></span>:<br/><a href="3-scn.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">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">SW</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">[0]):</span><span class="identifier-syntax">EMPTY_WORDING</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="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">O2W</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">[2]):</span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
|
@ -1421,7 +1428,7 @@ actually running:
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-sc.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresscurrent">scn</li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-tm2.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-sc.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-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresscurrent">scn</li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-tm2.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -320,7 +320,7 @@ sacrifice that.)
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-mcr.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresscurrent">sg</li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-sm2.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-mcr.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-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresscurrent">sg</li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-sm2.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -1772,7 +1772,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-tnt.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tnt.html">tnt</a></li><li class="progresscurrent">sm</li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-enah.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-tnt.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-tnt.html">tnt</a></li><li class="progresscurrent">sm</li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-enah.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -3352,7 +3352,7 @@ rooms:
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-sg.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresscurrent">sm2</li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-hm.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-sg.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-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresscurrent">sm2</li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-hm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -393,7 +393,7 @@ special to make it work, so this doesn't seem worth the trouble.)
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-enah.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresscurrent">sr</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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-prs.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-enah.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-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresscurrent">sr</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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-prs.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -263,6 +263,7 @@ makes for more legible code if we use a special inference type of our own:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">DIRECTION_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">LOG_DETAILS_INF_MTID</span><span class="plain-syntax">, </span><a href="3-tm.html#SP5" class="function-link"><span class="function-syntax">PL::Map::log_direction_inf</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">METHOD_ADD</span><span class="plain-syntax">(</span><span class="identifier-syntax">DIRECTION_INF</span><span class="plain-syntax">, </span><span class="identifier-syntax">COMPARE_INF_MTID</span><span class="plain-syntax">, </span><a href="3-tm.html#SP5" class="function-link"><span class="function-syntax">PL::Map::cmp_direction_inf</span></a><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">MAKE_SPECIAL_MEANINGS_PLUG</span><span class="plain-syntax">, </span><a href="3-tm.html#SP8" class="function-link"><span class="function-syntax">PL::Map::make_special_meanings</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_BASE_KIND_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="3-tm.html#SP11" class="function-link"><span class="function-syntax">PL::Map::map_new_base_kind_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_SUBJECT_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="3-tm.html#SP13" class="function-link"><span class="function-syntax">PL::Map::map_new_subject_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">SET_KIND_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="3-tm.html#SP19" class="function-link"><span class="function-syntax">PL::Map::map_set_kind_notify</span></a><span class="plain-syntax">);</span>
|
||||
|
@ -277,6 +278,11 @@ makes for more legible code if we use a special inference type of our own:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">ADD_TO_WORLD_INDEX_PLUG</span><span class="plain-syntax">, </span><a href="3-tm.html#SP36" class="function-link"><span class="function-syntax">PL::Map::map_add_to_World_index</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">ANNOTATE_IN_WORLD_INDEX_PLUG</span><span class="plain-syntax">, </span><a href="3-tm.html#SP36" class="function-link"><span class="function-syntax">PL::Map::map_annotate_in_World_index</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Map::make_special_meanings</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">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="3-em.html#SP14" class="function-link"><span class="function-syntax">PL::EPSMap::index_map_with_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"index-map-with"</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP9" class="paragraph-anchor"></a><b>§9. </b></p>
|
||||
|
||||
|
@ -1386,7 +1392,7 @@ why we don't need to compile <span class="extract"><span class="extract-syntax">
|
|||
<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-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-mcr.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-rgn.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-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-mcr.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -485,7 +485,7 @@ rest in ascending alphabetical order.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-scn.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresscurrent">tm2</li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-ts.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-scn.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-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresscurrent">tm2</li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-ts.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -669,7 +669,7 @@ this because we need access to it very quickly when parsing text substitutions.)
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ri.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresscurrent">tnt</li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-sm.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-tbf.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="progresscurrent">tnt</li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-sm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -509,7 +509,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-prs.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresscurrent">tp</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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-dvc.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-prs.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-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresscurrent">tp</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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresssection"><a href="3-ts.html">ts</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="3-dvc.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -146,7 +146,7 @@ score corresponding to successful completion and the highest rank.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-tm2.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresssection"><a href="3-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresscurrent">ts</li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="4-act.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-tm2.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-tnt.html">tnt</a></li><li class="progresssection"><a href="3-sm.html">sm</a></li><li class="progresssection"><a href="3-enah.html">enah</a></li><li class="progresssection"><a href="3-sr.html">sr</a></li><li class="progresssection"><a href="3-prs.html">prs</a></li><li class="progresssection"><a href="3-tp.html">tp</a></li><li class="progresssection"><a href="3-dvc.html">dvc</a></li><li class="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="progresssection"><a href="3-mcr.html">mcr</a></li><li class="progresssection"><a href="3-sg.html">sg</a></li><li class="progresssection"><a href="3-sm2.html">sm2</a></li><li class="progresssection"><a href="3-hm.html">hm</a></li><li class="progresssection"><a href="3-em.html">em</a></li><li class="progresssection"><a href="3-sc.html">sc</a></li><li class="progresssection"><a href="3-scn.html">scn</a></li><li class="progresssection"><a href="3-tm2.html">tm2</a></li><li class="progresscurrent">ts</li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="4-act.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -181,6 +181,7 @@ tried later. This is a pointer value; see "StoredAction.i6t".
|
|||
|
||||
<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::Actions::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::Actions::start</span></span>:<br/>IF Module - <a href="1-im.html#SP4_1">§4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">MAKE_SPECIAL_MEANINGS_PLUG</span><span class="plain-syntax">, </span><a href="4-act.html#SP7" class="function-link"><span class="function-syntax">PL::Actions::make_special_meanings</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_BASE_KIND_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="4-act.html#SP8" class="function-link"><span class="function-syntax">PL::Actions::actions_new_base_kind_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPILE_CONSTANT_PLUG</span><span class="plain-syntax">, </span><a href="4-act.html#SP9" class="function-link"><span class="function-syntax">PL::Actions::actions_compile_constant</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">OFFERED_PROPERTY_PLUG</span><span class="plain-syntax">, </span><a href="4-act.html#SP9" class="function-link"><span class="function-syntax">PL::Actions::actions_offered_property</span></a><span class="plain-syntax">);</span>
|
||||
|
@ -190,6 +191,11 @@ tried later. This is a pointer value; see "StoredAction.i6t".
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Vocabulary::set_flags</span><span class="plain-syntax">(</span><span class="identifier-syntax">Vocabulary::entry_for_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="string-syntax">"doing"</span><span class="plain-syntax">), </span><span class="identifier-syntax">ACTION_PARTICIPLE_MC</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Vocabulary::set_flags</span><span class="plain-syntax">(</span><span class="identifier-syntax">Vocabulary::entry_for_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="string-syntax">"asking"</span><span class="plain-syntax">), </span><span class="identifier-syntax">ACTION_PARTICIPLE_MC</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::make_special_meanings</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">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="4-act.html#SP24" class="function-link"><span class="function-syntax">PL::Actions::new_action_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"new-action"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP8" class="paragraph-anchor"></a><b>§8. </b></p>
|
||||
|
||||
|
@ -866,7 +872,7 @@ new action.
|
|||
<p class="commentary firstcommentary"><a id="SP24" class="paragraph-anchor"></a><b>§24. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Actions::new_action_SMF</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::new_action_SMF</span></span>:<br/>IF Special Meanings - <a href="1-ism.html#SP1">§1</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::Actions::new_action_SMF</span><button class="popup" onclick="togglePopup('usagePopup24')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup24">Usage of <span class="code-font"><span class="function-syntax">PL::Actions::new_action_SMF</span></span>:<br/><a href="4-act.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">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">SW</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">[0]):</span><span class="identifier-syntax">EMPTY_WORDING</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"> "Taking something is an action."</span>
|
||||
|
@ -1700,7 +1706,7 @@ infrastructure, and we access it with a single call.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-ts.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">act</li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-los.html">los</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-ai.html">ai</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="4-anl.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="3-ts.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="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">act</li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-los.html">los</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-ai.html">ai</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="4-anl.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -364,7 +364,7 @@ we divide these headwords into five "natures":
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-nap.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-los.html">los</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresscurrent">ai</li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="5-itg.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-nap.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="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-los.html">los</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresscurrent">ai</li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="5-itg.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -648,7 +648,7 @@ used in sorting algorithms.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-act.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresscurrent">anl</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-los.html">los</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-ai.html">ai</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="4-ap.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-act.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="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresscurrent">anl</li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-los.html">los</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-ai.html">ai</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="4-ap.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -2549,7 +2549,7 @@ and in this case we therefore ignore <span class="extract"><span class="extract-
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-anl.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresscurrent">ap</li><li class="progresssection"><a href="4-los.html">los</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-ai.html">ai</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="4-los.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-anl.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="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresscurrent">ap</li><li class="progresssection"><a href="4-los.html">los</a></li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-ai.html">ai</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="4-los.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -149,7 +149,7 @@ function togglePopup(material_id) {
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="4-los.html#SP2">§2</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-ap.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresscurrent">los</li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-ai.html">ai</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="4-nap.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-ap.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="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresscurrent">los</li><li class="progresssection"><a href="4-nap.html">nap</a></li><li class="progresssection"><a href="4-ai.html">ai</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="4-nap.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -195,7 +195,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="4-los.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-los.html">los</a></li><li class="progresscurrent">nap</li><li class="progresssection"><a href="4-ai.html">ai</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="4-ai.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-los.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="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-act.html">act</a></li><li class="progresssection"><a href="4-anl.html">anl</a></li><li class="progresssection"><a href="4-ap.html">ap</a></li><li class="progresssection"><a href="4-los.html">los</a></li><li class="progresscurrent">nap</li><li class="progresssection"><a href="4-ai.html">ai</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="4-ai.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -1605,7 +1605,7 @@ the HTML index.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-gv.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-itg.html">itg</a></li><li class="progresssection"><a href="5-tfg.html">tfg</a></li><li class="progresssection"><a href="5-gp.html">gp</a></li><li class="progresssection"><a href="5-gv.html">gv</a></li><li class="progresscurrent">gl</li><li class="progresssection"><a href="5-gt.html">gt</a></li><li class="progresssection"><a href="5-gt2.html">gt2</a></li><li class="progresssection"><a href="5-nft.html">nft</a></li><li class="progresssection"><a href="5-tpv.html">tpv</a></li><li class="progresssection"><a href="5-gpr.html">gpr</a></li><li class="progressnext"><a href="5-gt.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-gv.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="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-itg.html">itg</a></li><li class="progresssection"><a href="5-tfg.html">tfg</a></li><li class="progresssection"><a href="5-gp.html">gp</a></li><li class="progresssection"><a href="5-gv.html">gv</a></li><li class="progresscurrent">gl</li><li class="progresssection"><a href="5-gt.html">gt</a></li><li class="progresssection"><a href="5-gt2.html">gt2</a></li><li class="progresssection"><a href="5-nft.html">nft</a></li><li class="progresssection"><a href="5-tpv.html">tpv</a></li><li class="progresssection"><a href="5-gpr.html">gpr</a></li><li class="progressnext"><a href="5-gt.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -138,12 +138,18 @@ contains a pointer to its own unique copy of the following structure:
|
|||
|
||||
<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::Parsing::Visibility::start</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::Parsing::Visibility::start</span></span>:<br/>IF Module - <a href="1-im.html#SP4_1">§4.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">MAKE_SPECIAL_MEANINGS_PLUG</span><span class="plain-syntax">, </span><a href="5-gp.html#SP6" class="function-link"><span class="function-syntax">PL::Parsing::Visibility::make_special_meanings</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_VARIABLE_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="5-gp.html#SP8" class="function-link"><span class="function-syntax">PL::Parsing::Visibility::parsing_new_variable_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_SUBJECT_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="5-gp.html#SP6" class="function-link"><span class="function-syntax">PL::Parsing::Visibility::parsing_new_subject_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_PERMISSION_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="5-gp.html#SP6" class="function-link"><span class="function-syntax">PL::Parsing::Visibility::parsing_new_permission_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPLETE_MODEL_PLUG</span><span class="plain-syntax">, </span><a href="5-gp.html#SP9" class="function-link"><span class="function-syntax">PL::Parsing::Visibility::parsing_complete_model</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Parsing::Visibility::make_special_meanings</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">SpecialMeanings::declare</span><span class="plain-syntax">(</span><a href="5-tfg.html#SP5" class="function-link"><span class="function-syntax">PL::Parsing::understand_as_SMF</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"understand-as"</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">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Parsing::Visibility::parsing_new_subject_notify</span><span class="plain-syntax">(</span><span class="identifier-syntax">inference_subject</span><span class="plain-syntax"> *</span><span class="identifier-syntax">subj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ATTACH_PLUGIN_DATA_TO_SUBJECT</span><span class="plain-syntax">(</span><span class="identifier-syntax">parsing</span><span class="plain-syntax">, </span><span class="identifier-syntax">subj</span><span class="plain-syntax">, </span><a href="5-gp.html#SP5" class="function-link"><span class="function-syntax">PL::Parsing::Visibility::new_data</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">subj</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
|
@ -430,7 +436,7 @@ depends on a property permission and not a mere property.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-tfg.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-itg.html">itg</a></li><li class="progresssection"><a href="5-tfg.html">tfg</a></li><li class="progresscurrent">gp</li><li class="progresssection"><a href="5-gv.html">gv</a></li><li class="progresssection"><a href="5-gl.html">gl</a></li><li class="progresssection"><a href="5-gt.html">gt</a></li><li class="progresssection"><a href="5-gt2.html">gt2</a></li><li class="progresssection"><a href="5-nft.html">nft</a></li><li class="progresssection"><a href="5-tpv.html">tpv</a></li><li class="progresssection"><a href="5-gpr.html">gpr</a></li><li class="progressnext"><a href="5-gv.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-tfg.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="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-itg.html">itg</a></li><li class="progresssection"><a href="5-tfg.html">tfg</a></li><li class="progresscurrent">gp</li><li class="progresssection"><a href="5-gv.html">gv</a></li><li class="progresssection"><a href="5-gl.html">gl</a></li><li class="progresssection"><a href="5-gt.html">gt</a></li><li class="progresssection"><a href="5-gt2.html">gt2</a></li><li class="progresssection"><a href="5-nft.html">nft</a></li><li class="progresssection"><a href="5-tpv.html">tpv</a></li><li class="progresssection"><a href="5-gpr.html">gpr</a></li><li class="progressnext"><a href="5-gv.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -1347,7 +1347,7 @@ alter the value of <span class="extract"><span class="extract-syntax">self</span
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-tpv.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-itg.html">itg</a></li><li class="progresssection"><a href="5-tfg.html">tfg</a></li><li class="progresssection"><a href="5-gp.html">gp</a></li><li class="progresssection"><a href="5-gv.html">gv</a></li><li class="progresssection"><a href="5-gl.html">gl</a></li><li class="progresssection"><a href="5-gt.html">gt</a></li><li class="progresssection"><a href="5-gt2.html">gt2</a></li><li class="progresssection"><a href="5-nft.html">nft</a></li><li class="progresssection"><a href="5-tpv.html">tpv</a></li><li class="progresscurrent">gpr</li><li class="progressnextoff">❯</li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-tpv.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="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-itg.html">itg</a></li><li class="progresssection"><a href="5-tfg.html">tfg</a></li><li class="progresssection"><a href="5-gp.html">gp</a></li><li class="progresssection"><a href="5-gv.html">gv</a></li><li class="progresssection"><a href="5-gl.html">gl</a></li><li class="progresssection"><a href="5-gt.html">gt</a></li><li class="progresssection"><a href="5-gt2.html">gt2</a></li><li class="progresssection"><a href="5-nft.html">nft</a></li><li class="progresssection"><a href="5-tpv.html">tpv</a></li><li class="progresscurrent">gpr</li><li class="progressnextoff">❯</li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -199,7 +199,7 @@ discussion.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-gl.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-itg.html">itg</a></li><li class="progresssection"><a href="5-tfg.html">tfg</a></li><li class="progresssection"><a href="5-gp.html">gp</a></li><li class="progresssection"><a href="5-gv.html">gv</a></li><li class="progresssection"><a href="5-gl.html">gl</a></li><li class="progresscurrent">gt</li><li class="progresssection"><a href="5-gt2.html">gt2</a></li><li class="progresssection"><a href="5-nft.html">nft</a></li><li class="progresssection"><a href="5-tpv.html">tpv</a></li><li class="progresssection"><a href="5-gpr.html">gpr</a></li><li class="progressnext"><a href="5-gt2.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-gl.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="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-itg.html">itg</a></li><li class="progresssection"><a href="5-tfg.html">tfg</a></li><li class="progresssection"><a href="5-gp.html">gp</a></li><li class="progresssection"><a href="5-gv.html">gv</a></li><li class="progresssection"><a href="5-gl.html">gl</a></li><li class="progresscurrent">gt</li><li class="progresssection"><a href="5-gt2.html">gt2</a></li><li class="progresssection"><a href="5-nft.html">nft</a></li><li class="progresssection"><a href="5-tpv.html">tpv</a></li><li class="progresssection"><a href="5-gpr.html">gpr</a></li><li class="progressnext"><a href="5-gt2.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -1486,7 +1486,7 @@ nothing else.
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-gt2.html#SP11">§11</a> (four times), <a href="5-gt2.html#SP11_1">§11.1</a>.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-gt.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-itg.html">itg</a></li><li class="progresssection"><a href="5-tfg.html">tfg</a></li><li class="progresssection"><a href="5-gp.html">gp</a></li><li class="progresssection"><a href="5-gv.html">gv</a></li><li class="progresssection"><a href="5-gl.html">gl</a></li><li class="progresssection"><a href="5-gt.html">gt</a></li><li class="progresscurrent">gt2</li><li class="progresssection"><a href="5-nft.html">nft</a></li><li class="progresssection"><a href="5-tpv.html">tpv</a></li><li class="progresssection"><a href="5-gpr.html">gpr</a></li><li class="progressnext"><a href="5-nft.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-gt.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="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-itg.html">itg</a></li><li class="progresssection"><a href="5-tfg.html">tfg</a></li><li class="progresssection"><a href="5-gp.html">gp</a></li><li class="progresssection"><a href="5-gv.html">gv</a></li><li class="progresssection"><a href="5-gl.html">gl</a></li><li class="progresssection"><a href="5-gt.html">gt</a></li><li class="progresscurrent">gt2</li><li class="progresssection"><a href="5-nft.html">nft</a></li><li class="progresssection"><a href="5-tpv.html">tpv</a></li><li class="progresssection"><a href="5-gpr.html">gpr</a></li><li class="progressnext"><a href="5-nft.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -1032,7 +1032,7 @@ by any GPR existing because of the above routines.)
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-gp.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-itg.html">itg</a></li><li class="progresssection"><a href="5-tfg.html">tfg</a></li><li class="progresssection"><a href="5-gp.html">gp</a></li><li class="progresscurrent">gv</li><li class="progresssection"><a href="5-gl.html">gl</a></li><li class="progresssection"><a href="5-gt.html">gt</a></li><li class="progresssection"><a href="5-gt2.html">gt2</a></li><li class="progresssection"><a href="5-nft.html">nft</a></li><li class="progresssection"><a href="5-tpv.html">tpv</a></li><li class="progresssection"><a href="5-gpr.html">gpr</a></li><li class="progressnext"><a href="5-gl.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-gp.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="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-itg.html">itg</a></li><li class="progresssection"><a href="5-tfg.html">tfg</a></li><li class="progresssection"><a href="5-gp.html">gp</a></li><li class="progresscurrent">gv</li><li class="progresssection"><a href="5-gl.html">gl</a></li><li class="progresssection"><a href="5-gt.html">gt</a></li><li class="progresssection"><a href="5-gt2.html">gt2</a></li><li class="progresssection"><a href="5-nft.html">nft</a></li><li class="progresssection"><a href="5-tpv.html">tpv</a></li><li class="progresssection"><a href="5-gpr.html">gpr</a></li><li class="progressnext"><a href="5-gl.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -161,7 +161,7 @@ declaration order, actually compiles the necessary I6 <span class="extract"><spa
|
|||
</p>
|
||||
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-ai.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresscurrent">itg</li><li class="progresssection"><a href="5-tfg.html">tfg</a></li><li class="progresssection"><a href="5-gp.html">gp</a></li><li class="progresssection"><a href="5-gv.html">gv</a></li><li class="progresssection"><a href="5-gl.html">gl</a></li><li class="progresssection"><a href="5-gt.html">gt</a></li><li class="progresssection"><a href="5-gt2.html">gt2</a></li><li class="progresssection"><a href="5-nft.html">nft</a></li><li class="progresssection"><a href="5-tpv.html">tpv</a></li><li class="progresssection"><a href="5-gpr.html">gpr</a></li><li class="progressnext"><a href="5-tfg.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="4-ai.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="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresscurrent">itg</li><li class="progresssection"><a href="5-tfg.html">tfg</a></li><li class="progresssection"><a href="5-gp.html">gp</a></li><li class="progresssection"><a href="5-gv.html">gv</a></li><li class="progresssection"><a href="5-gl.html">gl</a></li><li class="progresssection"><a href="5-gt.html">gt</a></li><li class="progresssection"><a href="5-gt2.html">gt2</a></li><li class="progresssection"><a href="5-nft.html">nft</a></li><li class="progresssection"><a href="5-tpv.html">tpv</a></li><li class="progresssection"><a href="5-gpr.html">gpr</a></li><li class="progressnext"><a href="5-tfg.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -384,7 +384,7 @@ that's why.)
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-gt2.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-itg.html">itg</a></li><li class="progresssection"><a href="5-tfg.html">tfg</a></li><li class="progresssection"><a href="5-gp.html">gp</a></li><li class="progresssection"><a href="5-gv.html">gv</a></li><li class="progresssection"><a href="5-gl.html">gl</a></li><li class="progresssection"><a href="5-gt.html">gt</a></li><li class="progresssection"><a href="5-gt2.html">gt2</a></li><li class="progresscurrent">nft</li><li class="progresssection"><a href="5-tpv.html">tpv</a></li><li class="progresssection"><a href="5-gpr.html">gpr</a></li><li class="progressnext"><a href="5-tpv.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-gt2.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="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-itg.html">itg</a></li><li class="progresssection"><a href="5-tfg.html">tfg</a></li><li class="progresssection"><a href="5-gp.html">gp</a></li><li class="progresssection"><a href="5-gv.html">gv</a></li><li class="progresssection"><a href="5-gl.html">gl</a></li><li class="progresssection"><a href="5-gt.html">gt</a></li><li class="progresssection"><a href="5-gt2.html">gt2</a></li><li class="progresscurrent">nft</li><li class="progresssection"><a href="5-tpv.html">tpv</a></li><li class="progresssection"><a href="5-gpr.html">gpr</a></li><li class="progressnext"><a href="5-tpv.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -136,7 +136,7 @@ traverse.
|
|||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">base_problem_count</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">PL::Parsing::understand_as_SMF</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::Parsing::understand_as_SMF</span></span>:<br/>IF Special Meanings - <a href="1-ism.html#SP1">§1</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::Parsing::understand_as_SMF</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::Parsing::understand_as_SMF</span></span>:<br/>Grammar Properties - <a href="5-gp.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">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="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">O2W</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">[2]):</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"> "Understand... as..."</span>
|
||||
|
@ -1090,7 +1090,7 @@ problem message for this case is now commented out.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-itg.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-itg.html">itg</a></li><li class="progresscurrent">tfg</li><li class="progresssection"><a href="5-gp.html">gp</a></li><li class="progresssection"><a href="5-gv.html">gv</a></li><li class="progresssection"><a href="5-gl.html">gl</a></li><li class="progresssection"><a href="5-gt.html">gt</a></li><li class="progresssection"><a href="5-gt2.html">gt2</a></li><li class="progresssection"><a href="5-nft.html">nft</a></li><li class="progresssection"><a href="5-tpv.html">tpv</a></li><li class="progresssection"><a href="5-gpr.html">gpr</a></li><li class="progressnext"><a href="5-gp.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-itg.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="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-itg.html">itg</a></li><li class="progresscurrent">tfg</li><li class="progresssection"><a href="5-gp.html">gp</a></li><li class="progresssection"><a href="5-gv.html">gv</a></li><li class="progresssection"><a href="5-gl.html">gl</a></li><li class="progresssection"><a href="5-gt.html">gt</a></li><li class="progresssection"><a href="5-gt2.html">gt2</a></li><li class="progresssection"><a href="5-nft.html">nft</a></li><li class="progresssection"><a href="5-tpv.html">tpv</a></li><li class="progresssection"><a href="5-gpr.html">gpr</a></li><li class="progressnext"><a href="5-gp.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -384,7 +384,7 @@ function togglePopup(material_id) {
|
|||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-tpv.html#SP1_1">§1.1</a> (three times).</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-nft.html">❮</a></li><li class="progresschapter"><a href="1-im.html">1</a></li><li class="progresschapter"><a href="2-ifi.html">2</a></li><li class="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-itg.html">itg</a></li><li class="progresssection"><a href="5-tfg.html">tfg</a></li><li class="progresssection"><a href="5-gp.html">gp</a></li><li class="progresssection"><a href="5-gv.html">gv</a></li><li class="progresssection"><a href="5-gl.html">gl</a></li><li class="progresssection"><a href="5-gt.html">gt</a></li><li class="progresssection"><a href="5-gt2.html">gt2</a></li><li class="progresssection"><a href="5-nft.html">nft</a></li><li class="progresscurrent">tpv</li><li class="progresssection"><a href="5-gpr.html">gpr</a></li><li class="progressnext"><a href="5-gpr.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-nft.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="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-itg.html">itg</a></li><li class="progresssection"><a href="5-tfg.html">tfg</a></li><li class="progresssection"><a href="5-gp.html">gp</a></li><li class="progresssection"><a href="5-gv.html">gv</a></li><li class="progresssection"><a href="5-gl.html">gl</a></li><li class="progresssection"><a href="5-gt.html">gt</a></li><li class="progresssection"><a href="5-gt2.html">gt2</a></li><li class="progresssection"><a href="5-nft.html">nft</a></li><li class="progresscurrent">tpv</li><li class="progresssection"><a href="5-gpr.html">gpr</a></li><li class="progressnext"><a href="5-gpr.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
116
docs/if-module/P-wtmd.html
Normal file
116
docs/if-module/P-wtmd.html
Normal file
|
@ -0,0 +1,116 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>What This Module Does</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="index.html"><span class="selectedlink">if</span></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 'What This Module Does' 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">if</a></li><li><a href="index.html#P">Preliminaries</a></li><li><b>What This Module Does</b></li></ul></div>
|
||||
<p class="purpose">An overview of the if module's role and abilities.</p>
|
||||
|
||||
<ul class="toc"><li><a href="P-wtmd.html#SP1">§1. Prerequisites</a></li><li><a href="P-wtmd.html#SP2">§2. So many plugins</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Prerequisites. </b>The if module is a part of the Inform compiler toolset. It is presented as a
|
||||
literate program or "web". Before diving in:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>(a) It helps to have some experience of reading webs: see <a href="../../../inweb/docs/index.html" class="internal">inweb</a> for more.
|
||||
</li><li>(b) The module is written in C, in fact ANSI C99, but this is disguised by the
|
||||
fact that it uses some extension syntaxes provided by the <a href="../../../inweb/docs/index.html" class="internal">inweb</a> literate
|
||||
programming tool, making it a dialect of C called InC. See <a href="../../../inweb/docs/index.html" class="internal">inweb</a> for
|
||||
full details, but essentially: it's C without predeclarations or header files,
|
||||
and where functions have names like <span class="extract"><span class="extract-syntax">Tags::add_by_name</span></span> rather than just <span class="extract"><span class="extract-syntax">add_by_name</span></span>.
|
||||
</li><li>(c) This module uses other modules drawn from the <a href="../compiler.html" class="internal">compiler</a>, and also
|
||||
uses a module of utility functions called <a href="../../../inweb/docs/foundation-module/index.html" class="internal">foundation</a>.
|
||||
For more, see <a href="../../../inweb/docs/foundation-module/P-abgtf.html" class="internal">A Brief Guide to Foundation (in foundation)</a>.
|
||||
</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. So many plugins. </b>This module consists entirely of plugins, and when they are all inactive,
|
||||
as for example with a Basic Inform project, it's as if the module does not exist
|
||||
at all: it does nothing.
|
||||
</p>
|
||||
|
||||
<p class="commentary">The module is divided into four substantive parts, which form Chapters 2 to 5,
|
||||
and are largely independent of each other:
|
||||
</p>
|
||||
|
||||
<ul class="items"><li>● <a href="2-bd.html" class="internal">Chapter 2: Bibliographic Data</a> is a single plugin, "bibliographic data".
|
||||
This manages metadata on projects, notably the Interactive Fiction ID, and
|
||||
follows a number of Internet standards for such things. <a href="2-ri.html" class="internal">Release Instructions</a>
|
||||
collates release details included in the source text, and acts as a bridge to
|
||||
the releasing agent <a href="../inblorb/index.html" class="internal">inblorb</a>.
|
||||
</li><li>● <a href="3-tnt.html" class="internal">Chapter 3: Space and Time</a>, by contrast, is made up of many individual
|
||||
plugins, which can independently be active or not: collectively they form the
|
||||
usual model world for interactive fiction, but it's possible, for example,
|
||||
to remove the concept of a geographical map, or of scenes, and still have
|
||||
the rest.
|
||||
</li><li>● <a href="4-act.html" class="internal">Chapter 4: Actions</a> is the single plugin "actions", which provides a
|
||||
framework for how agents in the world model can perform simple tasks such as
|
||||
picking things up, or going from place to place.
|
||||
</li><li>● <a href="5-itg.html" class="internal">Chapter 5: Command Grammar</a> is the single plugin "parsing", and
|
||||
provides for command parsing. Projects using other mechanisms for having
|
||||
the reader interact with them do not need this, and can deactivate the plugin.
|
||||
</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprevoff">❮</li><li class="progresscurrentchapter">P</li><li class="progresscurrent">wtmd</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="progresschapter"><a href="3-tnt.html">3</a></li><li class="progresschapter"><a href="4-act.html">4</a></li><li class="progresschapter"><a href="5-itg.html">5</a></li><li class="progressnext"><a href="1-im.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -62,6 +62,17 @@
|
|||
<hr>
|
||||
<div class="contentspage">
|
||||
<ul class="chapterlist">
|
||||
<li>
|
||||
<p class="chapterentry"><a name="P"></a>
|
||||
<span class="chaptertitle">Preliminaries</span></p>
|
||||
<ul class="sectionlist">
|
||||
<li>
|
||||
<p class="sectionentry"><a href="P-wtmd.html">
|
||||
<spon class="sectiontitle">What This Module Does</span></a> -
|
||||
<span class="sectionpurpose">An overview of the if module's role and abilities.</span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
<p class="chapterentry"><a name="1"></a>
|
||||
<span class="chaptertitle">Chapter 1: Starting Up</span></p>
|
||||
|
@ -71,11 +82,6 @@
|
|||
<spon class="sectiontitle">IF Module</span></a> -
|
||||
<span class="sectionpurpose">Setting up the use of this module.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="1-ism.html">
|
||||
<spon class="sectiontitle">IF Special Meanings</span></a> -
|
||||
<span class="sectionpurpose">Setting up the use of this module.</span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
|
@ -83,11 +89,6 @@
|
|||
<span class="chaptertitle">Chapter 2: Bibliographic Data</span></p>
|
||||
<p class="chapterpurpose">Our project is a kind of interactive book, with ISBN-like data and various cataloguing information, and which needs to be bound up in various ways.</p>
|
||||
<ul class="sectionlist">
|
||||
<li>
|
||||
<p class="sectionentry"><a href="2-ifi.html">
|
||||
<spon class="sectiontitle">Interactive Fiction ID</span></a> -
|
||||
<span class="sectionpurpose">Computes and makes available the IFID (Interactive Fiction ID) number for an Inform-generated work of IF, in compliance with the Treaty of Babel.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="2-bd.html">
|
||||
<spon class="sectiontitle">Bibliographic Data</span></a> -
|
||||
|
@ -98,6 +99,16 @@
|
|||
<spon class="sectiontitle">Release Instructions</span></a> -
|
||||
<span class="sectionpurpose">To write the iFiction record for the work of IF compiled, its release instructions and its picture manifest, if any.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="2-tir.html">
|
||||
<spon class="sectiontitle">The iFiction Record</span></a> -
|
||||
<span class="sectionpurpose">To write the iFiction record for the work of IF compiled.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="2-tbf.html">
|
||||
<spon class="sectiontitle">The Blurb File</span></a> -
|
||||
<span class="sectionpurpose">To write the blurb file of instructions for inblorb to release the project.</span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li>
|
||||
|
|
|
@ -755,11 +755,9 @@ to show, hide and colour things:
|
|||
<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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">elt</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"Fi"</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">MULTIMEDIA_MODULE</span>
|
||||
<span class="plain-syntax"> </span><a href="3-fgr.html#SP1" class="function-link"><span class="function-syntax">IXFigures::index_all</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-se.html#SP1" class="function-link"><span class="function-syntax">IXSounds::index_all</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-ef.html#SP1" class="function-link"><span class="function-syntax">IXExternalFiles::index_all</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">return</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">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">elt</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"Tb"</span><span class="plain-syntax">)) {</span>
|
||||
|
@ -768,7 +766,7 @@ to show, hide and colour things:
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::eq_wide_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">elt</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"Cd"</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::Bibliographic::index_library_card</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bd.html#SP1" class="function-link"><span class="function-syntax">IXBibliographicData::Library_Card</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -996,7 +994,7 @@ code.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</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">Index::anchor</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">Index::anchor</span></span>:<br/><a href="2-ifs.html#SP17">§17</a>, <a href="2-ifs.html#SP18">§18</a><br/>Lexicon Index - <a href="2-li.html#SP7">§7</a><br/>Index Physical World - <a href="2-ipw.html#SP2">§2</a>, <a href="2-ipw.html#SP3_1">§3.1</a><br/>Variables - <a href="2-vrb.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Index::anchor</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">Index::anchor</span></span>:<br/><a href="2-ifs.html#SP17">§17</a>, <a href="2-ifs.html#SP18">§18</a><br/>Lexicon Index - <a href="2-li.html#SP7">§7</a><br/>Index Physical World - <a href="2-ipw.html#SP2">§2</a>, <a href="2-ipw.html#SP3_1">§3.1</a><br/>Variables - <a href="2-vrb.html#SP2">§2</a><br/>Bibliographic Data - <a href="3-bd.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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">, </span><span class="string-syntax">"name=%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">p</span><span class="plain-syntax">); </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"a"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
|
|
@ -142,7 +142,7 @@ surreptitiously check that it is correctly formed at the same time.
|
|||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">IndexHeadings::index</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">IndexHeadings::index</span></span>:<br/>Index File Services - <a href="2-ifs.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="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">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<b>"</span><span class="plain-syntax">); </span><span class="identifier-syntax">PL::Bibliographic::contents_heading</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</b>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"<b>"</span><span class="plain-syntax">); </span><a href="3-bd.html#SP3" class="function-link"><span class="function-syntax">IXBibliographicData::contents_heading</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">); </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"</b>"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
|
|
176
docs/index-module/3-bd.html
Normal file
176
docs/index-module/3-bd.html
Normal file
|
@ -0,0 +1,176 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Bibliographic Data</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="../core-module/index.html">core</a></li>
|
||||
<li><a href="../assertions-module/index.html">assertions</a></li>
|
||||
<li><a href="../values-module/index.html">values</a></li>
|
||||
<li><a href="../knowledge-module/index.html">knowledge</a></li>
|
||||
<li><a href="../imperative-module/index.html">imperative</a></li>
|
||||
<li><a href="../runtime-module/index.html">runtime</a></li>
|
||||
<li><a href="../if-module/index.html">if</a></li>
|
||||
<li><a href="../multimedia-module/index.html">multimedia</a></li>
|
||||
<li><a href="index.html"><span class="selectedlink">index</span></a></li>
|
||||
</ul><h2>Inter Modules</h2><ul>
|
||||
<li><a href="../bytecode-module/index.html">bytecode</a></li>
|
||||
<li><a href="../building-module/index.html">building</a></li>
|
||||
<li><a href="../codegen-module/index.html">codegen</a></li>
|
||||
</ul><h2>Services</h2><ul>
|
||||
<li><a href="../arch-module/index.html">arch</a></li>
|
||||
<li><a href="../calculus-module/index.html">calculus</a></li>
|
||||
<li><a href="../html-module/index.html">html</a></li>
|
||||
<li><a href="../inflections-module/index.html">inflections</a></li>
|
||||
<li><a href="../kinds-module/index.html">kinds</a></li>
|
||||
<li><a href="../linguistics-module/index.html">linguistics</a></li>
|
||||
<li><a href="../problems-module/index.html">problems</a></li>
|
||||
<li><a href="../syntax-module/index.html">syntax</a></li>
|
||||
<li><a href="../words-module/index.html">words</a></li>
|
||||
<li><a href="../../../inweb/docs/foundation-module/index.html">foundation</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Bibliographic Data' 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>Bibliographic Data</b></li></ul></div>
|
||||
<p class="purpose">To write the Library Card in the index.</p>
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>The Library Card is part of the Contents index, and is intended as a
|
||||
natural way to present bibliographic data to the user. In effect, it's a
|
||||
simplified form of the iFiction record, without the XML overhead.
|
||||
</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">IXBibliographicData::Library_Card</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">IXBibliographicData::Library_Card</span></span>:<br/>Index File Services - <a href="2-ifs.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ifs.html#SP11" class="function-link"><span class="function-syntax">Index::anchor</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"LCARD"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::begin_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"*bg_images/indexcard.png"</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, </span><span class="constant-syntax">3</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="constant-syntax">0</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bd.html#SP2" class="function-link"><span class="function-syntax">IXBibliographicData::Library_Card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Story title"</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Untitled"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bd.html#SP2" class="function-link"><span class="function-syntax">IXBibliographicData::Library_Card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Story author"</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Anonymous"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bd.html#SP2" class="function-link"><span class="function-syntax">IXBibliographicData::Library_Card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Story headline"</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_headline_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"An Interactive Fiction"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bd.html#SP2" class="function-link"><span class="function-syntax">IXBibliographicData::Library_Card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Story genre"</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_genre_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Fiction"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">episode_number</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">episode_text</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">episode_text</span><span class="plain-syntax">, </span><span class="string-syntax">"%d of %w"</span><span class="plain-syntax">, </span><span class="identifier-syntax">episode_number</span><span class="plain-syntax">, </span><span class="identifier-syntax">series_name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bd.html#SP2" class="function-link"><span class="function-syntax">IXBibliographicData::Library_Card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Episode"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">episode_text</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">episode_text</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bd.html#SP2" class="function-link"><span class="function-syntax">IXBibliographicData::Library_Card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Release number"</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_release_number_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"1"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bd.html#SP2" class="function-link"><span class="function-syntax">IXBibliographicData::Library_Card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Story creation year"</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_creation_year_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"(This year)"</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">lang</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inform_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Projects::get_language_of_play</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::project</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">L</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">lang</span><span class="plain-syntax">, </span><span class="string-syntax">"English"</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_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">lang</span><span class="plain-syntax">, </span><span class="string-syntax">"%X"</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-></span><span class="identifier-syntax">edition</span><span class="plain-syntax">-></span><span class="identifier-syntax">work</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bd.html#SP2" class="function-link"><span class="function-syntax">IXBibliographicData::Library_Card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Language of play"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">lang</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">lang</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bd.html#SP2" class="function-link"><span class="function-syntax">IXBibliographicData::Library_Card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"IFID number"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">BibliographicData::read_uuid</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bd.html#SP2" class="function-link"><span class="function-syntax">IXBibliographicData::Library_Card_entry</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Story description"</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_description_VAR</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"None"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_table</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"p"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>This uses:
|
||||
</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">IXBibliographicData::Library_Card_entry</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">IXBibliographicData::Library_Card_entry</span></span>:<br/><a href="3-bd.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="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">field</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">col</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"303030"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">nlv</span><span class="plain-syntax"> == </span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax">) </span><span class="identifier-syntax">col</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"803030"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::first_html_column_nowrap</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="constant-syntax">0</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">HTML::begin_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">col</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">, </span><span class="string-syntax">"class=\"typewritten\""</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">"%s"</span><span class="plain-syntax">, </span><span class="identifier-syntax">field</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::next_html_column</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</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">HTML::begin_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">col</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN_WITH</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">, </span><span class="string-syntax">"class=\"typewritten\""</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_OPEN</span><span class="plain-syntax">(</span><span class="string-syntax">"b"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bd.html#SP4" class="function-link"><span class="function-syntax">IXBibliographicData::index_variable</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">nlv</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">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"b"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML_CLOSE</span><span class="plain-syntax">(</span><span class="string-syntax">"span"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_colour</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">HTML::end_html_row</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>The Index also likes to print the name and authorship at the top of the
|
||||
Contents listing, so:
|
||||
</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">IXBibliographicData::contents_heading</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">IXBibliographicData::contents_heading</span></span>:<br/>Index Headings - <a href="2-ih.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">story_author_VAR</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">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"Contents"</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="3-bd.html#SP4" class="function-link"><span class="function-syntax">IXBibliographicData::index_variable</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"Untitled"</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">" by "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="3-bd.html#SP4" class="function-link"><span class="function-syntax">IXBibliographicData::index_variable</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="string-syntax">"Anonymous"</span><span class="plain-syntax">);</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>And both of those features use:
|
||||
</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">IXBibliographicData::index_variable</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">IXBibliographicData::index_variable</span></span>:<br/><a href="3-bd.html#SP2">§2</a>, <a href="3-bd.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">t</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BEGIN_COMPILATION_MODE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">COMPILATION_MODE_ENTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPILE_TEXT_TO_XML_CMODE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">))) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NonlocalVariables::initial_value_as_plain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BibliographicData::compile_bibliographic_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Lexer::word_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">)));</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</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">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">t</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">END_COMPILATION_MODE</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-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="progressnextoff">❯</li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -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="progressnextoff">❯</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="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="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="progressnext"><a href="3-se.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="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="progressnext"><a href="3-ef.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -159,6 +159,11 @@
|
|||
<spon class="sectiontitle">External Files</span></a> -
|
||||
<span class="sectionpurpose">To produce the index of external files.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="3-bd.html">
|
||||
<spon class="sectiontitle">Bibliographic Data</span></a> -
|
||||
<span class="sectionpurpose">To write the Library Card in the index.</span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
@ -86,6 +86,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">MAKE_SPECIAL_MEANINGS_PLUG</span><span class="plain-syntax">, </span><a href="2-ef.html#SP2" class="function-link"><span class="function-syntax">ExternalFiles::make_special_meanings</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_BASE_KIND_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="2-ef.html#SP7" class="function-link"><span class="function-syntax">ExternalFiles::files_new_base_kind_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_INSTANCE_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="2-ef.html#SP9" class="function-link"><span class="function-syntax">ExternalFiles::files_new_named_instance_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPILE_RUNTIME_DATA_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">RTExternalFiles::arrays</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. One special meaning. </b>We add one special meaning for assertions, to catch sentences with the shape:
|
||||
|
|
|
@ -83,6 +83,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">MAKE_SPECIAL_MEANINGS_PLUG</span><span class="plain-syntax">, </span><a href="2-fgr.html#SP2" class="function-link"><span class="function-syntax">Figures::make_special_meanings</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_BASE_KIND_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="2-fgr.html#SP7" class="function-link"><span class="function-syntax">Figures::figures_new_base_kind_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_INSTANCE_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="2-fgr.html#SP10" class="function-link"><span class="function-syntax">Figures::figures_new_named_instance_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPILE_RUNTIME_DATA_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">RTFigures::compile_ResourceIDsOfFigures_array</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. One special meaning. </b>We add one special meaning for assertions, to catch sentences with the shape
|
||||
|
@ -179,7 +180,7 @@ has been found to create a figure:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">leaf</span><span class="plain-syntax">, </span><span class="string-syntax">"%N"</span><span class="plain-syntax">, </span><span class="identifier-syntax">wn</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">leaf</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">figure_file</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">wn</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::figures_path</span><span class="plain-syntax">(), </span><span class="identifier-syntax">leaf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">wn</span><span class="plain-syntax"> >= </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">figure_file</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::figures_path</span><span class="plain-syntax">(), </span><span class="identifier-syntax">leaf</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-fgr.html#SP9" class="function-link"><span class="function-syntax">Figures::figures_create</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">, </span><span class="identifier-syntax">figure_file</span><span class="plain-syntax">, </span><span class="function-syntax"><<alttext>></span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOGIF</span><span class="plain-syntax">(</span><span class="identifier-syntax">MULTIMEDIA_CREATIONS</span><span class="plain-syntax">, </span><span class="string-syntax">"Created figure <%W> = filename '%f' = resource ID %d\n"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">figure_file</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
|
||||
|
@ -348,12 +349,12 @@ the cover art, which is handled by Bibliographic Data.
|
|||
</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">Figures::write_copy_commands</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Figures::write_copy_commands</span><span class="plain-syntax">(</span><span class="identifier-syntax">release_instructions</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rel</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PluginManager::active</span><span class="plain-syntax">(</span><span class="identifier-syntax">figures_plugin</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">figures_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">figd</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">figd</span><span class="plain-syntax">, </span><span class="reserved-syntax">figures_data</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">figd</span><span class="plain-syntax">-></span><span class="element-syntax">figure_number</span><span class="plain-syntax"> > </span><span class="constant-syntax">1</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PL::Bibliographic::Release::create_aux_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">figd</span><span class="plain-syntax">-></span><span class="element-syntax">filename_of_image_file</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ReleaseInstructions::add_aux_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">rel</span><span class="plain-syntax">, </span><span class="identifier-syntax">figd</span><span class="plain-syntax">-></span><span class="element-syntax">filename_of_image_file</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Task::released_figures_path</span><span class="plain-syntax">(), </span><span class="identifier-syntax">L</span><span class="string-syntax">"--"</span><span class="plain-syntax">, </span><span class="identifier-syntax">SEPARATE_FIGURES_PAYLOAD</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
|
|
@ -83,6 +83,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">MAKE_SPECIAL_MEANINGS_PLUG</span><span class="plain-syntax">, </span><a href="2-se.html#SP2" class="function-link"><span class="function-syntax">Sounds::make_special_meanings</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_BASE_KIND_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="2-se.html#SP7" class="function-link"><span class="function-syntax">Sounds::new_base_kind_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">NEW_INSTANCE_NOTIFY_PLUG</span><span class="plain-syntax">, </span><a href="2-se.html#SP9" class="function-link"><span class="function-syntax">Sounds::new_named_instance_notify</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PluginManager::plug</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPILE_RUNTIME_DATA_PLUG</span><span class="plain-syntax">, </span><span class="identifier-syntax">RTSounds::compile_ResourceIDsOfSounds_array</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. One special meaning. </b>We add one special meaning for assertions, to catch sentences with the shape
|
||||
|
@ -304,11 +305,11 @@ created from <span class="extract"><span class="extract-syntax">Figures.w</span>
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Sounds::write_copy_commands</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Sounds::write_copy_commands</span><span class="plain-syntax">(</span><span class="identifier-syntax">release_instructions</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rel</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PluginManager::active</span><span class="plain-syntax">(</span><span class="identifier-syntax">sounds_plugin</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">sounds_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sd</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">sd</span><span class="plain-syntax">, </span><span class="reserved-syntax">sounds_data</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">PL::Bibliographic::Release::create_aux_file</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ReleaseInstructions::add_aux_file</span><span class="plain-syntax">(</span><span class="identifier-syntax">rel</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">sd</span><span class="plain-syntax">-></span><span class="element-syntax">filename_of_sound_file</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Task::released_sounds_path</span><span class="plain-syntax">(),</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"--"</span><span class="plain-syntax">,</span>
|
||||
|
|
|
@ -66,7 +66,7 @@
|
|||
|
||||
<ul class="toc"><li><a href="P-wtmd.html#SP1">§1. Prerequisites</a></li><li><a href="P-wtmd.html#SP2">§2. Now in glorious Technicolor</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Prerequisites. </b>The knowledge module is a part of the Inform compiler toolset. It is
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Prerequisites. </b>The multimedia module is a part of the Inform compiler toolset. It is
|
||||
presented as a literate program or "web". Before diving in:
|
||||
</p>
|
||||
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -103,7 +103,7 @@ feelings of modesty.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">the_author_name</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">-></span><span class="identifier-syntax">edition</span><span class="plain-syntax">-></span><span class="identifier-syntax">work</span><span class="plain-syntax">-></span><span class="identifier-syntax">author_name</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">self_penned</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">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::Bibliographic::story_author_is</span><span class="plain-syntax">(</span><span class="identifier-syntax">the_author_name</span><span class="plain-syntax">)) </span><span class="identifier-syntax">self_penned</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">BibliographicData::story_author_is</span><span class="plain-syntax">(</span><span class="identifier-syntax">the_author_name</span><span class="plain-syntax">)) </span><span class="identifier-syntax">self_penned</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> #</span><span class="identifier-syntax">endif</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (((</span><span class="identifier-syntax">E</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">E</span><span class="plain-syntax">-></span><span class="identifier-syntax">authorial_modesty</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)) && </span><span class="comment-syntax"> if (1) extension doesn't ask to be modest</span>
|
||||
<span class="plain-syntax"> ((</span><span class="identifier-syntax">general_authorial_modesty</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) || </span><span class="comment-syntax"> and (2) author doesn't ask to be modest, or...</span>
|
||||
|
|
|
@ -344,7 +344,7 @@ different for compilation purposes.
|
|||
</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">TextLiterals::compile_literal_from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">context</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">TextLiterals::compile_literal_from_text</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">TextLiterals::compile_literal_from_text</span></span>:<br/>Bibliographic Data - <a href="5-bd.html#SP1_1">§1.1</a>, <a href="5-bd.html#SP1_2">§1.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">context</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> *</span><span class="identifier-syntax">p</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">literal_text</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lt</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tl.html#SP9" class="function-link"><span class="function-syntax">TextLiterals::compile_literal</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">, </span><span class="identifier-syntax">Feeds::feed_C_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">p</span><span class="plain-syntax">));</span>
|
||||
|
@ -427,7 +427,7 @@ number <span class="extract"><span class="extract-syntax">-1</span></span>).
|
|||
<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">literal_text</span><span class="plain-syntax"> *</span><span class="function-syntax">TextLiterals::compile_literal_sb</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">TextLiterals::compile_literal_sb</span></span>:<br/>Responses - <a href="4-rsp.html#SP11_1_2">§11.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">literal_text</span><span class="plain-syntax"> *</span><span class="function-syntax">TextLiterals::compile_literal_sb</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">TextLiterals::compile_literal_sb</span></span>:<br/>Responses - <a href="4-rsp.html#SP11_1_2">§11.1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">value_holster</span><span class="plain-syntax"> *</span><span class="identifier-syntax">VH</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">literal_text</span><span class="plain-syntax"> *</span><span class="identifier-syntax">lt</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">TEST_COMPILATION_MODE</span><span class="plain-syntax">(</span><span class="identifier-syntax">CONSTANT_CMODE</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">N</span><span class="plain-syntax"> = </span><a href="4-rsfk.html#SP6" class="function-link"><span class="function-syntax">RTKinds::new_block_constant_iname</span></a><span class="plain-syntax">();</span>
|
||||
|
|
|
@ -397,7 +397,7 @@ which makes its kind safe. Hence the error messages.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">Holsters::to_val_mode</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">VH</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">RTVariables::seek_initial_value</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">RTVariables::seek_initial_value</span></span>:<br/><a href="4-vrb.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">inter_name</span><span class="plain-syntax"> *</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v1</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">RTVariables::seek_initial_value</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">RTVariables::seek_initial_value</span></span>:<br/><a href="4-vrb.html#SP5">§5</a><br/>Bibliographic Data - <a href="5-bd.html#SP1_1">§1.1</a>, <a href="5-bd.html#SP1_2">§1.2</a>, <a href="5-bd.html#SP1_3">§1.3</a>, <a href="5-bd.html#SP1_4">§1.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">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v1</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> *</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">nonlocal_variable</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nlv</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">ival_emission</span><span class="plain-syntax"> </span><span class="identifier-syntax">IE</span><span class="plain-syntax"> = </span><a href="2-emt.html#SP4" class="function-link"><span class="function-syntax">Emit::begin_ival_emission</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-vrb.html#SP6" class="function-link"><span class="function-syntax">RTVariables::compile_initial_value_vh</span></a><span class="plain-syntax">(</span><a href="2-emt.html#SP4" class="function-link"><span class="function-syntax">Emit::ival_holster</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">IE</span><span class="plain-syntax">), </span><span class="identifier-syntax">nlv</span><span class="plain-syntax">);</span>
|
||||
|
|
222
docs/runtime-module/5-bd.html
Normal file
222
docs/runtime-module/5-bd.html
Normal file
|
@ -0,0 +1,222 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Bibliographic Data</title>
|
||||
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<meta name="viewport" content="width=device-width initial-scale=1">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
|
||||
<meta http-equiv="Content-Language" content="en-gb">
|
||||
|
||||
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<script>
|
||||
function togglePopup(material_id) {
|
||||
var popup = document.getElementById(material_id);
|
||||
popup.classList.toggle("show");
|
||||
}
|
||||
</script>
|
||||
|
||||
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
|
||||
|
||||
</head>
|
||||
<body class="commentary-font">
|
||||
<nav role="navigation">
|
||||
<h1><a href="../index.html">
|
||||
<img src="../docs-assets/Inform.png" height=72">
|
||||
</a></h1>
|
||||
<ul><li><a href="../compiler.html">compiler tools</a></li>
|
||||
<li><a href="../other.html">other tools</a></li>
|
||||
<li><a href="../extensions.html">extensions and kits</a></li>
|
||||
<li><a href="../units.html">unit test tools</a></li>
|
||||
</ul><h2>Compiler Webs</h2><ul>
|
||||
<li><a href="../inbuild/index.html">inbuild</a></li>
|
||||
<li><a href="../inform7/index.html">inform7</a></li>
|
||||
<li><a href="../inter/index.html">inter</a></li>
|
||||
</ul><h2>Inbuild Modules</h2><ul>
|
||||
<li><a href="../supervisor-module/index.html">supervisor</a></li>
|
||||
</ul><h2>Inform7 Modules</h2><ul>
|
||||
<li><a href="../core-module/index.html">core</a></li>
|
||||
<li><a href="../assertions-module/index.html">assertions</a></li>
|
||||
<li><a href="../values-module/index.html">values</a></li>
|
||||
<li><a href="../knowledge-module/index.html">knowledge</a></li>
|
||||
<li><a href="../imperative-module/index.html">imperative</a></li>
|
||||
<li><a href="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 'Bibliographic Data' 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>Bibliographic Data</b></li></ul></div>
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. </b>Bibliographic data is significant at run-time because the kits contain
|
||||
code to print out the "banner" at the start of play, which is a sort of
|
||||
title page. So they need to know the title, and so on.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Note that some of the bibliographic variables are actually compiled to
|
||||
constants.
|
||||
</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">RTBibliographicData::compile_constants</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">encode_constant_text_bibliographically</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BEGIN_COMPILATION_MODE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">COMPILATION_MODE_ENTER</span><span class="plain-syntax">(</span><span class="identifier-syntax">COMPILE_TEXT_TO_I6_CMODE</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-bd.html#SP1_1" class="named-paragraph-link"><span class="named-paragraph">Compile the I6 Story constant</span><span class="named-paragraph-number">1.1</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">story_headline_VAR</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-bd.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Compile the I6 Headline constant</span><span class="named-paragraph-number">1.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-bd.html#SP1_3" class="named-paragraph-link"><span class="named-paragraph">Compile the I6 Story Author constant</span><span class="named-paragraph-number">1.3</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">story_release_number_VAR</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="5-bd.html#SP1_4" class="named-paragraph-link"><span class="named-paragraph">Compile the I6 Release directive</span><span class="named-paragraph-number">1.4</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-bd.html#SP1_5" class="named-paragraph-link"><span class="named-paragraph">Compile the I6 serial number, based on the date</span><span class="named-paragraph-number">1.5</span></a></span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">END_COMPILATION_MODE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">encode_constant_text_bibliographically</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="5-bd.html#SP2" class="function-link"><span class="function-syntax">RTBibliographicData::IFID_text</span></a><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="SP1_1" class="paragraph-anchor"></a><b>§1.1. </b>If the author doesn't name a work, then its title is properly "", not
|
||||
"Welcome": that's just something we use to provide a readable banner.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the I6 Story constant</span><span class="named-paragraph-number">1.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">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">STORY_HL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NonlocalVariables::initial_value_as_plain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">v1</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><a href="4-vrb.html#SP6" class="function-link"><span class="function-syntax">RTVariables::seek_initial_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_title_VAR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||
<span class="plain-syntax"> </span><a href="4-tl.html#SP12" class="function-link"><span class="function-syntax">TextLiterals::compile_literal_from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"\"Welcome\""</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_generic_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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-bd.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2" class="paragraph-anchor"></a><b>§1.2. </b>And similarly here:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the I6 Headline constant</span><span class="named-paragraph-number">1.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">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">HEADLINE_HL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">v1</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_headline_VAR</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">NonlocalVariables::initial_value_as_plain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_headline_VAR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-vrb.html#SP6" class="function-link"><span class="function-syntax">RTVariables::seek_initial_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_headline_VAR</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="4-tl.html#SP12" class="function-link"><span class="function-syntax">TextLiterals::compile_literal_from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"\"An Interactive Fiction\""</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::named_generic_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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-bd.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_3" class="paragraph-anchor"></a><b>§1.3. </b>This time we compile nothing if no author is provided:
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the I6 Story Author constant</span><span class="named-paragraph-number">1.3</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_author_VAR</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">STORY_AUTHOR_HL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">v1</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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">NonlocalVariables::initial_value_as_plain_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_author_VAR</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="4-vrb.html#SP6" class="function-link"><span class="function-syntax">RTVariables::seek_initial_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_author_VAR</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_generic_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">global_compilation_settings</span><span class="plain-syntax">.</span><span class="identifier-syntax">story_author_given</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="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">STORY_AUTHOR_HL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">v1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LITERAL_IVAL</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</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_generic_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-bd.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_4" class="paragraph-anchor"></a><b>§1.4. </b>Similarly (but numerically):
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the I6 Release directive</span><span class="named-paragraph-number">1.4</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VariableSubjects::has_initial_value_set</span><span class="plain-syntax">(</span><span class="identifier-syntax">story_release_number_VAR</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">RELEASE_HL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax"> </span><span class="identifier-syntax">v1</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="4-vrb.html#SP6" class="function-link"><span class="function-syntax">RTVariables::seek_initial_value</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v1</span><span class="plain-syntax">, &</span><span class="identifier-syntax">v2</span><span class="plain-syntax">, </span><span class="identifier-syntax">story_release_number_VAR</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_generic_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">v1</span><span class="plain-syntax">, </span><span class="identifier-syntax">v2</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>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-bd.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_5" class="paragraph-anchor"></a><b>§1.5. </b>This innocuous code — if Inform runs on 25 June 2013, we compile the serial
|
||||
number "130625" — is actually controversial: quite a few users feel they
|
||||
should be able to fake the date-stamp with dates of their own choosing.
|
||||
</p>
|
||||
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Compile the I6 serial number, based on the date</span><span class="named-paragraph-number">1.5</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">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">SERIAL_HL</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">SN</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">year_digits</span><span class="plain-syntax"> = (</span><span class="identifier-syntax">the_present</span><span class="plain-syntax">-></span><span class="identifier-syntax">tm_year</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">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">SN</span><span class="plain-syntax">, </span><span class="string-syntax">"%02d%02d%02d"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">year_digits</span><span class="plain-syntax">, (</span><span class="identifier-syntax">the_present</span><span class="plain-syntax">-></span><span class="identifier-syntax">tm_mon</span><span class="plain-syntax">)+1, </span><span class="identifier-syntax">the_present</span><span class="plain-syntax">-></span><span class="identifier-syntax">tm_mday</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_text_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">SN</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">SN</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-bd.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>The IFID is written into the compiled story file, too, both in order
|
||||
that it can be printed by the VERSION command and to brand the file so
|
||||
that it can still be identified even if it loses touch with its iFiction
|
||||
record. We store the IFID in plain text, with a "magic string" identifier
|
||||
around it, in byte-accessible memory.
|
||||
</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">RTBibliographicData::IFID_text</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">RTBibliographicData::IFID_text</span></span>:<br/><a href="5-bd.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="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">uuid</span><span class="plain-syntax"> = </span><span class="identifier-syntax">BibliographicData::read_uuid</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">UUID_array_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">UUID_ARRAY_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_string_constant</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">UUID_array_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">uuid</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">UUID_array_iname</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">RTBibliographicData::IFID_iname</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">RTBibliographicData::IFID_iname</span></span>:<br/>External Files - <a href="5-ef.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><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">UUID_ARRAY_HL</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-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-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="progressnextoff">❯</li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -79,9 +79,7 @@
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">efcd</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">RTExternalFiles::arrays</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PluginManager::active</span><span class="plain-syntax">(</span><span class="identifier-syntax">files_plugin</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">RTExternalFiles::arrays</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">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">NO_EXTERNAL_FILES_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">iname</span><span class="plain-syntax">, (</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) (</span><span class="identifier-syntax">NUMBER_CREATED</span><span class="plain-syntax">(</span><span class="identifier-syntax">files_data</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>
|
||||
|
@ -89,7 +87,8 @@
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">files_data</span><span class="plain-syntax"> *</span><span class="identifier-syntax">exf</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">exf</span><span class="plain-syntax">, </span><span class="identifier-syntax">files_data</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">exf</span><span class="plain-syntax">-></span><span class="identifier-syntax">file_ownership</span><span class="plain-syntax"> == </span><span class="identifier-syntax">OWNED_BY_SPECIFIC_PROJECT</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_string_array_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">exf</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">IFID_array_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">packaging_state</span><span class="plain-syntax"> </span><span class="identifier-syntax">save</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_string_array_begin</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">exf</span><span class="plain-syntax">-></span><span class="identifier-syntax">compilation_data</span><span class="plain-syntax">.</span><span class="element-syntax">IFID_array_iname</span><span class="plain-syntax">, </span><span class="identifier-syntax">K_value</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">II</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">II</span><span class="plain-syntax">, </span><span class="string-syntax">"//%S</span><span class="comment-syntax">", exf->IFID_of_owner);</span>
|
||||
<span class="string-syntax"> Emit::array_text_entry(II);</span>
|
||||
|
@ -112,7 +111,7 @@
|
|||
<span class="string-syntax"> Emit::array_text_entry(WW);</span>
|
||||
<span class="string-syntax"> DISCARD_TEXT(WW)</span>
|
||||
<span class="string-syntax"> switch (exf->file_ownership) {</span>
|
||||
<span class="string-syntax"> case OWNED_BY_THIS_PROJECT: Emit::array_iname_entry(PL::Bibliographic::IFID::UUID()); break;</span>
|
||||
<span class="string-syntax"> case OWNED_BY_THIS_PROJECT: Emit::array_iname_entry(RTBibliographicData::IFID_iname()); break;</span>
|
||||
<span class="string-syntax"> case OWNED_BY_ANOTHER_PROJECT: Emit::array_null_entry(); break;</span>
|
||||
<span class="string-syntax"> case OWNED_BY_SPECIFIC_PROJECT: Emit::array_iname_entry(exf->compilation_data.IFID_array_iname); break;</span>
|
||||
<span class="string-syntax"> }</span>
|
||||
|
@ -126,11 +125,12 @@
|
|||
<span class="string-syntax"> Emit::array_numeric_entry(0);</span>
|
||||
<span class="string-syntax"> Emit::array_end(save);</span>
|
||||
<span class="string-syntax"> Hierarchy::make_available(Emit::tree(), iname);</span>
|
||||
<span class="string-syntax"> return FALSE;</span>
|
||||
<span class="string-syntax">}</span>
|
||||
</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-fgr.html">fgr</a></li><li class="progresssection"><a href="5-se.html">se</a></li><li class="progresscurrent">ef</li><li class="progressnextoff">❯</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-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="progressnext"><a href="5-bd.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -66,8 +66,7 @@
|
|||
</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">RTFigures::compile_ResourceIDsOfFigures_array</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PluginManager::active</span><span class="plain-syntax">(</span><span class="identifier-syntax">figures_plugin</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">RTFigures::compile_ResourceIDsOfFigures_array</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">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">RESOURCEIDSOFFIGURES_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_number</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_numeric_entry</span></a><span class="plain-syntax">(0);</span>
|
||||
|
@ -75,10 +74,11 @@
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">bf</span><span class="plain-syntax">, </span><span class="identifier-syntax">figures_data</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">((</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">bf</span><span class="plain-syntax">-></span><span class="identifier-syntax">figure_number</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_numeric_entry</span></a><span class="plain-syntax">(0);</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="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="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">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="progressnext"><a href="5-se.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">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="progressnext"><a href="5-se.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -66,8 +66,7 @@
|
|||
</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">RTSounds::compile_ResourceIDsOfSounds_array</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">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">PluginManager::active</span><span class="plain-syntax">(</span><span class="identifier-syntax">sounds_plugin</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">RTSounds::compile_ResourceIDsOfSounds_array</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">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">RESOURCEIDSOFSOUNDS_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_number</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_numeric_entry</span></a><span class="plain-syntax">(0);</span>
|
||||
|
@ -75,10 +74,11 @@
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER</span><span class="plain-syntax">(</span><span class="identifier-syntax">bs</span><span class="plain-syntax">, </span><span class="identifier-syntax">sounds_data</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">((</span><span class="identifier-syntax">inter_ti</span><span class="plain-syntax">) </span><span class="identifier-syntax">bs</span><span class="plain-syntax">-></span><span class="identifier-syntax">sound_number</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_numeric_entry</span></a><span class="plain-syntax">(0);</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="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="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-fgr.html">fgr</a></li><li class="progresscurrent">se</li><li class="progresssection"><a href="5-ef.html">ef</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-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="progressnext"><a href="5-ef.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -314,6 +314,11 @@
|
|||
<spon class="sectiontitle">External Files</span></a> -
|
||||
<span class="sectionpurpose"></span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="5-bd.html">
|
||||
<spon class="sectiontitle">Bibliographic Data</span></a> -
|
||||
<span class="sectionpurpose"></span></p>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
|
|
|
@ -4766,7 +4766,7 @@
|
|||
|
||||
<definite-article> internal hits 21513/254408 nti r2 constraint (none) extremes [1, 1]
|
||||
|
||||
<indefinite-article> internal hits 2234/40600 nti r2 constraint (none) extremes [1, 1]
|
||||
<indefinite-article> internal hits 2243/40622 nti r2 constraint (none) extremes [1, 1]
|
||||
|
||||
<definite-article-table> nti r2 constraint CS = {r2} extremes [6, 6]
|
||||
English:
|
||||
|
@ -4911,11 +4911,11 @@
|
|||
here here here here here here
|
||||
constraint CS = {12} extremes [6, 6]
|
||||
|
||||
<nonimperative-verb> internal hits 3986/8928 nti 6 constraint FS = {6} extremes [1, infinity)
|
||||
<nonimperative-verb> internal hits 3986/8900 nti 6 constraint FS = {6} extremes [1, infinity)
|
||||
|
||||
<copular-verb> internal hits 16/128 nti 7 constraint FS = {7} extremes [1, infinity)
|
||||
|
||||
<negated-noncopular-verb-present> internal hits 1/8730 nti 8 constraint FS = {8} extremes [1, infinity)
|
||||
<negated-noncopular-verb-present> internal hits 1/8616 nti 8 constraint FS = {8} extremes [1, infinity)
|
||||
|
||||
<universal-verb> internal hits 0/1480 nti 9 constraint FS = {9} extremes [1, infinity)
|
||||
|
||||
|
@ -5256,7 +5256,7 @@
|
|||
<np-x-of-y> hits 196/9062 nti 6 constraint DS = {6} extremes [2, infinity)
|
||||
English:
|
||||
of {...}
|
||||
(hits 196/2387) (matched: 'of day -- documented at var_time --') constraint DS = {6} extremes [2, infinity)
|
||||
(hits 196/2364) (matched: 'of day -- documented at var_time --') constraint DS = {6} extremes [2, infinity)
|
||||
|
||||
<notable-linguistic-kinds> hits 5/60 nti 7 constraint CS = {7} extremes [2, 2]
|
||||
English:
|
||||
|
@ -6593,18 +6593,18 @@
|
|||
<new-adjective-sentence-object> hits 0/856 nti 14 constraint DS = {8} extremes [1, infinity)
|
||||
English:
|
||||
<indefinite-article> <new-adjective-sentence-object-unarticled>
|
||||
(hits 0/64) constraint DS = {8} extremes [2, infinity)
|
||||
(hits 0/75) constraint DS = {8} extremes [2, infinity)
|
||||
<new-adjective-sentence-object-unarticled>
|
||||
(hits 0/65) constraint DS = {8} extremes [1, infinity)
|
||||
(hits 0/76) constraint DS = {8} extremes [1, infinity)
|
||||
|
||||
<new-adjective-sentence-object-unarticled> hits 0/184 nti 8 constraint DS = {8} extremes [1, infinity)
|
||||
<new-adjective-sentence-object-unarticled> hits 0/224 nti 8 constraint DS = {8} extremes [1, infinity)
|
||||
English:
|
||||
adjective
|
||||
(hits 0/1) constraint CS = {8} extremes [1, 1]
|
||||
adjective implying/meaning <definite-article> <np-unparsed>
|
||||
(hits 0/60) constraint DS = {8} extremes [4, infinity)
|
||||
(hits 0/71) constraint DS = {8} extremes [4, infinity)
|
||||
adjective implying/meaning <np-unparsed>
|
||||
(hits 0/91) constraint DS = {8} extremes [3, infinity)
|
||||
(hits 0/110) constraint DS = {8} extremes [3, infinity)
|
||||
|
||||
<adjective-definition-subject> nti 9 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
|
@ -7027,9 +7027,9 @@
|
|||
<s-literal-real-number>
|
||||
(hits 11/9823) (matched: 'plus infinity') constraint (none) extremes [1, infinity)
|
||||
<s-literal-truth-state>
|
||||
(hits 78/395) (matched: 'false') constraint CS = {6} extremes [1, 1]
|
||||
(hits 78/392) (matched: 'false') constraint CS = {6} extremes [1, 1]
|
||||
<s-literal-list>
|
||||
(hits 0/1518) constraint DS = {8} extremes [2, infinity)
|
||||
(hits 0/1692) constraint DS = {8} extremes [2, infinity)
|
||||
unicode <s-unicode-character>
|
||||
(hits 0/4359) constraint DS = {12} extremes [2, infinity)
|
||||
<s-literal-time>
|
||||
|
@ -7039,12 +7039,12 @@
|
|||
|
||||
<response-letter> internal hits 680/1360 nti 22 constraint (none) extremes [1, 1]
|
||||
|
||||
<s-literal-truth-state> hits 78/790 nti 6 constraint CS = {6} extremes [1, 1]
|
||||
<s-literal-truth-state> hits 78/784 nti 6 constraint CS = {6} extremes [1, 1]
|
||||
English:
|
||||
false
|
||||
(hits 29/395) (matched: 'false') constraint CS = {6} extremes [1, 1]
|
||||
(hits 29/392) (matched: 'false') constraint CS = {6} extremes [1, 1]
|
||||
true
|
||||
(hits 49/366) (matched: 'true') constraint CS = {6} extremes [1, 1]
|
||||
(hits 49/363) (matched: 'true') constraint CS = {6} extremes [1, 1]
|
||||
|
||||
<lp-group-name> internal nti 23 constraint (none) extremes [1, infinity)
|
||||
|
||||
|
@ -7121,12 +7121,12 @@
|
|||
|
||||
<unicode-character-name> internal nti 30 constraint (none) extremes [1, infinity)
|
||||
|
||||
<s-literal-list> hits 0/3036 nti 8 constraint DS = {8} extremes [2, infinity)
|
||||
<s-literal-list> hits 0/3384 nti 8 constraint DS = {8} extremes [2, infinity)
|
||||
English:
|
||||
{ }
|
||||
constraint CS = {8} extremes [2, 2]
|
||||
(hits 0/27) constraint CS = {8} extremes [2, 2]
|
||||
{ <list-conts> }
|
||||
(hits 0/1396) constraint DS = {8} extremes [3, infinity)
|
||||
(hits 0/1412) constraint DS = {8} extremes [3, infinity)
|
||||
|
||||
<list-conts> nti 7 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
|
@ -7531,7 +7531,7 @@
|
|||
<property-of-shape> hits 105/18348 nti 7 constraint DS = {7} extremes [3, infinity)
|
||||
English:
|
||||
<s-property-name> of {...}
|
||||
(hits 105/1293) (matched long text) constraint DS = {7} extremes [3, infinity)
|
||||
(hits 105/1288) (matched long text) constraint DS = {7} extremes [3, infinity)
|
||||
|
||||
<s-value-phrase-non-of> internal hits 490/18348 nti 31 constraint (none) extremes [1, infinity)
|
||||
|
||||
|
@ -7569,9 +7569,9 @@
|
|||
<universal-verb> <s-universal-term>
|
||||
(hits 0/667) constraint DS = {29} & FS = {9} extremes [4, infinity)
|
||||
<nonimperative-verb> <permitted-preposition> <s-noun-phrase>
|
||||
(hits 224/1690) (matched long text) constraint DS = {14} & FS = {6} extremes [3, infinity)
|
||||
(hits 224/1684) (matched long text) constraint DS = {14} & FS = {6} extremes [3, infinity)
|
||||
<nonimperative-verb> <s-noun-phrase>
|
||||
(hits 1925/2182) (matched long text) constraint FS = {6} extremes [2, infinity)
|
||||
(hits 1925/2174) (matched long text) constraint FS = {6} extremes [2, infinity)
|
||||
|
||||
<s-universal-term> nti 29 constraint DS = {29} extremes [3, infinity)
|
||||
English:
|
||||
|
@ -8633,38 +8633,38 @@
|
|||
parameter-object
|
||||
(hits 1/1) (matched: 'parameter-object') constraint CS = {31} extremes [1, 1]
|
||||
|
||||
<notable-bibliographic-variables> hits 7/186 nti 6 constraint CS = {6} extremes [2, 3]
|
||||
English:
|
||||
story title
|
||||
(hits 1/7) (matched: 'story title') constraint CS = {6} extremes [2, 2]
|
||||
story author
|
||||
(hits 1/6) (matched: 'story author') constraint CS = {6} extremes [2, 2]
|
||||
story headline
|
||||
(hits 1/5) (matched: 'story headline') constraint CS = {6} extremes [2, 2]
|
||||
story genre
|
||||
(hits 1/4) (matched: 'story genre') constraint CS = {6} extremes [2, 2]
|
||||
story description
|
||||
(hits 1/3) (matched: 'story description') constraint CS = {6} extremes [2, 2]
|
||||
story creation year
|
||||
(hits 1/1) (matched: 'story creation year') constraint CS = {6} extremes [3, 3]
|
||||
release number
|
||||
(hits 1/2) (matched: 'release number') constraint CS = {6} extremes [2, 2]
|
||||
|
||||
<episode-sentence-subject> hits 0/688 nti 7 constraint DS = {7} extremes [1, 2]
|
||||
<episode-sentence-subject> hits 0/688 nti 6 constraint DS = {6} extremes [1, 2]
|
||||
English:
|
||||
<definite-article> story
|
||||
(hits 0/7) constraint DS = {7} extremes [2, 2]
|
||||
(hits 0/29) constraint DS = {6} extremes [2, 2]
|
||||
this story
|
||||
constraint CS = {7} extremes [2, 2]
|
||||
(hits 0/2) constraint CS = {6} extremes [2, 2]
|
||||
story
|
||||
constraint CS = {7} extremes [1, 1]
|
||||
constraint CS = {6} extremes [1, 1]
|
||||
|
||||
<episode-sentence-object> nti 8 constraint DS = {8} extremes [2, infinity)
|
||||
<episode-sentence-object> nti 7 constraint DS = {7} extremes [2, infinity)
|
||||
English:
|
||||
episode <cardinal-number> of <quoted-text-without-subs>
|
||||
constraint DS = {8} extremes [4, 4]
|
||||
constraint DS = {7} extremes [4, 4]
|
||||
episode {...}
|
||||
constraint DS = {8} extremes [2, infinity)
|
||||
constraint DS = {7} extremes [2, infinity)
|
||||
|
||||
<notable-bibliographic-variables> hits 7/186 nti 8 constraint CS = {8} extremes [2, 3]
|
||||
English:
|
||||
story title
|
||||
(hits 1/7) (matched: 'story title') constraint CS = {8} extremes [2, 2]
|
||||
story author
|
||||
(hits 1/6) (matched: 'story author') constraint CS = {8} extremes [2, 2]
|
||||
story headline
|
||||
(hits 1/5) (matched: 'story headline') constraint CS = {8} extremes [2, 2]
|
||||
story genre
|
||||
(hits 1/4) (matched: 'story genre') constraint CS = {8} extremes [2, 2]
|
||||
story description
|
||||
(hits 1/3) (matched: 'story description') constraint CS = {8} extremes [2, 2]
|
||||
story creation year
|
||||
(hits 1/1) (matched: 'story creation year') constraint CS = {8} extremes [3, 3]
|
||||
release number
|
||||
(hits 1/2) (matched: 'release number') constraint CS = {8} extremes [2, 2]
|
||||
|
||||
<release-sentence-object> nti 11 constraint DW = {9, 10, 11} extremes [1, infinity)
|
||||
English:
|
||||
|
@ -9320,15 +9320,15 @@
|
|||
<action-pattern> hits 556/21224 nti 7 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
asking <action-parameter> to try <action-pattern-core>
|
||||
(hits 0/938) constraint DS = {7} extremes [5, infinity)
|
||||
(hits 0/936) constraint DS = {7} extremes [5, infinity)
|
||||
<action-parameter> trying <action-pattern-core>
|
||||
(hits 23/1978) (matched long text) constraint DS = {7} extremes [3, infinity)
|
||||
(hits 23/1972) (matched long text) constraint DS = {7} extremes [3, infinity)
|
||||
an actor trying <action-pattern-core>
|
||||
(hits 0/1556) constraint DS = {7} extremes [4, infinity)
|
||||
(hits 0/1551) constraint DS = {7} extremes [4, infinity)
|
||||
an actor <action-pattern-core>
|
||||
(hits 408/1955) (matched long text) constraint DS = {7} extremes [3, infinity)
|
||||
(hits 408/1949) (matched long text) constraint DS = {7} extremes [3, infinity)
|
||||
trying <action-pattern-core>
|
||||
(hits 0/1958) constraint DS = {7} extremes [2, infinity)
|
||||
(hits 0/1947) constraint DS = {7} extremes [2, infinity)
|
||||
<action-pattern-core-actor>
|
||||
(hits 125/10181) (matched long text) constraint (none) extremes [1, infinity)
|
||||
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
Total memory consumption was 260176K = 254 MB
|
||||
Total memory consumption was 259375K = 253 MB
|
||||
|
||||
62.7% was used for 1337978 objects, in 278599 frames in 204 x 800K = 163200K = 159 MB:
|
||||
62.6% was used for 1338276 objects, in 278600 frames in 203 x 800K = 162400K = 158 MB:
|
||||
|
||||
9.7% inter_tree_node_array 36 x 8192 = 294912 objects, 25953408 bytes
|
||||
5.4% text_stream_array 2594 x 100 = 259400 objects, 14609408 bytes
|
||||
5.5% text_stream_array 2594 x 100 = 259400 objects, 14609408 bytes
|
||||
3.9% parse_node 129993 objects, 10399440 bytes
|
||||
2.7% verb_conjugation 160 objects, 7425280 bytes
|
||||
2.5% parse_node_annotation_array 431 x 500 = 215500 objects, 6909792 bytes
|
||||
2.6% parse_node_annotation_array 431 x 500 = 215500 objects, 6909792 bytes
|
||||
2.4% linked_list 11775 objects, 6594000 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
|
||||
|
@ -27,10 +27,10 @@ Total memory consumption was 260176K = 254 MB
|
|||
0.3% inter_symbols_table 13227 objects, 846528 bytes
|
||||
0.3% inter_schema_node 8692 objects, 834432 bytes
|
||||
0.2% dictionary 16372 objects, 785856 bytes
|
||||
0.2% dict_entry_array 233 x 100 = 23300 objects, 753056 bytes
|
||||
0.2% dict_entry_array 236 x 100 = 23600 objects, 762752 bytes
|
||||
0.2% package_request 7954 objects, 699952 bytes
|
||||
0.2% inter_name_generator_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||
0.2% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||
0.2% inter_name_generator_array 16 x 1000 = 16000 objects, 640512 bytes
|
||||
0.1% local_variable_array 45 x 100 = 4500 objects, 505440 bytes
|
||||
0.1% verb_usage 1128 objects, 388032 bytes
|
||||
0.1% rule 469 objects, 363944 bytes
|
||||
|
@ -89,16 +89,16 @@ Total memory consumption was 260176K = 254 MB
|
|||
---- action_name 90 objects, 18720 bytes
|
||||
---- property 146 objects, 18688 bytes
|
||||
---- parse_node_tree 20 objects, 17280 bytes
|
||||
---- linked_list_item_array 1 x 1000 objects, 16032 bytes
|
||||
---- match_avinue_array 1 x 1000 objects, 16032 bytes
|
||||
---- linked_list_item_array 1 x 1000 objects, 16032 bytes
|
||||
---- method 327 objects, 15696 bytes
|
||||
---- to_phrase_request 59 objects, 15576 bytes
|
||||
---- adjective 137 objects, 14248 bytes
|
||||
---- literal_text 147 objects, 12936 bytes
|
||||
---- adjective_iname_holder 320 objects, 12800 bytes
|
||||
---- stopwatch_timer 147 objects, 11760 bytes
|
||||
---- stopwatch_timer 145 objects, 11600 bytes
|
||||
---- understanding_reference_array 2 x 100 = 200 objects, 11264 bytes
|
||||
---- pathname 262 objects, 10480 bytes
|
||||
---- pathname 261 objects, 10440 bytes
|
||||
---- filename 208 objects, 8320 bytes
|
||||
---- equation_node 68 objects, 7616 bytes
|
||||
---- understanding_item_array 3 x 100 = 300 objects, 7296 bytes
|
||||
|
@ -113,28 +113,28 @@ Total memory consumption was 260176K = 254 MB
|
|||
---- parsing_pp_data 96 objects, 4608 bytes
|
||||
---- build_vertex 40 objects, 4480 bytes
|
||||
---- hierarchy_attachment_point 48 objects, 4224 bytes
|
||||
---- stacked_variable_list_array 1 x 100 objects, 4032 bytes
|
||||
---- placement_affecting_array 1 x 100 objects, 4032 bytes
|
||||
---- stacked_variable_list_array 1 x 100 objects, 4032 bytes
|
||||
---- activity 35 objects, 3920 bytes
|
||||
---- inbuild_edition 54 objects, 3888 bytes
|
||||
---- parse_node_annotation_type 118 objects, 3776 bytes
|
||||
---- inbuild_copy 35 objects, 3640 bytes
|
||||
---- command_line_switch 43 objects, 3440 bytes
|
||||
---- property_setting_bp_data 84 objects, 3360 bytes
|
||||
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
|
||||
---- 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
|
||||
---- either_or_property_data 62 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
|
||||
---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes
|
||||
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
|
||||
---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes
|
||||
---- equation_symbol 30 objects, 2400 bytes
|
||||
---- semver_range 22 objects, 2288 bytes
|
||||
---- use_option 29 objects, 1856 bytes
|
||||
|
@ -151,13 +151,13 @@ Total memory consumption was 260176K = 254 MB
|
|||
---- constant_phrase 20 objects, 1280 bytes
|
||||
---- build_script 40 objects, 1280 bytes
|
||||
---- invocation_options_array 1 x 100 objects, 1224 bytes
|
||||
---- hierarchy_metadatum 15 objects, 1200 bytes
|
||||
---- direction_inference_data 30 objects, 1200 bytes
|
||||
---- hierarchy_metadatum 15 objects, 1200 bytes
|
||||
---- quantifier 16 objects, 1024 bytes
|
||||
---- table_column 16 objects, 896 bytes
|
||||
---- inbuild_requirement 22 objects, 880 bytes
|
||||
---- control_structure_phrase 12 objects, 864 bytes
|
||||
---- code_generation 1 object, 864 bytes
|
||||
---- control_structure_phrase 12 objects, 864 bytes
|
||||
---- cached_understanding 21 objects, 840 bytes
|
||||
---- runtime_kind_structure 13 objects, 832 bytes
|
||||
---- phrase_option_array 1 x 100 objects, 824 bytes
|
||||
|
@ -168,68 +168,69 @@ Total memory consumption was 260176K = 254 MB
|
|||
---- submodule_identity 23 objects, 736 bytes
|
||||
---- rulebook_outcome 17 objects, 680 bytes
|
||||
---- inform_language 6 objects, 672 bytes
|
||||
---- I6T_intervention 8 objects, 640 bytes
|
||||
---- relation_guard 5 objects, 640 bytes
|
||||
---- inter_warehouse_room 10 objects, 640 bytes
|
||||
---- I6T_intervention 8 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
|
||||
---- 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
|
||||
---- equation 4 objects, 416 bytes
|
||||
---- module_package 10 objects, 400 bytes
|
||||
---- dval_written 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
|
||||
---- grammatical_category 8 objects, 320 bytes
|
||||
---- up_family 9 objects, 288 bytes
|
||||
---- build_step 4 objects, 288 bytes
|
||||
---- explicit_bp_data 5 objects, 280 bytes
|
||||
---- door_to_notice 5 objects, 280 bytes
|
||||
---- explicit_bp_data 5 objects, 280 bytes
|
||||
---- inform_pipeline 4 objects, 256 bytes
|
||||
---- verb_usage_tier 5 objects, 240 bytes
|
||||
---- adjective_meaning_family 7 objects, 224 bytes
|
||||
---- test_scenario 1 object, 208 bytes
|
||||
---- release_instructions 1 object, 208 bytes
|
||||
---- compilation_unit 5 objects, 200 bytes
|
||||
---- build_skill 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
|
||||
---- inference_subject_family 5 objects, 160 bytes
|
||||
---- inter_architecture 4 objects, 160 bytes
|
||||
---- pointer_allocation 2 objects, 160 bytes
|
||||
---- code_generation_target 4 objects, 160 bytes
|
||||
---- link_instruction 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
|
||||
---- article 2 objects, 80 bytes
|
||||
---- list_together_routine 2 objects, 80 bytes
|
||||
---- compile_task_data 1 object, 80 bytes
|
||||
---- build_methodology 1 object, 56 bytes
|
||||
---- inter_warehouse 1 object, 56 bytes
|
||||
---- HTML_file_state 1 object, 48 bytes
|
||||
---- build_methodology 1 object, 56 bytes
|
||||
---- figures_data 1 object, 48 bytes
|
||||
---- HTML_file_state 1 object, 48 bytes
|
||||
---- star_invention 1 object, 48 bytes
|
||||
---- parse_name_notice 1 object, 40 bytes
|
||||
---- by_routine_bp_data 1 object, 40 bytes
|
||||
---- kind_template_definition 1 object, 40 bytes
|
||||
---- loop_over_scope 1 object, 40 bytes
|
||||
---- parse_name_notice 1 object, 40 bytes
|
||||
|
||||
37.2% was used for memory not allocated for objects:
|
||||
37.3% was used for memory not allocated for objects:
|
||||
|
||||
15.8% text stream storage 42246400 bytes in 265806 claims
|
||||
15.9% text stream storage 42245892 bytes in 265803 claims
|
||||
3.4% dictionary storage 9278976 bytes in 16372 claims
|
||||
---- sorting 1040 bytes in 3 claims
|
||||
---- sorting 1024 bytes in 3 claims
|
||||
2.7% source text 7200000 bytes in 3 claims
|
||||
4.0% source text details 10800000 bytes in 2 claims
|
||||
---- linguistic stock array 81920 bytes in 2 claims
|
||||
|
@ -243,5 +244,5 @@ Total memory consumption was 260176K = 254 MB
|
|||
---- emitter array storage 14368 bytes in 8 claims
|
||||
---- code generation workspace for objects 9200 bytes in 9 claims
|
||||
|
||||
20.4% was overhead - 54409368 bytes = 53134K = 51 MB
|
||||
20.1% was overhead - 53580464 bytes = 52324K = 51 MB
|
||||
|
||||
|
|
|
@ -14,9 +14,9 @@
|
|||
<s-literal-real-number>=1
|
||||
(hits 11/9823) (matched: 'plus infinity') constraint (none) extremes [1, infinity)
|
||||
(@1)<s-literal-truth-state>=1
|
||||
(hits 78/395) (matched: 'false') constraint CS = {6} extremes [1, 1]
|
||||
(hits 78/392) (matched: 'false') constraint CS = {6} extremes [1, 1]
|
||||
<s-literal-list>=1
|
||||
(hits 0/1518) constraint DS = {8} extremes [2, infinity)
|
||||
(hits 0/1692) constraint DS = {8} extremes [2, infinity)
|
||||
(@1)unicode <s-unicode-character>=1
|
||||
(hits 0/4359) constraint DS = {12} extremes [2, infinity)
|
||||
<s-literal-time>=1
|
||||
|
|
|
@ -1,40 +1,36 @@
|
|||
100.0% in inform7 run
|
||||
66.8% in compilation to Inter
|
||||
25.6% in //Phrases::Manager::compile_first_block//
|
||||
7.8% in //Phrases::Manager::compile_as_needed//
|
||||
7.2% in //Strings::compile_responses//
|
||||
6.7% in //InferenceSubjects::emit_all//
|
||||
4.4% in //MajorNodes::pre_pass//
|
||||
3.3% in //MajorNodes::pass_1//
|
||||
66.6% in compilation to Inter
|
||||
25.8% in //Phrases::Manager::compile_first_block//
|
||||
8.0% in //Phrases::Manager::compile_as_needed//
|
||||
6.9% in //Strings::compile_responses//
|
||||
6.1% in //InferenceSubjects::emit_all//
|
||||
4.3% in //MajorNodes::pre_pass//
|
||||
3.5% in //MajorNodes::pass_1//
|
||||
2.0% in //Phrases::Manager::RulePrintingRule_routine//
|
||||
2.0% in //Phrases::Manager::rulebooks_array//
|
||||
0.9% in //RTVerbs::ConjugateVerb//
|
||||
0.8% in //Phrases::Manager::traverse//
|
||||
1.8% in //Phrases::Manager::rulebooks_array//
|
||||
1.1% in //RTVerbs::ConjugateVerb//
|
||||
0.7% in //Phrases::Manager::traverse//
|
||||
0.5% in //Phrases::Manager::parse_rule_parameters//
|
||||
0.5% in //World::stage_V//
|
||||
0.4% in //MajorNodes::pass_2//
|
||||
0.4% in //Phrases::Manager::compile_rulebooks//
|
||||
0.3% in //MajorNodes::pass_2//
|
||||
0.3% in //Phrases::Manager::compile_rulebooks//
|
||||
0.3% in //RTRelations::compile_defined_relations//
|
||||
0.2% in //RTKinds::compile_data_type_support_routines//
|
||||
0.1% in //Emit::begin//
|
||||
0.1% in //PL::Parsing::Verbs::compile_all//
|
||||
0.1% in //RTKinds::compile_instance_counts//
|
||||
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//
|
||||
2.6% not specifically accounted for
|
||||
3.0% not specifically accounted for
|
||||
30.8% in running Inter pipeline
|
||||
10.5% in step preparation
|
||||
10.1% in inter step 2/12: link
|
||||
7.3% in inter step 12/12: generate inform6 -> auto.inf
|
||||
0.3% in inter step 10/12: reconcile-verbs
|
||||
10.1% in step preparation
|
||||
9.7% in inter step 2/12: link
|
||||
7.1% in inter step 12/12: generate inform6 -> auto.inf
|
||||
0.3% in inter step 9/12: make-identifiers-unique
|
||||
0.2% in inter step 11/12: eliminate-redundant-labels
|
||||
0.2% in inter step 6/12: assimilate
|
||||
0.2% in inter step 7/12: resolve-external-symbols
|
||||
0.1% in inter step 3/12: merge-template <- none
|
||||
0.1% in inter step 4/12: parse-linked-matter
|
||||
0.1% in inter step 10/12: reconcile-verbs
|
||||
0.1% in inter step 11/12: eliminate-redundant-labels
|
||||
0.1% in inter step 5/12: resolve-conditional-compilation
|
||||
0.1% in inter step 6/12: assimilate
|
||||
0.1% in inter step 7/12: resolve-external-symbols
|
||||
0.1% in inter step 8/12: inspect-plugs
|
||||
1.0% not specifically accounted for
|
||||
2.4% not specifically accounted for
|
||||
2.0% in supervisor
|
||||
0.3% not specifically accounted for
|
||||
0.4% not specifically accounted for
|
||||
|
|
|
@ -104,9 +104,6 @@ be a single word, and are hyphenated.
|
|||
SpecialMeanings::declare(Sentences::DLRs::omit_from_SMF, I"omit-from", 4);
|
||||
|
||||
PluginCalls::make_special_meanings();
|
||||
#ifdef IF_MODULE
|
||||
IFModuleMeanings::bootstrap();
|
||||
#endif
|
||||
|
||||
@ We need the English infinitive forms of two verbs to get started. In each
|
||||
case we use the //inflections// module to conjugate them -- i.e., to generate
|
||||
|
|
|
@ -129,7 +129,7 @@ organisation, and are not directly functional in themselves.
|
|||
break;
|
||||
case BIBLIOGRAPHIC_NT:
|
||||
#ifdef IF_MODULE
|
||||
if (global_pass_state.pass == 2) PL::Bibliographic::bibliographic_data(p);
|
||||
if (global_pass_state.pass == 2) BibliographicData::bibliographic_data(p);
|
||||
#endif
|
||||
break;
|
||||
|
||||
|
|
|
@ -160,7 +160,6 @@ so on. Those absolute basics are made here.
|
|||
Task::advance_stage_to(TABLES_CSEQ, I"Tables and grammar", -1);
|
||||
BENCH(Measurements::validate_definitions)
|
||||
BENCH(BinaryPredicateFamilies::second_stock)
|
||||
BENCH(PL::Bibliographic::IFID::define_UUID)
|
||||
BENCH(PL::Player::InitialSituation)
|
||||
BENCH(Tables::check_tables_for_kind_clashes)
|
||||
BENCH(RTTables::compile_print_table_names)
|
||||
|
@ -185,7 +184,6 @@ so on. Those absolute basics are made here.
|
|||
Task::advance_stage_to(INTER_CSEQ, I"Generating inter", 4);
|
||||
BENCH(RTUseOptions::compile_pragmas)
|
||||
BENCH(FundamentalConstants::emit_build_number)
|
||||
BENCH(PL::Bibliographic::compile_constants)
|
||||
BENCH(RTExtensions::ShowExtensionVersions_routine)
|
||||
BENCH(Kinds::Constructors::emit_constants)
|
||||
BENCH_IF(scoring_plugin, PL::Score::compile_max_score)
|
||||
|
@ -278,5 +276,5 @@ so on. Those absolute basics are made here.
|
|||
|
||||
@<Generate index and bibliographic file@> =
|
||||
Task::advance_stage_to(BIBLIOGRAPHIC_CSEQ, I"Bibliographic work", -1);
|
||||
BENCH_IF(bibliographic_plugin, PL::Bibliographic::Release::write_ifiction_and_blurb);
|
||||
BENCH(PluginCalls::post_compilation);
|
||||
BENCH(I6T::produce_index);
|
||||
|
|
|
@ -382,3 +382,16 @@ the mapping plugin uses this to say where a door leads.
|
|||
int PluginCalls::annotate_in_World_index(OUTPUT_STREAM, instance *O) {
|
||||
PLUGINS_CALL(ANNOTATE_IN_WORLD_INDEX_PLUG, OUT, O);
|
||||
}
|
||||
|
||||
@h Influencing core itself.
|
||||
Called from //core: How To Compile//. This is called when a successful
|
||||
compilation has finished, and is used, for example, by the bibliographic data
|
||||
plugin as an opportunity to write out release instructions.
|
||||
|
||||
@e POST_COMPILATION_PLUG
|
||||
|
||||
=
|
||||
int PluginCalls::post_compilation(void) {
|
||||
PLUGINS_CALLV(POST_COMPILATION_PLUG);
|
||||
}
|
||||
|
||||
|
|
|
@ -34,6 +34,7 @@ which use this module:
|
|||
@e parsing_pp_data_CLASS
|
||||
@e part_of_inference_data_CLASS
|
||||
@e regions_data_CLASS
|
||||
@e release_instructions_CLASS
|
||||
@e reserved_command_verb_CLASS
|
||||
@e rubric_holder_CLASS
|
||||
@e scene_CLASS
|
||||
|
@ -73,6 +74,7 @@ DECLARE_CLASS(parsing_data)
|
|||
DECLARE_CLASS(parsing_pp_data)
|
||||
DECLARE_CLASS(part_of_inference_data)
|
||||
DECLARE_CLASS(regions_data)
|
||||
DECLARE_CLASS(release_instructions)
|
||||
DECLARE_CLASS(reserved_command_verb)
|
||||
DECLARE_CLASS(rubric_holder)
|
||||
DECLARE_CLASS(scene)
|
||||
|
@ -112,6 +114,7 @@ void IFModule::start(void) {
|
|||
@<Create this module's plugins@>;
|
||||
@<Register this module's debugging log aspects@>;
|
||||
@<Register this module's debugging log writers@>;
|
||||
ReleaseInstructions::start();
|
||||
WherePredicates::start();
|
||||
PL::SpatialRelations::start();
|
||||
PL::MapDirections::start();
|
||||
|
@ -134,7 +137,7 @@ void IFModule::end(void) {
|
|||
showme_plugin = PluginManager::new(&PL::Showme::start, I"showme", if_plugin);
|
||||
times_plugin = PluginManager::new(TimesOfDay::start, I"times of day", if_plugin);
|
||||
scenes_plugin = PluginManager::new(&PL::Scenes::start, I"scenes", if_plugin);
|
||||
bibliographic_plugin = PluginManager::new(&PL::Bibliographic::start, I"bibliographic data", if_plugin);
|
||||
bibliographic_plugin = PluginManager::new(&BibliographicData::start, I"bibliographic data", if_plugin);
|
||||
chronology_plugin = PluginManager::new(NULL, I"chronology", if_plugin);
|
||||
|
||||
@
|
||||
|
|
|
@ -1,16 +0,0 @@
|
|||
[IFModuleMeanings::] IF Special Meanings.
|
||||
|
||||
Setting up the use of this module.
|
||||
|
||||
@ =
|
||||
void IFModuleMeanings::bootstrap(void) {
|
||||
SpecialMeanings::declare(PL::Scenes::begins_when_SMF, I"scene-begins-when", 1);
|
||||
SpecialMeanings::declare(PL::Scenes::ends_when_SMF, I"scene-ends-when", 1);
|
||||
SpecialMeanings::declare(PL::Parsing::understand_as_SMF, I"understand-as", 1);
|
||||
|
||||
SpecialMeanings::declare(PL::Actions::new_action_SMF, I"new-action", 2);
|
||||
SpecialMeanings::declare(PL::Bibliographic::episode_SMF, I"episode", 2);
|
||||
|
||||
SpecialMeanings::declare(PL::Bibliographic::Release::release_along_with_SMF,I"release-along-with", 4);
|
||||
SpecialMeanings::declare(PL::EPSMap::index_map_with_SMF, I"index-map-with", 4);
|
||||
}
|
|
@ -1,145 +1,77 @@
|
|||
[PL::Bibliographic::] Bibliographic Data.
|
||||
[BibliographicData::] Bibliographic Data.
|
||||
|
||||
To manage the special variables providing bibliographic data on the
|
||||
work of IF being generated (title, author's name and so forth), and to write
|
||||
the Library Card in the index.
|
||||
|
||||
@ Much of this section is best understood by reference to the Treaty of
|
||||
@h Enter the plugin.
|
||||
This chapter defines the "bibliographic data" plugin, whose activation
|
||||
function follows.
|
||||
|
||||
Much of this chapter is best understood by reference to the Treaty of
|
||||
Babel, a cross-IF-system standard for bibliographic data and packaging
|
||||
agreed between the major IF design systems in 2006. Inform aims to comply
|
||||
fully with the Treaty and the code below should be maintained as such.
|
||||
|
||||
The bibliographic data for the story is kept in the following variables,
|
||||
which are used to build the iFiction record and the releasing blurb at
|
||||
the end of a successful compilation.
|
||||
|
||||
=
|
||||
nonlocal_variable *story_title_VAR = NULL;
|
||||
nonlocal_variable *story_author_VAR = NULL;
|
||||
nonlocal_variable *story_headline_VAR = NULL;
|
||||
nonlocal_variable *story_genre_VAR = NULL;
|
||||
nonlocal_variable *story_description_VAR = NULL;
|
||||
nonlocal_variable *story_release_number_VAR = NULL;
|
||||
nonlocal_variable *story_creation_year_VAR = NULL;
|
||||
int episode_number = -1; /* for a work which is part of a numbered series */
|
||||
wchar_t *series_name = NULL;
|
||||
|
||||
@ This is organised as a plugin since it's all broadly IF-based, and not
|
||||
something you'd expect in a general programming language. But the main
|
||||
effect is only to make a small number of variables special.
|
||||
|
||||
=
|
||||
void PL::Bibliographic::start(void) {
|
||||
PluginManager::plug(NEW_VARIABLE_NOTIFY_PLUG, PL::Bibliographic::bibliographic_new_variable_notify);
|
||||
void BibliographicData::start(void) {
|
||||
PluginManager::plug(MAKE_SPECIAL_MEANINGS_PLUG,
|
||||
BibliographicData::make_special_meanings);
|
||||
PluginManager::plug(NEW_VARIABLE_NOTIFY_PLUG,
|
||||
BibliographicData::bibliographic_new_variable_notify);
|
||||
PluginManager::plug(COMPILE_RUNTIME_DATA_PLUG,
|
||||
RTBibliographicData::compile_constants);
|
||||
PluginManager::plug(POST_COMPILATION_PLUG,
|
||||
ReleaseInstructions::write_ifiction_and_blurb);
|
||||
}
|
||||
|
||||
@ The following grammar contains the names of all of the bibliographic
|
||||
variables -- those used to set entries on the Library Card about a project.
|
||||
As usual, Inform uses these English wordings to detect the creation of the
|
||||
variables in the Standard Rules, which are in English: so there's no point
|
||||
in translating this nonterminal to other languages.
|
||||
@ This enables two special sentence shapes: one which really should never
|
||||
have been included in Inform, to do with episode numbers, and another which
|
||||
is essential, allowing authors to specify how releases are made.
|
||||
|
||||
=
|
||||
<notable-bibliographic-variables> ::=
|
||||
story title |
|
||||
story author |
|
||||
story headline |
|
||||
story genre |
|
||||
story description |
|
||||
story creation year |
|
||||
release number
|
||||
|
||||
@ And we read them here:
|
||||
|
||||
@d STORY_TITLE_BIBV 0
|
||||
@d STORY_AUTHOR_BIBV 1
|
||||
@d STORY_HEADLINE_BIBV 2
|
||||
@d STORY_GENRE_BIBV 3
|
||||
@d STORY_DESCRIPTION_BIBV 4
|
||||
@d STORY_CREATION_YEAR_BIBV 5
|
||||
@d RELEASE_NUMBER_BIBV 6
|
||||
|
||||
=
|
||||
int PL::Bibliographic::bibliographic_new_variable_notify(nonlocal_variable *q) {
|
||||
if (<notable-bibliographic-variables>(q->name)) {
|
||||
switch (<<r>>) {
|
||||
case STORY_TITLE_BIBV: story_title_VAR = q; break;
|
||||
case STORY_AUTHOR_BIBV: story_author_VAR = q; break;
|
||||
case STORY_HEADLINE_BIBV: story_headline_VAR = q; break;
|
||||
case STORY_GENRE_BIBV: story_genre_VAR = q; break;
|
||||
case STORY_DESCRIPTION_BIBV: story_description_VAR = q; break;
|
||||
case STORY_CREATION_YEAR_BIBV: story_creation_year_VAR = q; break;
|
||||
case RELEASE_NUMBER_BIBV: story_release_number_VAR = q; break;
|
||||
}
|
||||
NonlocalVariables::make_constant(q, TRUE);
|
||||
}
|
||||
int BibliographicData::make_special_meanings(void) {
|
||||
SpecialMeanings::declare(BibliographicData::episode_SMF,
|
||||
I"episode", 2);
|
||||
SpecialMeanings::declare(ReleaseInstructions::release_along_with_SMF,
|
||||
I"release-along-with", 4);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ The following is called in response to the bibliographic sentence. That in
|
||||
fact has already been parsed by Inbuild, so we simply extract the results,
|
||||
and set the "story title" and "story author" variables accordingly.
|
||||
|
||||
=
|
||||
void PL::Bibliographic::bibliographic_data(parse_node *PN) {
|
||||
inbuild_edition *edn = Task::edition();
|
||||
TEMPORARY_TEXT(T)
|
||||
TEMPORARY_TEXT(A)
|
||||
WRITE_TO(T, "\"%S\" ", edn->work->title);
|
||||
WRITE_TO(A, "\"%S\" ", edn->work->author_name);
|
||||
wording TW = Feeds::feed_text(T);
|
||||
wording AW = Feeds::feed_text(A);
|
||||
DISCARD_TEXT(T)
|
||||
DISCARD_TEXT(A)
|
||||
|
||||
if ((story_title_VAR) && (story_author_VAR)) {
|
||||
parse_node *the_title;
|
||||
if (<s-value>(TW)) the_title = <<rp>>;
|
||||
else the_title = Specifications::new_UNKNOWN(TW);
|
||||
Assertions::PropertyKnowledge::initialise_global_variable(story_title_VAR, the_title);
|
||||
TextLiterals::suppress_quote_expansion(Node::get_text(the_title));
|
||||
|
||||
if (Str::len(edn->work->author_name) > 0) {
|
||||
parse_node *the_author;
|
||||
if (<s-value>(AW)) the_author = <<rp>>;
|
||||
else the_author = Specifications::new_UNKNOWN(AW);
|
||||
Assertions::PropertyKnowledge::initialise_global_variable(story_author_VAR, the_author);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ This unattractive routine performs a string comparison of the author's name
|
||||
against one that's supplied, case sensitively, and is used when deciding
|
||||
whether to print credits at run-time for extensions written by the same
|
||||
person as the author of the main work.
|
||||
|
||||
=
|
||||
int PL::Bibliographic::story_author_is(text_stream *p) {
|
||||
if ((story_author_VAR) &&
|
||||
(VariableSubjects::has_initial_value_set(story_author_VAR))) {
|
||||
parse_node *spec = VariableSubjects::get_initial_value(story_author_VAR);
|
||||
Node::set_kind_of_value(spec, K_text);
|
||||
int result = FALSE;
|
||||
TEMPORARY_TEXT(TEMP)
|
||||
wording W = Node::get_text(spec);
|
||||
int w1 = Wordings::first_wn(W);
|
||||
PL::Bibliographic::compile_bibliographic_text(TEMP, Lexer::word_text(w1));
|
||||
if (Str::eq(TEMP, p)) result = TRUE;
|
||||
DISCARD_TEXT(TEMP)
|
||||
return result;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ Inform probably shouldn't support this sentence, which does nothing other
|
||||
than to fill in two pieces of rarely-used bibliographic data (which could
|
||||
just as easily be variables). But two of the larger worked examples we were
|
||||
trying Inform out on, in the early days, belonged to a sequence called
|
||||
"When in Rome". So it didn't seem such an obscure request at the time.
|
||||
@h Episode sentences.
|
||||
Episode sentences do nothing other than to fill in two pieces of rarely-used
|
||||
bibliographic data (which could just as easily be variables). But two of the
|
||||
larger worked examples we were trying Inform out on, in the early days,
|
||||
belonged to a sequence called "When in Rome". So it didn't seem such an
|
||||
obscure request at the time.
|
||||
|
||||
>> This is episode 2 of "When in Rome".
|
||||
|
||||
The subject noun phrase is fixed, so the information is in the object NP,
|
||||
This handles the special meaning "The story is episode...".
|
||||
|
||||
=
|
||||
int episode_number = -1; /* for a work which is part of a numbered series */
|
||||
wchar_t *series_name = NULL;
|
||||
|
||||
int BibliographicData::episode_SMF(int task, parse_node *V, wording *NPs) {
|
||||
wording SW = (NPs)?(NPs[0]):EMPTY_WORDING;
|
||||
wording OW = (NPs)?(NPs[1]):EMPTY_WORDING;
|
||||
switch (task) { /* "The story is episode 2 of ..." */
|
||||
case ACCEPT_SMFT:
|
||||
if ((<episode-sentence-subject>(SW)) && (<episode-sentence-object>(OW))) {
|
||||
if (<<r>> >= 0) {
|
||||
episode_number = <<r>>;
|
||||
Word::dequote(<<series>>);
|
||||
series_name = Lexer::word_text(<<series>>);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ The subject noun phrase is fixed, so the information is in the object NP,
|
||||
which must match:
|
||||
|
||||
=
|
||||
|
@ -162,200 +94,152 @@ which must match:
|
|||
"plain text without [substitutions].");
|
||||
==> { -1, - };
|
||||
|
||||
@ This handles the special meaning "The story is episode...".
|
||||
@h Bibliographic variables.
|
||||
Most of the bibliographic data on a story is kept global variables, however,
|
||||
which are used to build the iFiction record and the releasing blurb at the end
|
||||
of a successful compilation. They are:
|
||||
|
||||
= (early code)
|
||||
nonlocal_variable *story_title_VAR = NULL;
|
||||
nonlocal_variable *story_author_VAR = NULL;
|
||||
nonlocal_variable *story_headline_VAR = NULL;
|
||||
nonlocal_variable *story_genre_VAR = NULL;
|
||||
nonlocal_variable *story_description_VAR = NULL;
|
||||
nonlocal_variable *story_creation_year_VAR = NULL;
|
||||
nonlocal_variable *story_release_number_VAR = NULL;
|
||||
|
||||
@ As usual, Inform uses these English wordings to detect the creation of the
|
||||
variables in the Standard Rules, which are in English: so there's no point
|
||||
in translating this nonterminal to other languages.
|
||||
|
||||
@d STORY_TITLE_BIBV 0
|
||||
@d STORY_AUTHOR_BIBV 1
|
||||
@d STORY_HEADLINE_BIBV 2
|
||||
@d STORY_GENRE_BIBV 3
|
||||
@d STORY_DESCRIPTION_BIBV 4
|
||||
@d STORY_CREATION_YEAR_BIBV 5
|
||||
@d RELEASE_NUMBER_BIBV 6
|
||||
|
||||
=
|
||||
int PL::Bibliographic::episode_SMF(int task, parse_node *V, wording *NPs) {
|
||||
wording SW = (NPs)?(NPs[0]):EMPTY_WORDING;
|
||||
wording OW = (NPs)?(NPs[1]):EMPTY_WORDING;
|
||||
switch (task) { /* "The story is episode 2 of ..." */
|
||||
case ACCEPT_SMFT:
|
||||
if ((<episode-sentence-subject>(SW)) && (<episode-sentence-object>(OW))) {
|
||||
if (<<r>> >= 0) {
|
||||
episode_number = <<r>>;
|
||||
Word::dequote(<<series>>);
|
||||
series_name = Lexer::word_text(<<series>>);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
break;
|
||||
<notable-bibliographic-variables> ::=
|
||||
story title |
|
||||
story author |
|
||||
story headline |
|
||||
story genre |
|
||||
story description |
|
||||
story creation year |
|
||||
release number
|
||||
|
||||
@ And we read them here:
|
||||
|
||||
=
|
||||
int BibliographicData::bibliographic_new_variable_notify(nonlocal_variable *q) {
|
||||
if (<notable-bibliographic-variables>(q->name)) {
|
||||
switch (<<r>>) {
|
||||
case STORY_TITLE_BIBV: story_title_VAR = q; break;
|
||||
case STORY_AUTHOR_BIBV: story_author_VAR = q; break;
|
||||
case STORY_HEADLINE_BIBV: story_headline_VAR = q; break;
|
||||
case STORY_GENRE_BIBV: story_genre_VAR = q; break;
|
||||
case STORY_DESCRIPTION_BIBV: story_description_VAR = q; break;
|
||||
case STORY_CREATION_YEAR_BIBV: story_creation_year_VAR = q; break;
|
||||
case RELEASE_NUMBER_BIBV: story_release_number_VAR = q; break;
|
||||
}
|
||||
NonlocalVariables::make_constant(q, TRUE);
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ In the I6 template layer, some of the bibliographic variables are actually
|
||||
compiled to constants, used early on at run-time to print the banner.
|
||||
@h The opening sentence.
|
||||
The following is called in response to the bibliographic sentence -- the
|
||||
optional one at the start of a source text which gives its title and author.
|
||||
This isn't handled by the special meaning machinery above because it really
|
||||
isn't a conventional sentence at all -- there's no verb. Instead, //assertions//
|
||||
calls this function directly on pass 2.
|
||||
|
||||
Should either title or author be unspecified, we use whatever the //supervisor//
|
||||
module thought was the title or author.
|
||||
|
||||
=
|
||||
void PL::Bibliographic::compile_constants(void) {
|
||||
encode_constant_text_bibliographically = TRUE;
|
||||
BEGIN_COMPILATION_MODE;
|
||||
COMPILATION_MODE_ENTER(COMPILE_TEXT_TO_I6_CMODE);
|
||||
void BibliographicData::bibliographic_data(parse_node *PN) {
|
||||
inbuild_edition *edn = Task::edition();
|
||||
TEMPORARY_TEXT(T)
|
||||
TEMPORARY_TEXT(A)
|
||||
WRITE_TO(T, "\"%S\" ", edn->work->title);
|
||||
WRITE_TO(A, "\"%S\" ", edn->work->author_name);
|
||||
wording TW = Feeds::feed_text(T);
|
||||
wording AW = Feeds::feed_text(A);
|
||||
DISCARD_TEXT(T)
|
||||
DISCARD_TEXT(A)
|
||||
|
||||
if (story_title_VAR) @<Compile the I6 Story constant@>;
|
||||
if (story_headline_VAR) @<Compile the I6 Headline constant@>;
|
||||
if (story_author_VAR) @<Compile the I6 Story Author constant@>;
|
||||
if (story_release_number_VAR) @<Compile the I6 Release directive@>;
|
||||
@<Compile the I6 serial number, based on the date@>;
|
||||
if ((story_title_VAR) && (story_author_VAR)) {
|
||||
parse_node *the_title;
|
||||
if (<s-value>(TW)) the_title = <<rp>>;
|
||||
else the_title = Specifications::new_UNKNOWN(TW);
|
||||
Assertions::PropertyKnowledge::initialise_global_variable(
|
||||
story_title_VAR, the_title);
|
||||
TextLiterals::suppress_quote_expansion(Node::get_text(the_title));
|
||||
|
||||
END_COMPILATION_MODE;
|
||||
encode_constant_text_bibliographically = FALSE;
|
||||
}
|
||||
|
||||
@ If the author doesn't name a work, then its title is properly "", not
|
||||
"Welcome": that's just something we use to provide a readable banner.
|
||||
|
||||
@<Compile the I6 Story constant@> =
|
||||
inter_name *iname = Hierarchy::find(STORY_HL);
|
||||
NonlocalVariables::initial_value_as_plain_text(story_title_VAR);
|
||||
inter_ti v1 = 0, v2 = 0;
|
||||
if (VariableSubjects::has_initial_value_set(story_title_VAR))
|
||||
RTVariables::seek_initial_value(iname, &v1, &v2, story_title_VAR);
|
||||
else
|
||||
TextLiterals::compile_literal_from_text(iname, &v1, &v2, L"\"Welcome\"");
|
||||
Emit::named_generic_constant(iname, v1, v2);
|
||||
Hierarchy::make_available(Emit::tree(), iname);
|
||||
|
||||
@ And similarly here:
|
||||
|
||||
@<Compile the I6 Headline constant@> =
|
||||
inter_name *iname = Hierarchy::find(HEADLINE_HL);
|
||||
inter_ti v1 = 0, v2 = 0;
|
||||
if (VariableSubjects::has_initial_value_set(story_headline_VAR)) {
|
||||
NonlocalVariables::initial_value_as_plain_text(story_headline_VAR);
|
||||
RTVariables::seek_initial_value(iname, &v1, &v2, story_headline_VAR);
|
||||
} else {
|
||||
TextLiterals::compile_literal_from_text(iname, &v1, &v2, L"\"An Interactive Fiction\"");
|
||||
}
|
||||
Emit::named_generic_constant(iname, v1, v2);
|
||||
Hierarchy::make_available(Emit::tree(), iname);
|
||||
|
||||
@ This time we compile nothing if no author is provided:
|
||||
|
||||
@<Compile the I6 Story Author constant@> =
|
||||
if (VariableSubjects::has_initial_value_set(story_author_VAR)) {
|
||||
inter_name *iname = Hierarchy::find(STORY_AUTHOR_HL);
|
||||
inter_ti v1 = 0, v2 = 0;
|
||||
NonlocalVariables::initial_value_as_plain_text(story_author_VAR);
|
||||
RTVariables::seek_initial_value(iname, &v1, &v2, story_author_VAR);
|
||||
Emit::named_generic_constant(iname, v1, v2);
|
||||
Hierarchy::make_available(Emit::tree(), iname);
|
||||
global_compilation_settings.story_author_given = TRUE;
|
||||
} else {
|
||||
inter_name *iname = Hierarchy::find(STORY_AUTHOR_HL);
|
||||
inter_ti v1 = LITERAL_IVAL, v2 = 0;
|
||||
Emit::named_generic_constant(iname, v1, v2);
|
||||
Hierarchy::make_available(Emit::tree(), iname);
|
||||
}
|
||||
|
||||
@ Similarly (but numerically):
|
||||
|
||||
@<Compile the I6 Release directive@> =
|
||||
if (VariableSubjects::has_initial_value_set(story_release_number_VAR)) {
|
||||
inter_name *iname = Hierarchy::find(RELEASE_HL);
|
||||
inter_ti v1 = 0, v2 = 0;
|
||||
RTVariables::seek_initial_value(iname, &v1, &v2, story_release_number_VAR);
|
||||
Emit::named_generic_constant(iname, v1, v2);
|
||||
Hierarchy::make_available(Emit::tree(), iname);
|
||||
}
|
||||
|
||||
@ This innocuous code -- if Inform runs on 25 June 2013, we compile the serial
|
||||
number "130625" -- is actually controversial: quite a few users feel they
|
||||
should be able to fake the date-stamp with dates of their own choosing.
|
||||
|
||||
@<Compile the I6 serial number, based on the date@> =
|
||||
inter_name *iname = Hierarchy::find(SERIAL_HL);
|
||||
TEMPORARY_TEXT(SN)
|
||||
int year_digits = (the_present->tm_year) % 100;
|
||||
WRITE_TO(SN, "%02d%02d%02d",
|
||||
year_digits, (the_present->tm_mon)+1, the_present->tm_mday);
|
||||
Emit::named_text_constant(iname, SN);
|
||||
DISCARD_TEXT(SN)
|
||||
Hierarchy::make_available(Emit::tree(), iname);
|
||||
|
||||
@ The Library Card is part of the Contents index, and is intended as a
|
||||
natural way to present bibliographic data to the user. In effect, it's a
|
||||
simplified form of the iFiction record, without the XML overhead.
|
||||
|
||||
=
|
||||
void PL::Bibliographic::index_library_card(OUTPUT_STREAM) {
|
||||
HTML_OPEN("p");
|
||||
Index::anchor(OUT, I"LCARD");
|
||||
HTML::begin_html_table(OUT, "*bg_images/indexcard.png", FALSE, 0, 3, 3, 0, 0);
|
||||
PL::Bibliographic::library_card_entry(OUT, "Story title", story_title_VAR, I"Untitled");
|
||||
PL::Bibliographic::library_card_entry(OUT, "Story author", story_author_VAR, I"Anonymous");
|
||||
PL::Bibliographic::library_card_entry(OUT, "Story headline", story_headline_VAR, I"An Interactive Fiction");
|
||||
PL::Bibliographic::library_card_entry(OUT, "Story genre", story_genre_VAR, I"Fiction");
|
||||
if (episode_number >= 0) {
|
||||
TEMPORARY_TEXT(episode_text)
|
||||
WRITE_TO(episode_text, "%d of %w", episode_number, series_name);
|
||||
PL::Bibliographic::library_card_entry(OUT, "Episode", NULL, episode_text);
|
||||
DISCARD_TEXT(episode_text)
|
||||
}
|
||||
PL::Bibliographic::library_card_entry(OUT, "Release number", story_release_number_VAR, I"1");
|
||||
PL::Bibliographic::library_card_entry(OUT, "Story creation year", story_creation_year_VAR, I"(This year)");
|
||||
TEMPORARY_TEXT(lang)
|
||||
inform_language *L = Projects::get_language_of_play(Task::project());
|
||||
if (L == NULL) WRITE_TO(lang, "English");
|
||||
else WRITE_TO(lang, "%X", L->as_copy->edition->work);
|
||||
PL::Bibliographic::library_card_entry(OUT, "Language of play", NULL, lang);
|
||||
DISCARD_TEXT(lang)
|
||||
PL::Bibliographic::library_card_entry(OUT, "IFID number", NULL, PL::Bibliographic::IFID::read_uuid());
|
||||
PL::Bibliographic::library_card_entry(OUT, "Story description", story_description_VAR, I"None");
|
||||
HTML::end_html_table(OUT);
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
|
||||
@ This uses:
|
||||
|
||||
=
|
||||
void PL::Bibliographic::library_card_entry(OUTPUT_STREAM, char *field, nonlocal_variable *nlv, text_stream *t) {
|
||||
text_stream *col = I"303030";
|
||||
if (nlv == story_title_VAR) col = I"803030";
|
||||
HTML::first_html_column_nowrap(OUT, 0, NULL);
|
||||
HTML::begin_colour(OUT, col);
|
||||
HTML_OPEN_WITH("span", "class=\"typewritten\"");
|
||||
WRITE("%s", field);
|
||||
HTML_CLOSE("span");
|
||||
HTML::end_colour(OUT);
|
||||
HTML::next_html_column(OUT, 0);
|
||||
HTML::begin_colour(OUT, col);
|
||||
HTML_OPEN_WITH("span", "class=\"typewritten\"");
|
||||
HTML_OPEN("b");
|
||||
PL::Bibliographic::index_bibliographic_variable(OUT, nlv, t);
|
||||
HTML_CLOSE("b");
|
||||
HTML_CLOSE("span");
|
||||
HTML::end_colour(OUT);
|
||||
HTML::end_html_row(OUT);
|
||||
}
|
||||
|
||||
@ The Index also likes to print the name and authorship at the top of the
|
||||
Contents listing, so:
|
||||
|
||||
=
|
||||
void PL::Bibliographic::contents_heading(OUTPUT_STREAM) {
|
||||
if ((story_title_VAR == NULL) || (story_author_VAR == NULL))
|
||||
WRITE("Contents");
|
||||
else {
|
||||
PL::Bibliographic::index_bibliographic_variable(OUT, story_title_VAR, I"Untitled");
|
||||
WRITE(" by ");
|
||||
PL::Bibliographic::index_bibliographic_variable(OUT, story_author_VAR, I"Anonymous");
|
||||
if (Str::len(edn->work->author_name) > 0) {
|
||||
parse_node *the_author;
|
||||
if (<s-value>(AW)) the_author = <<rp>>;
|
||||
else the_author = Specifications::new_UNKNOWN(AW);
|
||||
Assertions::PropertyKnowledge::initialise_global_variable(
|
||||
story_author_VAR, the_author);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ And both of those features use:
|
||||
@ This unattractive function performs a string comparison of the author's name
|
||||
against one that's supplied, case sensitively, and is used when deciding
|
||||
whether to print credits at run-time for extensions written by the same
|
||||
person as the author of the main work.
|
||||
|
||||
=
|
||||
void PL::Bibliographic::index_bibliographic_variable(OUTPUT_STREAM, nonlocal_variable *nlv, text_stream *t) {
|
||||
BEGIN_COMPILATION_MODE;
|
||||
COMPILATION_MODE_ENTER(COMPILE_TEXT_TO_XML_CMODE);
|
||||
if ((nlv) && (VariableSubjects::has_initial_value_set(nlv))) {
|
||||
wording W = NonlocalVariables::initial_value_as_plain_text(nlv);
|
||||
PL::Bibliographic::compile_bibliographic_text(OUT, Lexer::word_text(Wordings::first_wn(W)));
|
||||
} else {
|
||||
WRITE("%S", t);
|
||||
int BibliographicData::story_author_is(text_stream *p) {
|
||||
if ((story_author_VAR) &&
|
||||
(VariableSubjects::has_initial_value_set(story_author_VAR))) {
|
||||
parse_node *spec = VariableSubjects::get_initial_value(story_author_VAR);
|
||||
Node::set_kind_of_value(spec, K_text);
|
||||
int result = FALSE;
|
||||
TEMPORARY_TEXT(TEMP)
|
||||
wording W = Node::get_text(spec);
|
||||
int w1 = Wordings::first_wn(W);
|
||||
BibliographicData::compile_bibliographic_text(TEMP, Lexer::word_text(w1));
|
||||
if (Str::eq(TEMP, p)) result = TRUE;
|
||||
DISCARD_TEXT(TEMP)
|
||||
return result;
|
||||
}
|
||||
END_COMPILATION_MODE;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@h The IFID.
|
||||
The Interactive Fiction ID number for an Inform 7-compiled work is the same
|
||||
as the UUID unique ID generated by the Inform 7 application.
|
||||
|
||||
UUIDs are not generated here, but by the user interface application. We expect
|
||||
to read them in the form of the |uuid.txt| file placed in the project bundle
|
||||
by that application. After some agonising, I decided that the Treaty did not
|
||||
actually oblige me to crash out if this file did not exist: but in such
|
||||
cases the UUID is empty.
|
||||
|
||||
@d MAX_UUID_LENGTH 128 /* the UUID is truncated to this if necessary */
|
||||
|
||||
=
|
||||
text_stream *uuid_text = NULL;
|
||||
int uuid_read = -1;
|
||||
|
||||
text_stream *BibliographicData::read_uuid(void) {
|
||||
if (uuid_read >= 0) return uuid_text;
|
||||
uuid_text = Str::new();
|
||||
uuid_read = 0;
|
||||
FILE *xf = Filenames::fopen(Task::uuid_file(), "r");
|
||||
if (xf == NULL) return uuid_text; /* the UUID is the empty string if the file is missing */
|
||||
int c;
|
||||
while (((c = fgetc(xf)) != EOF) /* the UUID file is plain text, not Unicode */
|
||||
&& (uuid_read++ < MAX_UUID_LENGTH-1))
|
||||
PUT_TO(uuid_text, (int) Characters::toupper((wchar_t) c));
|
||||
fclose(xf);
|
||||
return uuid_text;
|
||||
}
|
||||
|
||||
@h Bibliographic text.
|
||||
|
@ -367,7 +251,7 @@ configure Inform for its current purposes. On non-empty strings this routine
|
|||
therefore splits into one of three independent methods.
|
||||
|
||||
=
|
||||
void PL::Bibliographic::compile_bibliographic_text(OUTPUT_STREAM, wchar_t *p) {
|
||||
void BibliographicData::compile_bibliographic_text(OUTPUT_STREAM, wchar_t *p) {
|
||||
if (p == NULL) return;
|
||||
if (TEST_COMPILATION_MODE(COMPILE_TEXT_TO_XML_CMODE))
|
||||
@<Compile bibliographic text as XML respecting Treaty of Babel rules@>;
|
||||
|
@ -386,15 +270,16 @@ for fields in iFiction records.)
|
|||
@<Compile bibliographic text as XML respecting Treaty of Babel rules@> =
|
||||
int i = 0, i2 = Wide::len(p)-1, snl, wsc;
|
||||
if ((p[0] == '"') && (p[i2] == '"')) { i++; i2--; } /* omit surrounding double-quotes */
|
||||
while (Characters::is_babel_whitespace(p[i])) i++; /* omit leading whitespace */
|
||||
while ((i2>=0) && (Characters::is_babel_whitespace(p[i2]))) i2--; /* omit trailing whitespace */
|
||||
while (Characters::is_babel_whitespace(p[i])) i++; /* omit leading space */
|
||||
while ((i2>=0) && (Characters::is_babel_whitespace(p[i2]))) i2--; /* omit trailing space */
|
||||
for (snl = FALSE, wsc = 0; i<=i2; i++) {
|
||||
switch(p[i]) {
|
||||
case ' ': case '\x0a': case '\x0d': case '\t':
|
||||
snl = FALSE;
|
||||
wsc++;
|
||||
int k = i;
|
||||
while ((p[k] == ' ') || (p[k] == '\x0a') || (p[k] == '\x0d') || (p[k] == '\t')) k++;
|
||||
while ((p[k] == ' ') || (p[k] == '\x0a') ||
|
||||
(p[k] == '\x0d') || (p[k] == '\t')) k++;
|
||||
if ((wsc == 1) && (p[k] != NEWLINE_IN_STRING)) WRITE(" ");
|
||||
break;
|
||||
case NEWLINE_IN_STRING:
|
||||
|
|
|
@ -1,52 +0,0 @@
|
|||
[PL::Bibliographic::IFID::] Interactive Fiction ID.
|
||||
|
||||
Computes and makes available the IFID (Interactive Fiction ID) number
|
||||
for an Inform-generated work of IF, in compliance with the Treaty of Babel.
|
||||
|
||||
@ The Interactive Fiction ID number for an Inform 7-compiled work is the
|
||||
same as the UUID unique ID generated by the Inform 7 application.
|
||||
|
||||
UUIDs are not generated here, but by the user interface application: we expect
|
||||
to read them in the form of the |uuid.txt| file placed in the project bundle
|
||||
by that application. After some agonising, I decided that the Treaty did not
|
||||
actually oblige me to crash out if this file did not exist: but in such
|
||||
cases the UUID is empty.
|
||||
|
||||
@d MAX_UUID_LENGTH 128 /* the UUID is truncated to this if necessary */
|
||||
|
||||
=
|
||||
text_stream *uuid_text = NULL;
|
||||
int uuid_read = -1;
|
||||
|
||||
text_stream *PL::Bibliographic::IFID::read_uuid(void) {
|
||||
if (uuid_read >= 0) return uuid_text;
|
||||
uuid_text = Str::new();
|
||||
uuid_read = 0;
|
||||
FILE *xf = Filenames::fopen(Task::uuid_file(), "r");
|
||||
if (xf == NULL) return uuid_text; /* the UUID is the empty string if the file is missing */
|
||||
int c;
|
||||
while (((c = fgetc(xf)) != EOF) /* the UUID file is plain text, not Unicode */
|
||||
&& (uuid_read++ < MAX_UUID_LENGTH-1))
|
||||
PUT_TO(uuid_text, (int) Characters::toupper((wchar_t) c));
|
||||
fclose(xf);
|
||||
return uuid_text;
|
||||
}
|
||||
|
||||
@ The IFID is written into the compiled story file, too, both in order
|
||||
that it can be printed by the VERSION command and to brand the file so
|
||||
that it can still be identified even if it loses touch with its iFiction
|
||||
record. We store the IFID in plain text, with a "magic string" identifier
|
||||
around it, in byte-accessible memory.
|
||||
|
||||
=
|
||||
void PL::Bibliographic::IFID::define_UUID(void) {
|
||||
text_stream *uuid = PL::Bibliographic::IFID::read_uuid();
|
||||
inter_name *UUID_array_iname = Hierarchy::find(UUID_ARRAY_HL);
|
||||
Emit::named_string_constant(UUID_array_iname, uuid);
|
||||
Hierarchy::make_available(Emit::tree(), UUID_array_iname);
|
||||
}
|
||||
|
||||
inter_name *PL::Bibliographic::IFID::UUID(void) {
|
||||
return Hierarchy::find(UUID_ARRAY_HL);
|
||||
}
|
||||
|
File diff suppressed because it is too large
Load diff
357
inform7/if-module/Chapter 2/The Blurb File.w
Normal file
357
inform7/if-module/Chapter 2/The Blurb File.w
Normal file
|
@ -0,0 +1,357 @@
|
|||
[BlurbFile::] The Blurb File.
|
||||
|
||||
To write the blurb file of instructions for inblorb to release the project.
|
||||
|
||||
@ Releasing requires four programs to work together: this one, Inform 6
|
||||
to turn our output into a story file, a releasing agent called "Inblorb"
|
||||
which binds up the result into a blorbed file, and lastly the user interface,
|
||||
which calls the other three in the right sequence.
|
||||
|
||||
Although the user interface looks as if it's in charge, in fact we are
|
||||
pulling the strings, because we write a "blurb file" of instructions
|
||||
telling Inblorb exactly what to do. The format for this is an extension of
|
||||
the "blurb" format documented in the "Inform Designer's Manual",
|
||||
fourth edition (the "DM4"); see the published source code for Inblorb.
|
||||
|
||||
Note that the code below does not generate an |author| blurb instruction,
|
||||
which would lead to an AUTH chunk in the final blorb. This is partly
|
||||
because the AUTH chunk is now obsolete in the wake of the Treaty of
|
||||
Babel, but also because it avoids problems with Unicode: an AUTH can
|
||||
only contain plainest ASCII, whereas the author's name known to Inform
|
||||
may very well use characters not representable in ASCII. There is no
|
||||
good way round this: so, farewell AUTH.
|
||||
|
||||
Similarly, we do not supply a release number. The release number of a blorb
|
||||
has a different meaning from that of the story file embedded in it: the
|
||||
number refers to the release of the picture and sound resources found
|
||||
in the blorb, and we know nothing about that. (It's a feature provided
|
||||
for archival re-releases of 1980s IF.)
|
||||
|
||||
@d BIBLIOGRAPHIC_TEXT_TRUNCATION 31
|
||||
|
||||
=
|
||||
void BlurbFile::write(OUTPUT_STREAM, release_instructions *rel) {
|
||||
TEMPORARY_TEXT(TEMP)
|
||||
@<Compose the blorbed story filename into the TEMP stream@>;
|
||||
WRITE("! Blurb file created by Inform %B (build %B)\n\n", FALSE, TRUE);
|
||||
@<Write the body of the Blurb file@>;
|
||||
DISCARD_TEXT(TEMP)
|
||||
}
|
||||
|
||||
@ Note that we truncate the title if it becomes vastly long, to make sure
|
||||
the Blorb-file's filename won't be too long for the file system.
|
||||
|
||||
@<Compose the blorbed story filename into the TEMP stream@> =
|
||||
if ((story_title_VAR != NULL) &&
|
||||
(VariableSubjects::has_initial_value_set(story_title_VAR))) {
|
||||
BEGIN_COMPILATION_MODE;
|
||||
COMPILATION_MODE_ENTER(TRUNCATE_TEXT_CMODE);
|
||||
BlurbFile::write_var_to_text(TEMP, story_title_VAR);
|
||||
END_COMPILATION_MODE;
|
||||
} else WRITE_TO(TEMP, "story");
|
||||
WRITE_TO(TEMP, ".%S", TargetVMs::get_blorbed_extension(Task::vm()));
|
||||
|
||||
@<Write the body of the Blurb file@> =
|
||||
@<Tell Inblorb where to write its report to@>;
|
||||
WRITE("\n! Identification\n\n");
|
||||
@<Tell Inblorb where the project and release folders are@>;
|
||||
WRITE("\n! Blorb instructions\n\n");
|
||||
@<Tell Inblorb where the story file and iFiction files are@>;
|
||||
@<Give instructions about the cover image@>;
|
||||
Figures::write_blurb_commands(OUT);
|
||||
Sounds::write_blurb_commands(OUT);
|
||||
WRITE("\n! Placeholder variables\n\n");
|
||||
@<Write numerous placeholder variables@>;
|
||||
WRITE("\n! Other material to release\n\n");
|
||||
@<Give instructions about source text, solution and library card@>;
|
||||
@<Give instructions about auxiliary files@>;
|
||||
if (rel->release_interpreter) @<Give instructions to release with an interpreter for Web play@>;
|
||||
if (rel->release_website) @<Give instructions to construct a website around the release@>;
|
||||
@<Give hints to Inblorb for its HTML status page@>;
|
||||
|
||||
@<Tell Inblorb where to write its report to@> =
|
||||
WRITE("status \"%f\" \"%f\"\n\n",
|
||||
Supervisor::file_from_installation(CBLORB_REPORT_MODEL_IRES),
|
||||
Task::cblorb_report_file());
|
||||
|
||||
@<Tell Inblorb where the project and release folders are@> =
|
||||
WRITE("project folder \"%p\"\n", Projects::path(Task::project()));
|
||||
if (rel->create_Materials)
|
||||
WRITE("release to \"%p\"\n", Task::release_path());
|
||||
|
||||
@<Tell Inblorb where the story file and iFiction files are@> =
|
||||
WRITE("storyfile leafname \""); STREAM_COPY(OUT, TEMP); WRITE("\"\n");
|
||||
if (Task::wraps_existing_storyfile())
|
||||
WRITE("storyfile \"%f\" include\n", Task::existing_storyfile_file());
|
||||
else
|
||||
WRITE("storyfile \"%f\" include\n", Task::storyfile_file());
|
||||
WRITE("ifiction \"%f\" include\n", Task::ifiction_record_file());
|
||||
|
||||
@ A controversial point here is that if the author supplies no cover art, we
|
||||
supply it for him, and if necessary copy a suitable image into any website
|
||||
released along with the work.
|
||||
|
||||
@<Give instructions about the cover image@> =
|
||||
if (rel->release_cover) {
|
||||
filename *large = NULL;
|
||||
if (strcmp(rel->cover_art_format, "jpg") == 0)
|
||||
large = Task::large_cover_art_file(TRUE);
|
||||
else
|
||||
large = Task::large_cover_art_file(FALSE);
|
||||
WRITE("cover \"%f\"\n", large);
|
||||
WRITE("picture %d \"%f\"\n", rel->cover_picture_number, large);
|
||||
} else {
|
||||
WRITE("cover \"%f\"\n",
|
||||
Supervisor::file_from_installation(LARGE_DEFAULT_COVER_ART_IRES));
|
||||
WRITE("picture %d \"%f\"\n", 1,
|
||||
Supervisor::file_from_installation(LARGE_DEFAULT_COVER_ART_IRES));
|
||||
if (rel->release_website) {
|
||||
WRITE("release file \"%f\"\n",
|
||||
Supervisor::file_from_installation(LARGE_DEFAULT_COVER_ART_IRES));
|
||||
WRITE("release file \"%f\"\n",
|
||||
Supervisor::file_from_installation(SMALL_DEFAULT_COVER_ART_IRES));
|
||||
}
|
||||
}
|
||||
|
||||
@ This will be recognisable as yet another form of the Library Card information.
|
||||
"Placeholders" are the only data structure in the primitive blurb language, and
|
||||
are in effect strings, whose names appear in block capitals within square
|
||||
brackets [THUS].
|
||||
|
||||
@<Write numerous placeholder variables@> =
|
||||
WRITE("placeholder [IFID] = \"%S\"\n", BibliographicData::read_uuid());
|
||||
|
||||
if (VariableSubjects::has_initial_value_set(story_release_number_VAR)) {
|
||||
WRITE("placeholder [RELEASE] = \"");
|
||||
BlurbFile::write_var_to_text(OUT, story_release_number_VAR);
|
||||
WRITE("\"\n");
|
||||
} else WRITE("placeholder [RELEASE] = \"1\"\n");
|
||||
|
||||
BEGIN_COMPILATION_MODE;
|
||||
COMPILATION_MODE_ENTER(COMPILE_TEXT_TO_XML_CMODE);
|
||||
|
||||
if (VariableSubjects::has_initial_value_set(story_creation_year_VAR)) {
|
||||
WRITE("placeholder [YEAR] = \"");
|
||||
BlurbFile::write_var_to_text(OUT, story_creation_year_VAR);
|
||||
WRITE("\"\n");
|
||||
} else WRITE("placeholder [YEAR] = \"%d\"\n", (the_present->tm_year)+1900);
|
||||
|
||||
if (VariableSubjects::has_initial_value_set(story_title_VAR)) {
|
||||
NonlocalVariables::initial_value_as_plain_text(story_title_VAR);
|
||||
WRITE("placeholder [TITLE] = \"");
|
||||
BlurbFile::write_var_to_text(OUT, story_title_VAR);
|
||||
WRITE("\"\n");
|
||||
} else WRITE("placeholder [TITLE] = \"Untitled\"\n");
|
||||
|
||||
if (VariableSubjects::has_initial_value_set(story_author_VAR)) {
|
||||
NonlocalVariables::initial_value_as_plain_text(story_author_VAR);
|
||||
WRITE("placeholder [AUTHOR] = \"");
|
||||
BlurbFile::write_var_to_text(OUT, story_author_VAR);
|
||||
WRITE("\"\n");
|
||||
} else WRITE("placeholder [AUTHOR] = \"Anonymous\"\n");
|
||||
|
||||
if (VariableSubjects::has_initial_value_set(story_description_VAR)) {
|
||||
NonlocalVariables::initial_value_as_plain_text(story_description_VAR);
|
||||
WRITE("placeholder [BLURB] = \"");
|
||||
BlurbFile::write_var_to_text(OUT, story_description_VAR);
|
||||
WRITE("\"\n");
|
||||
} else WRITE("placeholder [BLURB] = \"A work of interactive fiction.\"\n");
|
||||
|
||||
END_COMPILATION_MODE;
|
||||
|
||||
@<Give instructions about source text, solution and library card@> =
|
||||
if (rel->release_source) {
|
||||
if (rel->source_public) WRITE("source public\n"); else WRITE("source\n");
|
||||
}
|
||||
if (rel->release_solution) {
|
||||
if (rel->solution_public) WRITE("solution public\n"); else WRITE("solution\n");
|
||||
}
|
||||
if (rel->release_card) {
|
||||
if (rel->card_public) WRITE("ifiction public\n"); else WRITE("ifiction\n");
|
||||
}
|
||||
|
||||
@ The Introduction booklet and the Postcard are both squirreled away inside
|
||||
a standard Inform installation. Under the Creative Commons licence terms for
|
||||
the Postcard, we have to credit its authors here; but the booklet contains its
|
||||
own credits.
|
||||
|
||||
@<Give instructions about auxiliary files@> =
|
||||
auxiliary_file *af;
|
||||
LOOP_OVER(af, auxiliary_file) {
|
||||
TEMPORARY_TEXT(rel)
|
||||
Pathnames::to_text_relative(rel, af->folder_to_release_to, Task::release_path());
|
||||
WRITE("auxiliary \"%f\" \"%S\" \"%S\"\n",
|
||||
af->name_of_original_file,
|
||||
(Str::len(af->brief_description) > 0)?(af->brief_description):I"--",
|
||||
(Str::len(rel) > 0)?rel:I"--");
|
||||
DISCARD_TEXT(rel)
|
||||
}
|
||||
if (rel->release_booklet) {
|
||||
WRITE("auxiliary \"%f\" \"Introduction to IF\" \"--\"\n",
|
||||
Supervisor::file_from_installation(INTRO_BOOKLET_IRES));
|
||||
}
|
||||
if (rel->release_postcard) {
|
||||
WRITE("auxiliary \"%f\" \"IF Postcard\" \"--\"\n",
|
||||
Supervisor::file_from_installation(INTRO_POSTCARD_IRES));
|
||||
WRITE("placeholder [OTHERCREDITS] = \"The postcard was written by Andrew Plotkin "
|
||||
"and designed by Lea Albaugh.\"\n");
|
||||
}
|
||||
|
||||
@ Facilities for a Javascript interpreter to play a base64-encoded story
|
||||
file online.
|
||||
|
||||
@<Give instructions to release with an interpreter for Web play@> =
|
||||
WRITE("\n! Website instructions\n\n");
|
||||
WRITE("placeholder [ENCODEDSTORYFILE] = \"");
|
||||
STREAM_COPY(OUT, TEMP);
|
||||
WRITE(".js\"\n");
|
||||
@<Tell Inblorb where to find the website templates@>;
|
||||
|
||||
if (Str::len(rel->interpreter_template_leafname) == 0)
|
||||
rel->interpreter_template_leafname = TargetVMs::get_default_interpreter(Task::vm());
|
||||
text_stream *ext = TargetVMs::get_blorbed_extension(Task::vm());
|
||||
WRITE("placeholder [INTERPRETERSCRIPTS] = \" ");
|
||||
auxiliary_file *af;
|
||||
LOOP_OVER(af, auxiliary_file)
|
||||
if (af->from_payload == JAVASCRIPT_PAYLOAD) {
|
||||
TEMPORARY_TEXT(rel)
|
||||
Filenames::to_text_relative(rel, af->name_of_original_file,
|
||||
Projects::materials_path(Task::project()));
|
||||
WRITE("<script src='%S'></script>", rel);
|
||||
DISCARD_TEXT(rel)
|
||||
}
|
||||
LOOP_OVER(af, auxiliary_file)
|
||||
if (af->from_payload == CSS_PAYLOAD) {
|
||||
TEMPORARY_TEXT(rel)
|
||||
Filenames::to_text_relative(rel, af->name_of_original_file,
|
||||
Projects::materials_path(Task::project()));
|
||||
WRITE("<link rel='stylesheet' href='%S' type='text/css' media='all'></link>", rel);
|
||||
DISCARD_TEXT(rel)
|
||||
}
|
||||
WRITE("\"\n");
|
||||
WRITE("interpreter \"%S\" \"%c\"\n", rel->interpreter_template_leafname,
|
||||
Str::get_first_char(ext));
|
||||
WRITE("base64 \"%f\" to \"%p%c",
|
||||
Task::storyfile_file(), Task::released_interpreter_path(), FOLDER_SEPARATOR);
|
||||
STREAM_COPY(OUT, TEMP);
|
||||
WRITE(".js\"\n");
|
||||
|
||||
@<Give instructions to construct a website around the release@> =
|
||||
WRITE("\n! Website instructions\n\n");
|
||||
@<Tell Inblorb where to find the website templates@>;
|
||||
if (Wide::cmp(rel->website_template_leafname, L"Classic") != 0) WRITE("css\n");
|
||||
WRITE("website \"%w\"\n", rel->website_template_leafname);
|
||||
|
||||
@ The order here is significant, since Inblorb searches the folders in order,
|
||||
with the earliest quoted searched first.
|
||||
|
||||
@<Tell Inblorb where to find the website templates@> =
|
||||
inbuild_nest *N;
|
||||
linked_list *L = Projects::nest_list(Task::project());
|
||||
LOOP_OVER_LINKED_LIST(N, inbuild_nest, L)
|
||||
WRITE("template path \"%p\"\n", TemplateManager::path_within_nest(N));
|
||||
|
||||
@ Inblorb reports its progress, or lack of it, with an HTML page, just as we do.
|
||||
This page however includes some hints on what the user might have chosen
|
||||
instead of what he actually did choose, and we'll write those hints now, for
|
||||
Inblorb to copy out later.
|
||||
|
||||
@<Give hints to Inblorb for its HTML status page@> =
|
||||
SyntaxTree::traverse_text(Task::syntax_tree(), OUT, BlurbFile::visit_to_quote);
|
||||
if (rel->release_cover == FALSE) {
|
||||
WRITE("status alternative ||Using 'Release along with cover art', to "
|
||||
"provide something more distinctive than the default artwork above");
|
||||
Index::DocReferences::link_to(OUT, I"release_cover", FALSE);
|
||||
WRITE("||\n");
|
||||
}
|
||||
if (rel->release_website == FALSE) {
|
||||
WRITE("status alternative ||Using 'Release along with a website'");
|
||||
Index::DocReferences::link_to(OUT, I"release_website", FALSE);
|
||||
WRITE("||\n");
|
||||
}
|
||||
if (rel->release_interpreter == FALSE) {
|
||||
WRITE("status alternative ||Using 'Release along with an interpreter', "
|
||||
"for in-browser play on your website");
|
||||
Index::DocReferences::link_to(OUT, I"release_interpreter", FALSE);
|
||||
WRITE("||\n");
|
||||
}
|
||||
if (NUMBER_CREATED(auxiliary_file) == 0) {
|
||||
WRITE("status alternative ||Using 'Release along with a file of "
|
||||
"\"Such-and-Such\" called \"whatever.pdf\"', perhaps to add a "
|
||||
"manual, or a welcoming note");
|
||||
Index::DocReferences::link_to(OUT, I"release_files", FALSE);
|
||||
WRITE("||\n");
|
||||
}
|
||||
|
||||
if (rel->release_source == FALSE) {
|
||||
WRITE("status alternative ||Using 'Release along with the source text'");
|
||||
Index::DocReferences::link_to(OUT, I"release_source", FALSE);
|
||||
WRITE("||\n");
|
||||
}
|
||||
|
||||
if (rel->release_solution == FALSE) {
|
||||
WRITE("status alternative ||Using 'Release along with a solution'");
|
||||
Index::DocReferences::link_to(OUT, I"release_solution", FALSE);
|
||||
WRITE("||\n");
|
||||
}
|
||||
|
||||
if (rel->release_card == FALSE) {
|
||||
WRITE("status alternative ||Using 'Release along with the library card'");
|
||||
Index::DocReferences::link_to(OUT, I"release_card", FALSE);
|
||||
WRITE("||\n");
|
||||
}
|
||||
|
||||
if (rel->release_booklet == FALSE) {
|
||||
WRITE("status alternative ||Using 'Release along with the introductory booklet'");
|
||||
Index::DocReferences::link_to(OUT, I"release_booklet", FALSE);
|
||||
WRITE("||\n");
|
||||
}
|
||||
|
||||
if (rel->release_postcard == FALSE) {
|
||||
WRITE("status alternative ||Using 'Release along with the introductory postcard'");
|
||||
Index::DocReferences::link_to(OUT, I"release_postcard", FALSE);
|
||||
WRITE("||\n");
|
||||
}
|
||||
|
||||
@ =
|
||||
void BlurbFile::visit_to_quote(OUTPUT_STREAM, parse_node *p) {
|
||||
if ((Node::get_type(p) == SENTENCE_NT) && (p->down)) {
|
||||
special_meaning_holder *sm = Node::get_special_meaning(p->down);
|
||||
if (SpecialMeanings::is(sm, ReleaseInstructions::release_along_with_SMF)) {
|
||||
TEMPORARY_TEXT(TEMP)
|
||||
Index::link_to(TEMP, Wordings::first_wn(Node::get_text(p)), TRUE);
|
||||
WRITE("status instruction ||");
|
||||
STREAM_COPY(OUT, TEMP);
|
||||
WRITE("||\n");
|
||||
DISCARD_TEXT(TEMP)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ =
|
||||
int BlurbFile::write_var_to_text(OUTPUT_STREAM, nonlocal_variable *nlv) {
|
||||
if ((nlv) && (VariableSubjects::has_initial_value_set(nlv))) {
|
||||
parse_node *val =
|
||||
NonlocalVariables::substitute_constants(
|
||||
VariableSubjects::get_initial_value(
|
||||
nlv));
|
||||
kind *K = NonlocalVariables::kind(nlv);
|
||||
if (Node::is(val, UNKNOWN_NT)) {
|
||||
if (Kinds::eq(K, K_number)) WRITE("0");
|
||||
} else {
|
||||
if (Kinds::eq(K, K_number)) {
|
||||
value_holster VH = Holsters::new(INTER_DATA_VHMODE);
|
||||
Specifications::Compiler::compile_constant_to_kind_vh(&VH, val, K);
|
||||
inter_ti v1 = 0, v2 = 0;
|
||||
Holsters::unholster_pair(&VH, &v1, &v2);
|
||||
WRITE("%d", (inter_ti) v2);
|
||||
} else {
|
||||
wording W = Node::get_text(val);
|
||||
int w1 = Wordings::first_wn(W);
|
||||
BibliographicData::compile_bibliographic_text(OUT, Lexer::word_text(w1));
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
240
inform7/if-module/Chapter 2/The iFiction Record.w
Normal file
240
inform7/if-module/Chapter 2/The iFiction Record.w
Normal file
|
@ -0,0 +1,240 @@
|
|||
[iFiction::] The iFiction Record.
|
||||
|
||||
To write the iFiction record for the work of IF compiled.
|
||||
|
||||
@ The format of this file is exactly specified by the Treaty of Babel.
|
||||
|
||||
=
|
||||
void iFiction::write_ifiction_record(OUTPUT_STREAM, release_instructions *rel) {
|
||||
WRITE("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n");
|
||||
WRITE("<ifindex version=\"1.0\" "
|
||||
"xmlns=\"http://babel.ifarchive.org/protocol/iFiction/\">\n"); INDENT;
|
||||
WRITE("<story>\n"); INDENT;
|
||||
zbyte *header = rel->existing_story_header;
|
||||
@<Write the body of the iFiction record@>;
|
||||
OUTDENT; WRITE("</story>\n");
|
||||
OUTDENT; WRITE("</ifindex>\n");
|
||||
}
|
||||
|
||||
@<Write the body of the iFiction record@> =
|
||||
text_stream *story_format = TargetVMs::get_iFiction_format(Task::vm());
|
||||
|
||||
@<Write the identification tag of the iFiction record@>;
|
||||
@<Write the bibliographic tag of the iFiction record@>;
|
||||
if (NUMBER_CREATED(auxiliary_file) > 0)
|
||||
@<Write the resources tag of the iFiction record@>;
|
||||
if (rel->release_cover)
|
||||
@<Write the cover tag of the iFiction record@>;
|
||||
@<Write the releases tag of the iFiction record@>;
|
||||
@<Write the colophon tag of the iFiction record@>;
|
||||
WRITE("<%S>\n", story_format); INDENT;
|
||||
@<Write the format-specific tag of the iFiction record@>;
|
||||
OUTDENT; WRITE("</%S>\n", story_format);
|
||||
|
||||
@<Write the identification tag of the iFiction record@> =
|
||||
WRITE("<identification>\n"); INDENT;
|
||||
WRITE("<ifid>%S</ifid>\n", BibliographicData::read_uuid());
|
||||
if (Task::wraps_existing_storyfile()) {
|
||||
WRITE("<ifid>ZCODE-%d-%c%c%c%c%c%c",
|
||||
header[2]*256+header[3],
|
||||
header[0x12], header[0x13], header[0x14],
|
||||
header[0x15], header[0x16], header[0x17]);
|
||||
if ((header[0x12] != '8') || (Characters::isdigit(header[0x12])))
|
||||
WRITE("-%04x", header[0x1c]*256 + header[0x1d]);
|
||||
WRITE("</ifid>\n");
|
||||
}
|
||||
WRITE("<format>%S</format>\n", story_format);
|
||||
OUTDENT; WRITE("</identification>\n");
|
||||
|
||||
@<Write the bibliographic tag of the iFiction record@> =
|
||||
WRITE("<bibliographic>\n"); INDENT;
|
||||
WRITE("<title>");
|
||||
if (iFiction::write_var_to_XML(OUT, story_title_VAR) == FALSE) WRITE("Untitled");
|
||||
WRITE("</title>\n");
|
||||
WRITE("<author>");
|
||||
if (iFiction::write_var_to_XML(OUT, story_author_VAR) == FALSE) WRITE("Anonymous");
|
||||
WRITE("</author>\n");
|
||||
WRITE("<headline>");
|
||||
if (iFiction::write_var_to_XML(OUT, story_headline_VAR) == FALSE)
|
||||
WRITE("An Interactive Fiction");
|
||||
WRITE("</headline>\n");
|
||||
WRITE("<genre>");
|
||||
if (iFiction::write_var_to_XML(OUT, story_genre_VAR) == FALSE) WRITE("Fiction");
|
||||
WRITE("</genre>\n");
|
||||
WRITE("<firstpublished>");
|
||||
if (iFiction::write_var_to_XML(OUT, story_creation_year_VAR) == FALSE)
|
||||
WRITE("%d", (the_present->tm_year)+1900);
|
||||
WRITE("</firstpublished>\n");
|
||||
if (VariableSubjects::has_initial_value_set(story_description_VAR)) {
|
||||
WRITE("<description>");
|
||||
iFiction::write_var_to_XML(OUT, story_description_VAR);
|
||||
WRITE("</description>\n");
|
||||
}
|
||||
WRITE("<language>");
|
||||
Languages::write_ISO_code(OUT, Projects::get_language_of_play(Task::project()));
|
||||
WRITE("</language>\n");
|
||||
WRITE("<group>Inform</group>\n");
|
||||
if (episode_number >= 0) {
|
||||
WRITE("<seriesnumber>%d</seriesnumber>\n", episode_number);
|
||||
WRITE("<series>%w</series>\n", series_name);
|
||||
}
|
||||
OUTDENT; WRITE("</bibliographic>\n");
|
||||
|
||||
@<Write the resources tag of the iFiction record@> =
|
||||
auxiliary_file *af;
|
||||
WRITE("<resources>\n"); INDENT;
|
||||
LOOP_OVER(af, auxiliary_file) {
|
||||
WRITE("<auxiliary>\n"); INDENT;
|
||||
WRITE("<leafname>");
|
||||
TEMPORARY_TEXT(rel)
|
||||
Filenames::to_text_relative(rel, af->name_of_original_file,
|
||||
Projects::materials_path(Task::project()));
|
||||
HTML::write_xml_safe_text(OUT, rel);
|
||||
DISCARD_TEXT(rel)
|
||||
WRITE("</leafname>\n");
|
||||
if (Str::len(af->brief_description) > 0) {
|
||||
WRITE("<description>");
|
||||
HTML::write_xml_safe_text(OUT, af->brief_description);
|
||||
WRITE("</description>\n");
|
||||
}
|
||||
OUTDENT; WRITE("</auxiliary>\n");
|
||||
}
|
||||
OUTDENT; WRITE("</resources>\n");
|
||||
|
||||
@ The |<description>| key here was added in version 8 of the Treaty of Babel,
|
||||
in February 2014.
|
||||
|
||||
@<Write the cover tag of the iFiction record@> =
|
||||
WRITE("<cover>\n"); INDENT;
|
||||
WRITE("<format>%s</format>\n", rel->cover_art_format);
|
||||
WRITE("<height>%d</height>\n", rel->height);
|
||||
WRITE("<width>%d</width>\n", rel->width);
|
||||
if (rel->cover_alt_text >= 0) {
|
||||
Word::dequote(rel->cover_alt_text);
|
||||
WRITE("<description>%N</description>\n", rel->cover_alt_text);
|
||||
} else {
|
||||
WRITE("<description>%w</description>\n", Figures::description_of_cover_art());
|
||||
}
|
||||
OUTDENT; WRITE("</cover>\n");
|
||||
|
||||
@<Write the releases tag of the iFiction record@> =
|
||||
WRITE("<releases>\n"); INDENT;
|
||||
WRITE("<attached>\n"); INDENT;
|
||||
WRITE("<release>\n"); INDENT;
|
||||
if (Task::wraps_existing_storyfile()) @<Write release data for an existing story file@>
|
||||
else @<Write release data for an Inform 7 project@>;
|
||||
OUTDENT; WRITE("</release>\n");
|
||||
OUTDENT; WRITE("</attached>\n");
|
||||
OUTDENT; WRITE("</releases>\n");
|
||||
|
||||
@ ZILCH was Infocom's in-house compiler of Z-machine story files, and prior
|
||||
to Inform the only one to exist. Inform differs from it in using the last four
|
||||
bytes of the header to store its own version number.
|
||||
|
||||
(The following code will be incorrect on 1 January 2080.)
|
||||
|
||||
@<Write release data for an existing story file@> =
|
||||
WRITE("<releasedate>%s%c%c-%c%c-%c%c</releasedate>\n",
|
||||
((Characters::isdigit(header[0x12])) &&
|
||||
(header[0x12] != '8') && (header[0x12] != '9'))?"20":"19",
|
||||
header[0x12], header[0x13], header[0x14],
|
||||
header[0x15], header[0x16], header[0x17]);
|
||||
WRITE("<version>%d</version>\n", header[2]*256+header[3]);
|
||||
if ((Characters::isdigit(header[0x3c])) &&
|
||||
((Characters::isdigit(header[0x3d])) || (header[0x3d] == '.')) &&
|
||||
(Characters::isdigit(header[0x3e])) && (Characters::isdigit(header[0x3f]))) {
|
||||
if (header[0x3d] == '.') {
|
||||
WRITE("<compiler>Inform 6</compiler>\n");
|
||||
WRITE("<compilerversion>%c%c%c%c</compilerversion>\n",
|
||||
header[0x3c], header[0x3d], header[0x3e], header[0x3f]);
|
||||
}
|
||||
else {
|
||||
WRITE("<compiler>Inform 1-5</compiler>\n");
|
||||
WRITE("<compilerversion>%c%c%c%c</compilerversion>\n",
|
||||
header[0x3c], header[0x3d], header[0x3e], header[0x3f]);
|
||||
}
|
||||
} else {
|
||||
WRITE("<compiler>ZILCH</compiler>\n");
|
||||
WRITE("<compilerversion>%d</compilerversion>\n", header[0x00]);
|
||||
}
|
||||
|
||||
@<Write release data for an Inform 7 project@> =
|
||||
WRITE("<releasedate>%04d-%02d-%02d</releasedate>\n",
|
||||
(the_present->tm_year)+1900, (the_present->tm_mon)+1, the_present->tm_mday);
|
||||
if ((story_release_number_VAR != NULL) &&
|
||||
(VariableSubjects::has_initial_value_set(story_release_number_VAR))) {
|
||||
WRITE("<version>");
|
||||
iFiction::write_var_to_XML(OUT, story_release_number_VAR);
|
||||
WRITE("</version>\n");
|
||||
} else WRITE("<version>1</version>\n");
|
||||
WRITE("<compiler>Inform 7</compiler>\n");
|
||||
WRITE("<compilerversion>%B (build %B)</compilerversion>\n", FALSE, TRUE);
|
||||
|
||||
@<Write the colophon tag of the iFiction record@> =
|
||||
WRITE("<colophon>\n"); INDENT;
|
||||
WRITE("<generator>Inform 7</generator>\n");
|
||||
WRITE("<generatorversion>%B (build %B)</generatorversion>\n", FALSE, TRUE);
|
||||
WRITE("<originated>20%02d-%02d-%02d</originated>\n",
|
||||
(the_present->tm_year)-100, (the_present->tm_mon)+1, the_present->tm_mday);
|
||||
OUTDENT; WRITE("</colophon>\n");
|
||||
|
||||
@ ZIL was Infocom's in-house language, a variant of MDL which in turn resembled
|
||||
LISP.
|
||||
|
||||
@<Write the format-specific tag of the iFiction record@> =
|
||||
if (Task::wraps_existing_storyfile()) {
|
||||
WRITE("<serial>%c%c%c%c%c%c</serial>\n",
|
||||
header[0x12], header[0x13], header[0x14],
|
||||
header[0x15], header[0x16], header[0x17]);
|
||||
WRITE("<release>%d</release>\n", header[2]*256+header[3]);
|
||||
WRITE("<checksum>%04x</checksum>\n", header[0x1c]*256 + header[0x1d]);
|
||||
if ((Characters::isdigit(header[0x3c])) &&
|
||||
((Characters::isdigit(header[0x3d])) || (header[0x3d] == '.')) &&
|
||||
(Characters::isdigit(header[0x3e])) && (Characters::isdigit(header[0x3f]))) {
|
||||
WRITE("<compiler>Inform v%c%c%c%c</compiler>\n",
|
||||
header[0x3c], header[0x3d], header[0x3e], header[0x3f]);
|
||||
} else {
|
||||
WRITE("<compiler>Infocom ZIL</compiler>\n");
|
||||
}
|
||||
} else {
|
||||
WRITE("<serial>%02d%02d%02d</serial>\n",
|
||||
(the_present->tm_year)-100, (the_present->tm_mon)+1, the_present->tm_mday);
|
||||
if ((story_release_number_VAR != NULL) &&
|
||||
(VariableSubjects::has_initial_value_set(story_release_number_VAR))) {
|
||||
WRITE("<release>");
|
||||
iFiction::write_var_to_XML(OUT, story_release_number_VAR);
|
||||
WRITE("</release>\n");
|
||||
} else WRITE("<release>1</release>\n");
|
||||
WRITE("<compiler>Inform %B (build %B)</compiler>\n", FALSE, TRUE);
|
||||
}
|
||||
if (rel->release_cover)
|
||||
WRITE("<coverpicture>%d</coverpicture>\n", rel->cover_picture_number);
|
||||
|
||||
@ =
|
||||
int iFiction::write_var_to_XML(OUTPUT_STREAM, nonlocal_variable *nlv) {
|
||||
NonlocalVariables::initial_value_as_plain_text(nlv);
|
||||
if ((nlv) && (VariableSubjects::has_initial_value_set(nlv))) {
|
||||
parse_node *val =
|
||||
NonlocalVariables::substitute_constants(
|
||||
VariableSubjects::get_initial_value(
|
||||
nlv));
|
||||
kind *K = NonlocalVariables::kind(nlv);
|
||||
if (Node::is(val, UNKNOWN_NT)) {
|
||||
if (Kinds::eq(K, K_number)) WRITE("0");
|
||||
} else {
|
||||
if (Kinds::eq(K, K_number)) {
|
||||
value_holster VH = Holsters::new(INTER_DATA_VHMODE);
|
||||
Specifications::Compiler::compile_constant_to_kind_vh(&VH, val, K);
|
||||
inter_ti v1 = 0, v2 = 0;
|
||||
Holsters::unholster_pair(&VH, &v1, &v2);
|
||||
WRITE("%d", (inter_ti) v2);
|
||||
} else {
|
||||
wording W = Node::get_text(val);
|
||||
int w1 = Wordings::first_wn(W);
|
||||
BibliographicData::compile_bibliographic_text(OUT, Lexer::word_text(w1));
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
|
@ -88,11 +88,18 @@ including bit 1 which records whether the scene has started.
|
|||
|
||||
=
|
||||
void PL::Scenes::start(void) {
|
||||
PluginManager::plug(MAKE_SPECIAL_MEANINGS_PLUG, PL::Scenes::make_special_meanings);
|
||||
PluginManager::plug(NEW_PROPERTY_NOTIFY_PLUG, PL::Scenes::scenes_new_property_notify);
|
||||
PluginManager::plug(NEW_INSTANCE_NOTIFY_PLUG, PL::Scenes::scenes_new_named_instance_notify);
|
||||
PluginManager::plug(NEW_BASE_KIND_NOTIFY_PLUG, PL::Scenes::scenes_new_base_kind_notify);
|
||||
}
|
||||
|
||||
int PL::Scenes::make_special_meanings(void) {
|
||||
SpecialMeanings::declare(PL::Scenes::begins_when_SMF, I"scene-begins-when", 1);
|
||||
SpecialMeanings::declare(PL::Scenes::ends_when_SMF, I"scene-ends-when", 1);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ To detect "scene" and "recurring":
|
||||
|
||||
=
|
||||
|
|
|
@ -167,6 +167,7 @@ void PL::Map::start(void) {
|
|||
METHOD_ADD(DIRECTION_INF, LOG_DETAILS_INF_MTID, PL::Map::log_direction_inf);
|
||||
METHOD_ADD(DIRECTION_INF, COMPARE_INF_MTID, PL::Map::cmp_direction_inf);
|
||||
|
||||
PluginManager::plug(MAKE_SPECIAL_MEANINGS_PLUG, PL::Map::make_special_meanings);
|
||||
PluginManager::plug(NEW_BASE_KIND_NOTIFY_PLUG, PL::Map::map_new_base_kind_notify);
|
||||
PluginManager::plug(NEW_SUBJECT_NOTIFY_PLUG, PL::Map::map_new_subject_notify);
|
||||
PluginManager::plug(SET_KIND_NOTIFY_PLUG, PL::Map::map_set_kind_notify);
|
||||
|
@ -182,6 +183,11 @@ void PL::Map::start(void) {
|
|||
PluginManager::plug(ANNOTATE_IN_WORLD_INDEX_PLUG, PL::Map::map_annotate_in_World_index);
|
||||
}
|
||||
|
||||
int PL::Map::make_special_meanings(void) {
|
||||
SpecialMeanings::declare(PL::EPSMap::index_map_with_SMF, I"index-map-with", 4);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ =
|
||||
map_data *PL::Map::new_data(inference_subject *subj) {
|
||||
map_data *md = CREATE(map_data);
|
||||
|
|
|
@ -97,6 +97,7 @@ kind *K_description_of_action = NULL;
|
|||
|
||||
@ =
|
||||
void PL::Actions::start(void) {
|
||||
PluginManager::plug(MAKE_SPECIAL_MEANINGS_PLUG, PL::Actions::make_special_meanings);
|
||||
PluginManager::plug(NEW_BASE_KIND_NOTIFY_PLUG, PL::Actions::actions_new_base_kind_notify);
|
||||
PluginManager::plug(COMPILE_CONSTANT_PLUG, PL::Actions::actions_compile_constant);
|
||||
PluginManager::plug(OFFERED_PROPERTY_PLUG, PL::Actions::actions_offered_property);
|
||||
|
@ -107,6 +108,11 @@ void PL::Actions::start(void) {
|
|||
Vocabulary::set_flags(Vocabulary::entry_for_text(L"asking"), ACTION_PARTICIPLE_MC);
|
||||
}
|
||||
|
||||
int PL::Actions::make_special_meanings(void) {
|
||||
SpecialMeanings::declare(PL::Actions::new_action_SMF, I"new-action", 2);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ =
|
||||
int PL::Actions::actions_new_base_kind_notify(kind *new_base, text_stream *name, wording W) {
|
||||
if (Str::eq_wide_string(name, L"ACTION_NAME_TY")) {
|
||||
|
|
|
@ -61,12 +61,18 @@ parsing_pp_data *PL::Parsing::Visibility::new_pp_data(property_permission *pp) {
|
|||
|
||||
=
|
||||
void PL::Parsing::Visibility::start(void) {
|
||||
PluginManager::plug(MAKE_SPECIAL_MEANINGS_PLUG, PL::Parsing::Visibility::make_special_meanings);
|
||||
PluginManager::plug(NEW_VARIABLE_NOTIFY_PLUG, PL::Parsing::Visibility::parsing_new_variable_notify);
|
||||
PluginManager::plug(NEW_SUBJECT_NOTIFY_PLUG, PL::Parsing::Visibility::parsing_new_subject_notify);
|
||||
PluginManager::plug(NEW_PERMISSION_NOTIFY_PLUG, PL::Parsing::Visibility::parsing_new_permission_notify);
|
||||
PluginManager::plug(COMPLETE_MODEL_PLUG, PL::Parsing::Visibility::parsing_complete_model);
|
||||
}
|
||||
|
||||
int PL::Parsing::Visibility::make_special_meanings(void) {
|
||||
SpecialMeanings::declare(PL::Parsing::understand_as_SMF, I"understand-as", 1);
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
int PL::Parsing::Visibility::parsing_new_subject_notify(inference_subject *subj) {
|
||||
ATTACH_PLUGIN_DATA_TO_SUBJECT(parsing, subj, PL::Parsing::Visibility::new_data(subj));
|
||||
return FALSE;
|
||||
|
|
|
@ -4,16 +4,19 @@ Purpose: The interactive-fiction specific layer of Inform, as a module.
|
|||
Language: InC
|
||||
Licence: Artistic License 2.0
|
||||
|
||||
Preliminaries
|
||||
What This Module Does
|
||||
|
||||
Chapter 1: Starting Up
|
||||
IF Module
|
||||
IF Special Meanings
|
||||
|
||||
Chapter 2: Bibliographic Data
|
||||
"Our project is a kind of interactive book, with ISBN-like data and various
|
||||
cataloguing information, and which needs to be bound up in various ways."
|
||||
Interactive Fiction ID
|
||||
Bibliographic Data
|
||||
Release Instructions
|
||||
The iFiction Record
|
||||
The Blurb File
|
||||
|
||||
Chapter 3: Space and Time
|
||||
"The default model domain for Inform is one which is adapted to interactive
|
||||
|
|
41
inform7/if-module/Preliminaries/What This Module Does.w
Normal file
41
inform7/if-module/Preliminaries/What This Module Does.w
Normal file
|
@ -0,0 +1,41 @@
|
|||
What This Module Does.
|
||||
|
||||
An overview of the if module's role and abilities.
|
||||
|
||||
@h Prerequisites.
|
||||
The if module is a part of the Inform compiler toolset. It is presented as a
|
||||
literate program or "web". Before diving in:
|
||||
(a) It helps to have some experience of reading webs: see //inweb// for more.
|
||||
(b) The module is written in C, in fact ANSI C99, but this is disguised by the
|
||||
fact that it uses some extension syntaxes provided by the //inweb// literate
|
||||
programming tool, making it a dialect of C called InC. See //inweb// for
|
||||
full details, but essentially: it's C without predeclarations or header files,
|
||||
and where functions have names like |Tags::add_by_name| rather than just |add_by_name|.
|
||||
(c) This module uses other modules drawn from the //compiler//, and also
|
||||
uses a module of utility functions called //foundation//.
|
||||
For more, see //foundation: A Brief Guide to Foundation//.
|
||||
|
||||
@h So many plugins.
|
||||
This module consists entirely of plugins, and when they are all inactive,
|
||||
as for example with a Basic Inform project, it's as if the module does not exist
|
||||
at all: it does nothing.
|
||||
|
||||
The module is divided into four substantive parts, which form Chapters 2 to 5,
|
||||
and are largely independent of each other:
|
||||
|
||||
(*) //Chapter 2: Bibliographic Data// is a single plugin, "bibliographic data".
|
||||
This manages metadata on projects, notably the Interactive Fiction ID, and
|
||||
follows a number of Internet standards for such things. //Release Instructions//
|
||||
collates release details included in the source text, and acts as a bridge to
|
||||
the releasing agent //inblorb//.
|
||||
(*) //Chapter 3: Space and Time//, by contrast, is made up of many individual
|
||||
plugins, which can independently be active or not: collectively they form the
|
||||
usual model world for interactive fiction, but it's possible, for example,
|
||||
to remove the concept of a geographical map, or of scenes, and still have
|
||||
the rest.
|
||||
(*) //Chapter 4: Actions// is the single plugin "actions", which provides a
|
||||
framework for how agents in the world model can perform simple tasks such as
|
||||
picking things up, or going from place to place.
|
||||
(*) //Chapter 5: Command Grammar// is the single plugin "parsing", and
|
||||
provides for command parsing. Projects using other mechanisms for having
|
||||
the reader interact with them do not need this, and can deactivate the plugin.
|
|
@ -586,11 +586,9 @@ void Index::index_actual_element(OUTPUT_STREAM, text_stream *elt) {
|
|||
return;
|
||||
}
|
||||
if (Str::eq_wide_string(elt, L"Fi")) {
|
||||
#ifdef MULTIMEDIA_MODULE
|
||||
IXFigures::index_all(OUT);
|
||||
IXSounds::index_all(OUT);
|
||||
IXExternalFiles::index_all(OUT);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
if (Str::eq_wide_string(elt, L"Tb")) {
|
||||
|
@ -599,7 +597,7 @@ void Index::index_actual_element(OUTPUT_STREAM, text_stream *elt) {
|
|||
}
|
||||
if (Str::eq_wide_string(elt, L"Cd")) {
|
||||
#ifdef IF_MODULE
|
||||
PL::Bibliographic::index_library_card(OUT);
|
||||
IXBibliographicData::Library_Card(OUT);
|
||||
#endif
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -55,7 +55,7 @@ int headings_indexed = 0;
|
|||
void IndexHeadings::index(OUTPUT_STREAM) {
|
||||
#ifdef IF_MODULE
|
||||
HTML_OPEN("p");
|
||||
WRITE("<b>"); PL::Bibliographic::contents_heading(OUT); WRITE("</b>");
|
||||
WRITE("<b>"); IXBibliographicData::contents_heading(OUT); WRITE("</b>");
|
||||
HTML_CLOSE("p");
|
||||
#endif
|
||||
HTML_OPEN("p");
|
||||
|
|
93
inform7/index-module/Chapter 3/Bibliographic Data.w
Normal file
93
inform7/index-module/Chapter 3/Bibliographic Data.w
Normal file
|
@ -0,0 +1,93 @@
|
|||
[IXBibliographicData::] Bibliographic Data.
|
||||
|
||||
To write the Library Card in the index.
|
||||
|
||||
@ The Library Card is part of the Contents index, and is intended as a
|
||||
natural way to present bibliographic data to the user. In effect, it's a
|
||||
simplified form of the iFiction record, without the XML overhead.
|
||||
|
||||
=
|
||||
void IXBibliographicData::Library_Card(OUTPUT_STREAM) {
|
||||
HTML_OPEN("p");
|
||||
Index::anchor(OUT, I"LCARD");
|
||||
HTML::begin_html_table(OUT, "*bg_images/indexcard.png", FALSE, 0, 3, 3, 0, 0);
|
||||
IXBibliographicData::Library_Card_entry(OUT, "Story title", story_title_VAR, I"Untitled");
|
||||
IXBibliographicData::Library_Card_entry(OUT, "Story author", story_author_VAR, I"Anonymous");
|
||||
IXBibliographicData::Library_Card_entry(OUT, "Story headline", story_headline_VAR, I"An Interactive Fiction");
|
||||
IXBibliographicData::Library_Card_entry(OUT, "Story genre", story_genre_VAR, I"Fiction");
|
||||
if (episode_number >= 0) {
|
||||
TEMPORARY_TEXT(episode_text)
|
||||
WRITE_TO(episode_text, "%d of %w", episode_number, series_name);
|
||||
IXBibliographicData::Library_Card_entry(OUT, "Episode", NULL, episode_text);
|
||||
DISCARD_TEXT(episode_text)
|
||||
}
|
||||
IXBibliographicData::Library_Card_entry(OUT, "Release number", story_release_number_VAR, I"1");
|
||||
IXBibliographicData::Library_Card_entry(OUT, "Story creation year", story_creation_year_VAR, I"(This year)");
|
||||
TEMPORARY_TEXT(lang)
|
||||
inform_language *L = Projects::get_language_of_play(Task::project());
|
||||
if (L == NULL) WRITE_TO(lang, "English");
|
||||
else WRITE_TO(lang, "%X", L->as_copy->edition->work);
|
||||
IXBibliographicData::Library_Card_entry(OUT, "Language of play", NULL, lang);
|
||||
DISCARD_TEXT(lang)
|
||||
IXBibliographicData::Library_Card_entry(OUT, "IFID number", NULL, BibliographicData::read_uuid());
|
||||
IXBibliographicData::Library_Card_entry(OUT, "Story description", story_description_VAR, I"None");
|
||||
HTML::end_html_table(OUT);
|
||||
HTML_CLOSE("p");
|
||||
}
|
||||
|
||||
@ This uses:
|
||||
|
||||
=
|
||||
void IXBibliographicData::Library_Card_entry(OUTPUT_STREAM, char *field,
|
||||
nonlocal_variable *nlv, text_stream *t) {
|
||||
text_stream *col = I"303030";
|
||||
if (nlv == story_title_VAR) col = I"803030";
|
||||
HTML::first_html_column_nowrap(OUT, 0, NULL);
|
||||
HTML::begin_colour(OUT, col);
|
||||
HTML_OPEN_WITH("span", "class=\"typewritten\"");
|
||||
WRITE("%s", field);
|
||||
HTML_CLOSE("span");
|
||||
HTML::end_colour(OUT);
|
||||
HTML::next_html_column(OUT, 0);
|
||||
HTML::begin_colour(OUT, col);
|
||||
HTML_OPEN_WITH("span", "class=\"typewritten\"");
|
||||
HTML_OPEN("b");
|
||||
IXBibliographicData::index_variable(OUT, nlv, t);
|
||||
HTML_CLOSE("b");
|
||||
HTML_CLOSE("span");
|
||||
HTML::end_colour(OUT);
|
||||
HTML::end_html_row(OUT);
|
||||
}
|
||||
|
||||
@ The Index also likes to print the name and authorship at the top of the
|
||||
Contents listing, so:
|
||||
|
||||
=
|
||||
void IXBibliographicData::contents_heading(OUTPUT_STREAM) {
|
||||
if ((story_title_VAR == NULL) || (story_author_VAR == NULL))
|
||||
WRITE("Contents");
|
||||
else {
|
||||
IXBibliographicData::index_variable(OUT, story_title_VAR,
|
||||
I"Untitled");
|
||||
WRITE(" by ");
|
||||
IXBibliographicData::index_variable(OUT, story_author_VAR,
|
||||
I"Anonymous");
|
||||
}
|
||||
}
|
||||
|
||||
@ And both of those features use:
|
||||
|
||||
=
|
||||
void IXBibliographicData::index_variable(OUTPUT_STREAM,
|
||||
nonlocal_variable *nlv, text_stream *t) {
|
||||
BEGIN_COMPILATION_MODE;
|
||||
COMPILATION_MODE_ENTER(COMPILE_TEXT_TO_XML_CMODE);
|
||||
if ((nlv) && (VariableSubjects::has_initial_value_set(nlv))) {
|
||||
wording W = NonlocalVariables::initial_value_as_plain_text(nlv);
|
||||
BibliographicData::compile_bibliographic_text(OUT,
|
||||
Lexer::word_text(Wordings::first_wn(W)));
|
||||
} else {
|
||||
WRITE("%S", t);
|
||||
}
|
||||
END_COMPILATION_MODE;
|
||||
}
|
|
@ -26,3 +26,4 @@ Chapter 3: Indexing for Plugins
|
|||
Figures
|
||||
Sound Effects
|
||||
External Files
|
||||
Bibliographic Data
|
||||
|
|
|
@ -255,12 +255,12 @@ void Figures::write_blurb_commands(OUTPUT_STREAM) {
|
|||
@ The following is used only with the "separate figures" release option.
|
||||
|
||||
=
|
||||
void Figures::write_copy_commands(void) {
|
||||
void Figures::write_copy_commands(release_instructions *rel) {
|
||||
if (PluginManager::active(figures_plugin) == FALSE) return;
|
||||
figures_data *figd;
|
||||
LOOP_OVER(figd, figures_data)
|
||||
if (figd->figure_number > 1)
|
||||
PL::Bibliographic::Release::create_aux_file(figd->filename_of_image_file,
|
||||
ReleaseInstructions::add_aux_file(rel, figd->filename_of_image_file,
|
||||
Task::released_figures_path(), L"--", SEPARATE_FIGURES_PAYLOAD);
|
||||
}
|
||||
|
||||
|
|
|
@ -214,11 +214,11 @@ void Sounds::write_blurb_commands(OUTPUT_STREAM) {
|
|||
@ The following is used only with the "separate figures" release option.
|
||||
|
||||
=
|
||||
void Sounds::write_copy_commands(void) {
|
||||
void Sounds::write_copy_commands(release_instructions *rel) {
|
||||
if (PluginManager::active(sounds_plugin) == FALSE) return;
|
||||
sounds_data *sd;
|
||||
LOOP_OVER(sd, sounds_data)
|
||||
PL::Bibliographic::Release::create_aux_file(
|
||||
ReleaseInstructions::add_aux_file(rel,
|
||||
sd->filename_of_sound_file,
|
||||
Task::released_sounds_path(),
|
||||
L"--",
|
||||
|
|
|
@ -3,7 +3,7 @@ What This Module Does.
|
|||
An overview of the multimedia module's role and abilities.
|
||||
|
||||
@h Prerequisites.
|
||||
The knowledge module is a part of the Inform compiler toolset. It is
|
||||
The multimedia module is a part of the Inform compiler toolset. It is
|
||||
presented as a literate program or "web". Before diving in:
|
||||
(a) It helps to have some experience of reading webs: see //inweb// for more.
|
||||
(b) The module is written in C, in fact ANSI C99, but this is disguised by the
|
||||
|
|
|
@ -30,7 +30,7 @@ void RTExtensions::ShowExtensionVersions_routine(void) {
|
|||
WRITE_TO(the_author_name, "%S", E->as_copy->edition->work->author_name);
|
||||
int self_penned = FALSE;
|
||||
#ifdef IF_MODULE
|
||||
if (PL::Bibliographic::story_author_is(the_author_name)) self_penned = TRUE;
|
||||
if (BibliographicData::story_author_is(the_author_name)) self_penned = TRUE;
|
||||
#endif
|
||||
if (((E == NULL) || (E->authorial_modesty == FALSE)) && /* if (1) extension doesn't ask to be modest */
|
||||
((general_authorial_modesty == FALSE) || /* and (2) author doesn't ask to be modest, or... */
|
||||
|
|
116
inform7/runtime-module/Chapter 5/Bibliographic Data.w
Normal file
116
inform7/runtime-module/Chapter 5/Bibliographic Data.w
Normal file
|
@ -0,0 +1,116 @@
|
|||
[RTBibliographicData::] Bibliographic Data.
|
||||
|
||||
@ Bibliographic data is significant at run-time because the kits contain
|
||||
code to print out the "banner" at the start of play, which is a sort of
|
||||
title page. So they need to know the title, and so on.
|
||||
|
||||
Note that some of the bibliographic variables are actually compiled to
|
||||
constants.
|
||||
|
||||
=
|
||||
int RTBibliographicData::compile_constants(void) {
|
||||
encode_constant_text_bibliographically = TRUE;
|
||||
BEGIN_COMPILATION_MODE;
|
||||
COMPILATION_MODE_ENTER(COMPILE_TEXT_TO_I6_CMODE);
|
||||
|
||||
if (story_title_VAR) @<Compile the I6 Story constant@>;
|
||||
if (story_headline_VAR) @<Compile the I6 Headline constant@>;
|
||||
if (story_author_VAR) @<Compile the I6 Story Author constant@>;
|
||||
if (story_release_number_VAR) @<Compile the I6 Release directive@>;
|
||||
@<Compile the I6 serial number, based on the date@>;
|
||||
|
||||
END_COMPILATION_MODE;
|
||||
encode_constant_text_bibliographically = FALSE;
|
||||
RTBibliographicData::IFID_text();
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
@ If the author doesn't name a work, then its title is properly "", not
|
||||
"Welcome": that's just something we use to provide a readable banner.
|
||||
|
||||
@<Compile the I6 Story constant@> =
|
||||
inter_name *iname = Hierarchy::find(STORY_HL);
|
||||
NonlocalVariables::initial_value_as_plain_text(story_title_VAR);
|
||||
inter_ti v1 = 0, v2 = 0;
|
||||
if (VariableSubjects::has_initial_value_set(story_title_VAR))
|
||||
RTVariables::seek_initial_value(iname, &v1, &v2, story_title_VAR);
|
||||
else
|
||||
TextLiterals::compile_literal_from_text(iname, &v1, &v2, L"\"Welcome\"");
|
||||
Emit::named_generic_constant(iname, v1, v2);
|
||||
Hierarchy::make_available(Emit::tree(), iname);
|
||||
|
||||
@ And similarly here:
|
||||
|
||||
@<Compile the I6 Headline constant@> =
|
||||
inter_name *iname = Hierarchy::find(HEADLINE_HL);
|
||||
inter_ti v1 = 0, v2 = 0;
|
||||
if (VariableSubjects::has_initial_value_set(story_headline_VAR)) {
|
||||
NonlocalVariables::initial_value_as_plain_text(story_headline_VAR);
|
||||
RTVariables::seek_initial_value(iname, &v1, &v2, story_headline_VAR);
|
||||
} else {
|
||||
TextLiterals::compile_literal_from_text(iname, &v1, &v2, L"\"An Interactive Fiction\"");
|
||||
}
|
||||
Emit::named_generic_constant(iname, v1, v2);
|
||||
Hierarchy::make_available(Emit::tree(), iname);
|
||||
|
||||
@ This time we compile nothing if no author is provided:
|
||||
|
||||
@<Compile the I6 Story Author constant@> =
|
||||
if (VariableSubjects::has_initial_value_set(story_author_VAR)) {
|
||||
inter_name *iname = Hierarchy::find(STORY_AUTHOR_HL);
|
||||
inter_ti v1 = 0, v2 = 0;
|
||||
NonlocalVariables::initial_value_as_plain_text(story_author_VAR);
|
||||
RTVariables::seek_initial_value(iname, &v1, &v2, story_author_VAR);
|
||||
Emit::named_generic_constant(iname, v1, v2);
|
||||
Hierarchy::make_available(Emit::tree(), iname);
|
||||
global_compilation_settings.story_author_given = TRUE;
|
||||
} else {
|
||||
inter_name *iname = Hierarchy::find(STORY_AUTHOR_HL);
|
||||
inter_ti v1 = LITERAL_IVAL, v2 = 0;
|
||||
Emit::named_generic_constant(iname, v1, v2);
|
||||
Hierarchy::make_available(Emit::tree(), iname);
|
||||
}
|
||||
|
||||
@ Similarly (but numerically):
|
||||
|
||||
@<Compile the I6 Release directive@> =
|
||||
if (VariableSubjects::has_initial_value_set(story_release_number_VAR)) {
|
||||
inter_name *iname = Hierarchy::find(RELEASE_HL);
|
||||
inter_ti v1 = 0, v2 = 0;
|
||||
RTVariables::seek_initial_value(iname, &v1, &v2, story_release_number_VAR);
|
||||
Emit::named_generic_constant(iname, v1, v2);
|
||||
Hierarchy::make_available(Emit::tree(), iname);
|
||||
}
|
||||
|
||||
@ This innocuous code -- if Inform runs on 25 June 2013, we compile the serial
|
||||
number "130625" -- is actually controversial: quite a few users feel they
|
||||
should be able to fake the date-stamp with dates of their own choosing.
|
||||
|
||||
@<Compile the I6 serial number, based on the date@> =
|
||||
inter_name *iname = Hierarchy::find(SERIAL_HL);
|
||||
TEMPORARY_TEXT(SN)
|
||||
int year_digits = (the_present->tm_year) % 100;
|
||||
WRITE_TO(SN, "%02d%02d%02d",
|
||||
year_digits, (the_present->tm_mon)+1, the_present->tm_mday);
|
||||
Emit::named_text_constant(iname, SN);
|
||||
DISCARD_TEXT(SN)
|
||||
Hierarchy::make_available(Emit::tree(), iname);
|
||||
|
||||
@ The IFID is written into the compiled story file, too, both in order
|
||||
that it can be printed by the VERSION command and to brand the file so
|
||||
that it can still be identified even if it loses touch with its iFiction
|
||||
record. We store the IFID in plain text, with a "magic string" identifier
|
||||
around it, in byte-accessible memory.
|
||||
|
||||
=
|
||||
void RTBibliographicData::IFID_text(void) {
|
||||
text_stream *uuid = BibliographicData::read_uuid();
|
||||
inter_name *UUID_array_iname = Hierarchy::find(UUID_ARRAY_HL);
|
||||
Emit::named_string_constant(UUID_array_iname, uuid);
|
||||
Hierarchy::make_available(Emit::tree(), UUID_array_iname);
|
||||
}
|
||||
|
||||
inter_name *RTBibliographicData::IFID_iname(void) {
|
||||
return Hierarchy::find(UUID_ARRAY_HL);
|
||||
}
|
||||
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue