mirror of
https://github.com/ganelson/inform.git
synced 2024-06-26 04:00:43 +03:00
Tidied up language services
This commit is contained in:
parent
2f1490fc58
commit
fff4339ad0
|
@ -1,6 +1,6 @@
|
|||
# Inform 7
|
||||
|
||||
v10.1.0-alpha.1+6Q37 'Krypton' (3 May 2020)
|
||||
v10.1.0-alpha.1+6Q38 'Krypton' (4 May 2020)
|
||||
|
||||
## About Inform 7
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: alpha.1
|
||||
Build Date: 3 May 2020
|
||||
Build Number: 6Q37
|
||||
Build Date: 4 May 2020
|
||||
Build Number: 6Q38
|
||||
|
|
|
@ -466,7 +466,7 @@ we would attempt to detect the language of syntax if we could.
|
|||
<span class="plain-syntax"> </span><a href="5-ps2.html#SP1" class="function-link"><span class="function-syntax">Projects::set_to_English</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">project</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> (*</span><span class="identifier-syntax">preform_callback</span><span class="plain-syntax">)(</span><a href="5-ps2.html#SP1" class="function-link"><span class="function-syntax">Projects::get_language_of_syntax</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">project</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">preform_callback</span><span class="plain-syntax">)(</span><a href="5-ls.html#SP7" class="function-link"><span class="function-syntax">Languages::internal_English</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> (*</span><span class="identifier-syntax">preform_callback</span><span class="plain-syntax">)(</span><a href="5-ls.html#SP9" class="function-link"><span class="function-syntax">Languages::internal_English</span></a><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-ic.html#SP9">§9</a>.</li></ul>
|
||||
|
@ -597,7 +597,7 @@ are given precedence over those in the external folder, and so on.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">shared_nest_list</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::internal</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">Supervisor::internal</span></span>:<br/><a href="1-ic.html#SP23">§23</a><br/>Language Services - <a href="5-ls.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="function-syntax">Supervisor::internal</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">Supervisor::internal</span></span>:<br/><a href="1-ic.html#SP23">§23</a><br/>Language Services - <a href="5-ls.html#SP9">§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">RUN_ONLY_FROM_PHASE</span><span class="plain-syntax">(</span><span class="constant-syntax">NESTED_INBUILD_PHASE</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">shared_internal_nest</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -160,7 +160,7 @@ which use this module:
|
|||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_writer</span><span class="plain-syntax">(</span><span class="character-syntax">'X'</span><span class="plain-syntax">, &</span><a href="2-wrk.html#SP7" class="function-link"><span class="function-syntax">Works::writer</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_writer</span><span class="plain-syntax">(</span><span class="character-syntax">'J'</span><span class="plain-syntax">, &</span><a href="5-ls.html#SP3" class="function-link"><span class="function-syntax">Languages::log</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Writers::register_writer</span><span class="plain-syntax">(</span><span class="character-syntax">'J'</span><span class="plain-syntax">, &</span><a href="5-ls.html#SP5" class="function-link"><span class="function-syntax">Languages::log</span></a><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-sm.html#SP3">§3</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3_4"></a><b>§3.4. </b></p>
|
||||
|
|
|
@ -135,7 +135,7 @@ additional data specific to your genre:
|
|||
</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">Copies::set_content</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">Copies::set_content</span></span>:<br/>Language Manager - <a href="4-lm.html#SP3">§3</a><br/>Pipeline Manager - <a href="4-pm.html#SP3">§3</a><br/>Project Bundle Manager - <a href="4-pbm.html#SP2">§2</a><br/>Project File Manager - <a href="4-pfm.html#SP2">§2</a><br/>Template Manager - <a href="4-tm.html#SP3">§3</a><br/>Extension Services - <a href="5-es.html#SP2">§2</a><br/>Kit Services - <a href="5-ks.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">general_pointer</span><span class="plain-syntax"> </span><span class="identifier-syntax">ref</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Copies::set_content</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">Copies::set_content</span></span>:<br/>Pipeline Manager - <a href="4-pm.html#SP3">§3</a><br/>Project Bundle Manager - <a href="4-pbm.html#SP2">§2</a><br/>Project File Manager - <a href="4-pfm.html#SP2">§2</a><br/>Template Manager - <a href="4-tm.html#SP3">§3</a><br/>Extension Services - <a href="5-es.html#SP2">§2</a><br/>Kit Services - <a href="5-ks.html#SP4">§4</a><br/>Language Services - <a href="5-ls.html#SP2">§2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">general_pointer</span><span class="plain-syntax"> </span><span class="identifier-syntax">ref</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">content</span><span class="plain-syntax"> = </span><span class="identifier-syntax">ref</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
|
|
@ -193,7 +193,7 @@ others:
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax"> *</span><span class="function-syntax">Nests::search_for_best</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Nests::search_for_best</span></span>:<br/>Inter Skill - <a href="3-is.html#SP3">§3</a>, <a href="3-is.html#SP4">§4</a><br/>Kit Services - <a href="5-ks.html#SP8">§8</a><br/>Language Services - <a href="5-ls.html#SP7">§7</a><br/>Inclusions - <a href="6-inc.html#SP6_1">§6.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax"> *</span><span class="function-syntax">Nests::search_for_best</span><button class="popup" onclick="togglePopup('usagePopup7')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup7">Usage of <span class="code-font"><span class="function-syntax">Nests::search_for_best</span></span>:<br/>Inter Skill - <a href="3-is.html#SP3">§3</a>, <a href="3-is.html#SP4">§4</a><br/>Kit Services - <a href="5-ks.html#SP8">§8</a><br/>Language Services - <a href="5-ls.html#SP9">§9</a><br/>Inclusions - <a href="6-inc.html#SP6_1">§6.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</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">search_list</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_search_result</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-nst.html#SP7" class="function-link"><span class="function-syntax">Nests::search_for</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">req</span><span class="plain-syntax">, </span><span class="identifier-syntax">search_list</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -93,7 +93,7 @@ we can give a semantic version number range:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">req</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="function-syntax">Requirements::any_version_of</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">Requirements::any_version_of</span></span>:<br/>Inter Skill - <a href="3-is.html#SP3">§3</a>, <a href="3-is.html#SP4">§4</a><br/>Kit Services - <a href="5-ks.html#SP5_4">§5.4</a>, <a href="5-ks.html#SP8">§8</a><br/>Language Services - <a href="5-ls.html#SP7">§7</a><br/>Inclusions - <a href="6-inc.html#SP6_1_2">§6.1.2</a><br/>Extension Documentation - <a href="7-ed2.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="function-syntax">Requirements::any_version_of</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">Requirements::any_version_of</span></span>:<br/>Inter Skill - <a href="3-is.html#SP3">§3</a>, <a href="3-is.html#SP4">§4</a><br/>Kit Services - <a href="5-ks.html#SP5_4">§5.4</a>, <a href="5-ks.html#SP8">§8</a><br/>Language Services - <a href="5-ls.html#SP9">§9</a><br/>Inclusions - <a href="6-inc.html#SP6_1_2">§6.1.2</a><br/>Extension Documentation - <a href="7-ed2.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</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-rqr.html#SP2" class="function-link"><span class="function-syntax">Requirements::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="identifier-syntax">VersionNumberRanges::any_range</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
|
|
|
@ -101,7 +101,7 @@ not subsequently altered.
|
|||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">WORK_HASH_CODING_BASE</span><span class="plain-syntax"> </span><span class="constant-syntax">499</span>
|
||||
</pre>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="function-syntax">Works::new</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">Works::new</span></span>:<br/><a href="2-wrk.html#SP10">§10</a><br/>Requirements - <a href="2-rqr.html#SP2">§2</a><br/>Inter Skill - <a href="3-is.html#SP3">§3</a>, <a href="3-is.html#SP4">§4</a><br/>Extension Manager - <a href="4-em.html#SP4">§4</a><br/>Language Manager - <a href="4-lm.html#SP3">§3</a><br/>Project Bundle Manager - <a href="4-pbm.html#SP2">§2</a><br/>Project File Manager - <a href="4-pfm.html#SP2">§2</a><br/>Template Manager - <a href="4-tm.html#SP3">§3</a><br/>Extension Services - <a href="5-es.html#SP2_3">§2.3</a><br/>Kit Services - <a href="5-ks.html#SP5_3">§5.3</a>, <a href="5-ks.html#SP5_4">§5.4</a>, <a href="5-ks.html#SP8">§8</a><br/>Language Services - <a href="5-ls.html#SP7">§7</a><br/>Headings - <a href="6-hdn.html#SP13_3">§13.3</a><br/>Inclusions - <a href="6-inc.html#SP5_1">§5.1</a><br/>Extension Dictionary - <a href="7-ed.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_genre</span><span class="plain-syntax"> *</span><span class="identifier-syntax">genre</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ti</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inbuild_work</span><span class="plain-syntax"> *</span><span class="function-syntax">Works::new</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">Works::new</span></span>:<br/><a href="2-wrk.html#SP10">§10</a><br/>Requirements - <a href="2-rqr.html#SP2">§2</a><br/>Inter Skill - <a href="3-is.html#SP3">§3</a>, <a href="3-is.html#SP4">§4</a><br/>Extension Manager - <a href="4-em.html#SP4">§4</a><br/>Language Manager - <a href="4-lm.html#SP3">§3</a><br/>Project Bundle Manager - <a href="4-pbm.html#SP2">§2</a><br/>Project File Manager - <a href="4-pfm.html#SP2">§2</a><br/>Template Manager - <a href="4-tm.html#SP3">§3</a><br/>Extension Services - <a href="5-es.html#SP2_3">§2.3</a><br/>Kit Services - <a href="5-ks.html#SP5_3">§5.3</a>, <a href="5-ks.html#SP5_4">§5.4</a>, <a href="5-ks.html#SP8">§8</a><br/>Language Services - <a href="5-ls.html#SP9">§9</a><br/>Headings - <a href="6-hdn.html#SP13_3">§13.3</a><br/>Inclusions - <a href="6-inc.html#SP5_1">§5.1</a><br/>Extension Dictionary - <a href="7-ed.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_genre</span><span class="plain-syntax"> *</span><span class="identifier-syntax">genre</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ti</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</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-wrk.html#SP3" class="function-link"><span class="function-syntax">Works::new_inner</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">genre</span><span class="plain-syntax">, </span><span class="identifier-syntax">ti</span><span class="plain-syntax">, </span><span class="identifier-syntax">an</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">inbuild_work</span><span class="plain-syntax"> *</span><span class="function-syntax">Works::new_raw</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">Works::new_raw</span></span>:<br/>Kit Manager - <a href="4-km.html#SP3">§3</a><br/>Pipeline Manager - <a href="4-pm.html#SP4">§4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_genre</span><span class="plain-syntax"> *</span><span class="identifier-syntax">genre</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">ti</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">an</span><span class="plain-syntax">) {</span>
|
||||
|
|
|
@ -116,7 +116,7 @@ compiled, is a file vertex.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">build_vertex</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure build_vertex is accessed in 1/ic, 3/ib, 3/bs2, 3/is, 3/is2, 3/is3, 3/is4, 4/em, 4/lm, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ls, 5/ps, 5/ps2, 5/ts, 6/hdn, 6/inc, 7/ed, 7/ed2 and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure build_vertex is accessed in 1/ic, 3/ib, 3/bs2, 3/is, 3/is2, 3/is3, 3/is4, 4/em, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ls, 5/ps, 5/ps2, 5/ts, 6/hdn, 6/inc, 7/ed, 7/ed2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. Creation. </b>First, the three colours of vertex.
|
||||
</p>
|
||||
|
||||
|
|
|
@ -102,7 +102,7 @@ which stores data about extensions used by the Inform compiler.
|
|||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">inform_language</span><span class="plain-syntax"> *</span><span class="function-syntax">LanguageManager::from_copy</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">LanguageManager::from_copy</span></span>:<br/>Language Services - <a href="5-ls.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inform_language</span><span class="plain-syntax"> *</span><span class="function-syntax">LanguageManager::from_copy</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">LanguageManager::from_copy</span></span>:<br/>Language Services - <a href="5-ls.html#SP9">§9</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">C</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">genre</span><span class="plain-syntax"> == </span><span class="identifier-syntax">language_genre</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">RETRIEVE_POINTER_inform_language</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">content</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
@ -118,12 +118,10 @@ which stores data about extensions used by the Inform compiler.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Dictionaries::find</span><span class="plain-syntax">(</span><span class="identifier-syntax">language_copy_cache</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Dictionaries::read_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">language_copy_cache</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax"> = </span><a href="5-ls.html#SP1" class="function-link"><span class="function-syntax">Languages::new_il</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">name</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">inbuild_work</span><span class="plain-syntax"> *</span><span class="identifier-syntax">work</span><span class="plain-syntax"> = </span><a href="2-wrk.html#SP2" class="function-link"><span class="function-syntax">Works::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">language_genre</span><span class="plain-syntax">, </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">name</span><span class="plain-syntax">), </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_edition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">edition</span><span class="plain-syntax"> = </span><a href="2-edt.html#SP1" class="function-link"><span class="function-syntax">Editions::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">-></span><span class="element-syntax">version</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_edition</span><span class="plain-syntax"> *</span><span class="identifier-syntax">edition</span><span class="plain-syntax"> = </span><a href="2-edt.html#SP1" class="function-link"><span class="function-syntax">Editions::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">work</span><span class="plain-syntax">, </span><span class="identifier-syntax">VersionNumbers::null</span><span class="plain-syntax">());</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><a href="2-cps.html#SP3" class="function-link"><span class="function-syntax">Copies::new_in_path</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">edition</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cps.html#SP4" class="function-link"><span class="function-syntax">Copies::set_content</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_inform_language</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">K</span><span class="plain-syntax">-></span><span class="identifier-syntax">as_copy</span><span class="plain-syntax"> = </span><span class="identifier-syntax">C</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ls.html#SP2" class="function-link"><span class="function-syntax">Languages::scan</span></a><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">Dictionaries::create</span><span class="plain-syntax">(</span><span class="identifier-syntax">language_copy_cache</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Dictionaries::write_value</span><span class="plain-syntax">(</span><span class="identifier-syntax">language_copy_cache</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -93,7 +93,7 @@ length to one character less than the following constants:
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">inform_extension</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inform_extension is accessed in 1/ic, 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 4/lm, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/ks, 5/ls, 5/ps, 5/ps2, 5/ts, 6/hdn, 6/inc, 7/ed, 7/ed2 and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure inform_extension is accessed in 1/ic, 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/ks, 5/ls, 5/ps, 5/ps2, 5/ts, 6/hdn, 6/inc, 7/ed, 7/ed2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>This is called as soon as a new copy <span class="extract"><span class="extract-syntax">C</span></span> of the extension genre is created.
|
||||
We scan the extension file for the title, author, version number and any
|
||||
compatibility notes given (such as "for Glulx only").
|
||||
|
|
|
@ -106,7 +106,7 @@ module of <span class="extract"><span class="extract-syntax">inform7</span></spa
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">inform_kit</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inform_kit is accessed in 1/ic, 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 4/lm, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ls, 5/ps, 5/ps2, 5/ts, 6/hdn, 6/inc, 7/ed, 7/ed2 and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure inform_kit is accessed in 1/ic, 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ls, 5/ps, 5/ps2, 5/ts, 6/hdn, 6/inc, 7/ed, 7/ed2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>Kits come with an "if this then that" service for including other kits,
|
||||
and we represent rules with the following:
|
||||
</p>
|
||||
|
|
|
@ -66,53 +66,48 @@ function togglePopup(material_id) {
|
|||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../compiler.html">Inbuild Modules</a></li><li><a href="index.html">supervisor</a></li><li><a href="index.html#5">Chapter 5: Genre Services</a></li><li><b>Language Services</b></li></ul></div>
|
||||
<p class="purpose">Behaviour specific to copies of the language genre.</p>
|
||||
|
||||
<ul class="toc"><li><a href="5-ls.html#SP3">§3. Logging</a></li><li><a href="5-ls.html#SP4">§4. Language code</a></li><li><a href="5-ls.html#SP5">§5. Kit</a></li><li><a href="5-ls.html#SP6">§6. Finding by name</a></li><li><a href="5-ls.html#SP7">§7. English</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="5-ls.html#SP1">§1. Scanning metadata</a></li><li><a href="5-ls.html#SP5">§5. Logging</a></li><li><a href="5-ls.html#SP6">§6. Language code</a></li><li><a href="5-ls.html#SP7">§7. Kit</a></li><li><a href="5-ls.html#SP8">§8. Finding by name</a></li><li><a href="5-ls.html#SP9">§9. English</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. </b>Inform can read and write text in multiple natural languages, though it
|
||||
needs help to do so. Each natural language known to Inform comes from a
|
||||
small resource folder called its "bundle", and also has an extension
|
||||
associated with it: this includes English. Bundles for common languages
|
||||
are included as part of the default distribution for Inform, but the
|
||||
extension is only included for English.
|
||||
</p>
|
||||
|
||||
<p class="commentary">Each natural language whose bundle can be located generates an instance
|
||||
of the following structure.
|
||||
<p class="commentary firstcommentary"><a id="SP1"></a><b>§1. Scanning metadata. </b>Metadata for natural languages is stored in the following structure.
|
||||
Inform can read and write text in multiple natural languages, though it
|
||||
needs help to do so: each natural language known to Inform comes from a
|
||||
small resource folder called its "bundle". (This includes English.)
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">inform_language</span><span class="plain-syntax"> {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">as_copy</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">semantic_version_number</span><span class="plain-syntax"> </span><span class="identifier-syntax">version</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">instance_name</span><span class="plain-syntax">; </span><span class="comment-syntax"> instance name, e.g., "German language"</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">instance</span><span class="plain-syntax"> *</span><span class="identifier-syntax">nl_instance</span><span class="plain-syntax">; </span><span class="comment-syntax"> instance, e.g., "German language"</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">language_field</span><span class="plain-syntax">[</span><span class="constant-syntax">MAX_LANGUAGE_FIELDS</span><span class="plain-syntax">]; </span><span class="comment-syntax"> contents of the </span><span class="extract"><span class="extract-syntax">about.txt</span></span><span class="comment-syntax"> fields</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">adaptive_person</span><span class="plain-syntax">; </span><span class="comment-syntax"> which person (one of constants below) text subs are written from</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">inform_language</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inform_language is accessed in 1/ic, 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ps, 5/ps2, 5/ts, 6/hdn, 6/inc, 7/ed, 7/ed2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>This is called as soon as a new copy <span class="extract"><span class="extract-syntax">C</span></span> of the language genre is created.
|
||||
</p>
|
||||
|
||||
<span class="reserved-syntax">inform_language</span><span class="plain-syntax"> *</span><span class="function-syntax">Languages::new_il</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">Languages::new_il</span></span>:<br/>Language Manager - <a href="4-lm.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Languages::scan</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">Languages::scan</span></span>:<br/>Language Manager - <a href="4-lm.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</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">inform_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">inform_language</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</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">L</span><span class="plain-syntax">-></span><span class="element-syntax">version</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VersionNumbers::null</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax"> = </span><span class="identifier-syntax">C</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no copy to scan"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cps.html#SP4" class="function-link"><span class="function-syntax">Copies::set_content</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">STORE_POINTER_inform_language</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">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_format</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">sentence_format</span><span class="plain-syntax">, </span><span class="string-syntax">"%S language"</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_format</span><span class="plain-syntax">, </span><span class="string-syntax">"%S language"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">title</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">instance_name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Feeds::feed_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">sentence_format</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">sentence_format</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">nl_instance</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">L</span><span class="plain-syntax">-></span><span class="element-syntax">adaptive_person</span><span class="plain-syntax"> = -1; </span><span class="comment-syntax"> i.e., none yet specified</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">n</span><span class="plain-syntax">=0; </span><span class="identifier-syntax">n</span><span class="plain-syntax"><</span><span class="constant-syntax">MAX_LANGUAGE_FIELDS</span><span class="plain-syntax">; </span><span class="identifier-syntax">n</span><span class="plain-syntax">++) </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">language_field</span><span class="plain-syntax">[</span><span class="identifier-syntax">n</span><span class="plain-syntax">] = </span><span class="identifier-syntax">EMPTY_WORDING</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-ls.html#SP1_2" class="named-paragraph-link"><span class="named-paragraph">Read the about.txt file for the bundle</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">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Found language bundle '%S' (%p)\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</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">return</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">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Languages::path_to_bundle</span><span class="plain-syntax">(</span><span class="reserved-syntax">inform_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</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">L</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">location_if_path</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-ls.html#SP2_2" class="named-paragraph-link"><span class="named-paragraph">Read the about.txt file for the bundle</span><span class="named-paragraph-number">2.2</span></a></span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Found language bundle '%S' (%p)\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">title</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ls.html#SP4" class="function-link"><span class="function-syntax">Languages::path_to_bundle</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inform_language is accessed in 1/ic, 2/edt, 2/rqr, 2/nst, 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 4/lm, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ps, 5/ps2, 5/ts, 6/hdn, 6/inc, 6/vmg, 7/ed, 7/ed2, 7/ec and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1"></a><b>§1.1. </b>Within the bundle folder is a file called <span class="extract"><span class="extract-syntax">about.txt</span></span>, which sets numbered
|
||||
<p class="commentary firstcommentary"><a id="SP2_1"></a><b>§2.1. </b>Within the bundle folder is a file called <span class="extract"><span class="extract-syntax">about.txt</span></span>, which sets numbered
|
||||
fields to excerpts of text. The following are the field numbers:
|
||||
</p>
|
||||
|
||||
|
@ -124,30 +119,30 @@ fields to excerpts of text. The following are the field numbers:
|
|||
<span class="definition-keyword">define</span> <span class="constant-syntax">KIT_LFIELD</span><span class="plain-syntax"> </span><span class="constant-syntax">6</span><span class="plain-syntax"> </span><span class="comment-syntax"> e.g. "GermanLanguageKit"</span>
|
||||
<span class="definition-keyword">define</span> <span class="constant-syntax">MAX_LANGUAGE_FIELDS</span><span class="plain-syntax"> </span><span class="constant-syntax">7</span><span class="plain-syntax"> </span><span class="comment-syntax"> one more than the highest number above</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP1_2"></a><b>§1.2. </b>If we can't find the file, it doesn't matter except that all of the excerpts
|
||||
<p class="commentary firstcommentary"><a id="SP2_2"></a><b>§2.2. </b>If we can't find the file, it doesn't matter except that all of the excerpts
|
||||
remain empty. But we may as well tell the debugging log.
|
||||
</p>
|
||||
|
||||
<pre class="definitions code-font"><span class="definition-keyword">define</span> <span class="constant-syntax">MAX_BUNDLE_ABOUT_LINE_LENGTH</span><span class="plain-syntax"> </span><span class="constant-syntax">256</span><span class="plain-syntax"> </span><span class="comment-syntax"> which is far more than necessary, really</span>
|
||||
</pre>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Read the about.txt file for the bundle</span><span class="named-paragraph-number">1.2</span></span><span class="comment-syntax"> =</span>
|
||||
<p class="commentary"><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Read the about.txt file for the bundle</span><span class="named-paragraph-number">2.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">about_file</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::in</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="string-syntax">"about.txt"</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">about_file</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span><a href="5-ls.html#SP4" class="function-link"><span class="function-syntax">Languages::path_to_bundle</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">), </span><span class="identifier-syntax">I</span><span class="string-syntax">"about.txt"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">TextFiles::read</span><span class="plain-syntax">(</span><span class="identifier-syntax">about_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">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><a href="5-ls.html#SP2" class="function-link"><span class="function-syntax">Languages::about_helper</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</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">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">, </span><a href="5-ls.html#SP3" class="function-link"><span class="function-syntax">Languages::read_metadata</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">) == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Can't find about file: %f\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">about_file</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ls.html#SP1">§1</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2"></a><b>§2. </b>The format of the file is very simple. Each line is introduced by a number
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="5-ls.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP3"></a><b>§3. </b>The format of the file is very simple. Each line is introduced by a number
|
||||
from 1 to <span class="extract"><span class="extract-syntax">MAX_LANGUAGE_FIELDS</span></span> minus one, and then contains text which
|
||||
extends for the rest of the line.
|
||||
</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">Languages::about_helper</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">Languages::about_helper</span></span>:<br/><a href="5-ls.html#SP1_2">§1.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">item_name</span><span class="plain-syntax">,</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Languages::read_metadata</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">Languages::read_metadata</span></span>:<br/><a href="5-ls.html#SP2_2">§2.2</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">item_name</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vnl</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">inform_language</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">vnl</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">Feeds::feed_stream</span><span class="plain-syntax">(</span><span class="identifier-syntax">item_name</span><span class="plain-syntax">);</span>
|
||||
|
@ -163,16 +158,23 @@ extends for the rest of the line.
|
|||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3"></a><b>§3. Logging. </b></p>
|
||||
<p class="commentary firstcommentary"><a id="SP4"></a><b>§4. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Languages::log</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">Languages::log</span></span>:<br/>Supervisor Module - <a href="1-sm.html#SP3_3">§3.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">opts</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vL</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Languages::path_to_bundle</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">Languages::path_to_bundle</span></span>:<br/><a href="5-ls.html#SP2">§2</a>, <a href="5-ls.html#SP2_2">§2.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</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">L</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">location_if_path</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5"></a><b>§5. Logging. </b></p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Languages::log</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Languages::log</span></span>:<br/>Supervisor Module - <a href="1-sm.html#SP3_3">§3.3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">OUTPUT_STREAM</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> *</span><span class="identifier-syntax">opts</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">vL</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">inform_language</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">vL</span><span 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">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"<null-language>"</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">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="identifier-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">title</span><span class="plain-syntax">); }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4"></a><b>§4. Language code. </b>This is used when we write the bibliographic data for the work of IF we're
|
||||
<p class="commentary firstcommentary"><a id="SP6"></a><b>§6. Language code. </b>This is used when we write the bibliographic data for the work of IF we're
|
||||
making; this enables online databases like IFDB, and smart interpreters, to
|
||||
detect the language of play for a story file without actually running it.
|
||||
</p>
|
||||
|
@ -187,11 +189,11 @@ detect the language of play for a story file without actually running it.
|
|||
<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">"en"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP5"></a><b>§5. Kit. </b>Each language needs its own kit of Inter code, named as follows:
|
||||
<p class="commentary firstcommentary"><a id="SP7"></a><b>§7. Kit. </b>Each language needs its own kit of Inter code, named as follows:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Languages::kit_name</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Languages::kit_name</span></span>:<br/>Project Services - <a href="5-ps2.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Languages::kit_name</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">Languages::kit_name</span></span>:<br/>Project Services - <a href="5-ps2.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_language</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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">T</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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">language_field</span><span class="plain-syntax">[</span><span class="constant-syntax">KIT_LFIELD</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">"%+W"</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">language_field</span><span class="plain-syntax">[</span><span class="constant-syntax">KIT_LFIELD</span><span class="plain-syntax">]);</span>
|
||||
|
@ -200,7 +202,7 @@ detect the language of play for a story file without actually running it.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP6"></a><b>§6. Finding by name. </b>Given the name of a natural language (e.g., "German") we find the
|
||||
<p class="commentary firstcommentary"><a id="SP8"></a><b>§8. Finding by name. </b>Given the name of a natural language (e.g., "German") we find the
|
||||
corresponding structure, if it exists. We perform this check case
|
||||
insensitively.
|
||||
</p>
|
||||
|
@ -214,11 +216,11 @@ insensitively.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP7"></a><b>§7. English. </b>This finds the built-in definition of the English language.
|
||||
<p class="commentary firstcommentary"><a id="SP9"></a><b>§9. English. </b>This finds the built-in definition of the English language.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">inform_language</span><span class="plain-syntax"> *</span><span class="function-syntax">Languages::internal_English</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">Languages::internal_English</span></span>:<br/>Inbuild Control - <a href="1-ic.html#SP9_2">§9.2</a><br/>Project Services - <a href="5-ps2.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inform_language</span><span class="plain-syntax"> *</span><span class="function-syntax">Languages::internal_English</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">Languages::internal_English</span></span>:<br/>Inbuild Control - <a href="1-ic.html#SP9_2">§9.2</a><br/>Project Services - <a href="5-ps2.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">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax"> =</span>
|
||||
<span class="plain-syntax"> </span><a href="2-rqr.html#SP2" class="function-link"><span class="function-syntax">Requirements::any_version_of</span></a><span class="plain-syntax">(</span><a href="2-wrk.html#SP2" class="function-link"><span class="function-syntax">Works::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">language_genre</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"English"</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="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">I</span><span class="plain-syntax"> = </span><a href="1-ic.html#SP15" class="function-link"><span class="function-syntax">Supervisor::internal</span></a><span class="plain-syntax">();</span>
|
||||
|
|
|
@ -82,7 +82,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inform_pipeline is accessed in 1/ic, 2/edt, 2/rqr, 2/nst, 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 4/lm, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ls, 5/ps2, 5/ts, 6/hdn, 6/inc, 6/vmg, 7/ed, 7/ed2, 7/ec and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure inform_pipeline is accessed in 1/ic, 2/edt, 2/rqr, 2/nst, 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ls, 5/ps2, 5/ts, 6/hdn, 6/inc, 6/vmg, 7/ed, 7/ed2, 7/ec and here.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ls.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-es.html">es</a></li><li class="progresssection"><a href="5-ks.html">ks</a></li><li class="progresssection"><a href="5-ls.html">ls</a></li><li class="progresscurrent">ps</li><li class="progresssection"><a href="5-ps2.html">ps2</a></li><li class="progresssection"><a href="5-ts.html">ts</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-ed.html">7</a></li><li class="progressnext"><a href="5-ps2.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -115,7 +115,7 @@ function togglePopup(material_id) {
|
|||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Projects::set_to_English</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">Projects::set_to_English</span></span>:<br/>Inbuild Control - <a href="1-ic.html#SP9_2">§9.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inform_project</span><span class="plain-syntax"> *</span><span class="identifier-syntax">proj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">proj</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no project"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><a href="5-ls.html#SP7" class="function-link"><span class="function-syntax">Languages::internal_English</span></a><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><a href="5-ls.html#SP9" class="function-link"><span class="function-syntax">Languages::internal_English</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">E</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">proj</span><span class="plain-syntax">-></span><span class="element-syntax">language_of_play</span><span class="plain-syntax"> = </span><span class="identifier-syntax">E</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">proj</span><span class="plain-syntax">-></span><span class="element-syntax">language_of_syntax</span><span class="plain-syntax"> = </span><span class="identifier-syntax">E</span><span class="plain-syntax">;</span>
|
||||
|
@ -219,7 +219,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><a href="5-ps2.html#SP1" class="function-link"><span class="function-syntax">Projects::add_kit_dependency</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">project</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"BasicInformKit"</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inform_language</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax"> = </span><span class="identifier-syntax">project</span><span class="plain-syntax">-></span><span class="element-syntax">language_of_play</span><span 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="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kit_name</span><span class="plain-syntax"> = </span><a href="5-ls.html#SP5" class="function-link"><span class="function-syntax">Languages::kit_name</span></a><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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">kit_name</span><span class="plain-syntax"> = </span><a href="5-ls.html#SP7" class="function-link"><span class="function-syntax">Languages::kit_name</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">L</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-ps2.html#SP1" class="function-link"><span class="function-syntax">Projects::add_kit_dependency</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">project</span><span class="plain-syntax">, </span><span class="identifier-syntax">kit_name</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="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">project</span><span class="plain-syntax">-></span><span class="element-syntax">assumed_to_be_parser_IF</span><span class="plain-syntax">)</span>
|
||||
|
@ -244,7 +244,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Using Inform kit '%S' (priority %d).\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">kd</span><span class="plain-syntax">-></span><span class="element-syntax">kit</span><span class="plain-syntax">-></span><span class="element-syntax">as_copy</span><span class="plain-syntax">-></span><span class="element-syntax">edition</span><span class="plain-syntax">-></span><span class="element-syntax">work</span><span class="plain-syntax">-></span><span class="element-syntax">title</span><span class="plain-syntax">, </span><span class="identifier-syntax">kd</span><span class="plain-syntax">-></span><span class="element-syntax">kit</span><span class="plain-syntax">-></span><span class="element-syntax">priority</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure kit_dependency is accessed in 3/is2 and here.</li><li>The structure inform_project is accessed in 1/ic, 2/edt, 2/rqr, 2/nst, 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 4/lm, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ls, 5/ps, 5/ts, 6/hdn, 6/inc, 6/vmg, 7/ed, 7/ed2, 7/ec and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure kit_dependency is accessed in 3/is2 and here.</li><li>The structure inform_project is accessed in 1/ic, 2/edt, 2/rqr, 2/nst, 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ls, 5/ps, 5/ts, 6/hdn, 6/inc, 6/vmg, 7/ed, 7/ed2, 7/ec and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP1_1"></a><b>§1.1. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Perform if-this-then-that</span><span class="named-paragraph-number">1.1</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
||||
|
|
|
@ -82,7 +82,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">T</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inform_template is accessed in 1/ic, 2/edt, 2/rqr, 2/nst, 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 4/lm, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ls, 5/ps, 5/ps2, 6/hdn, 6/inc, 6/vmg, 7/ed, 7/ed2, 7/ec and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure inform_template is accessed in 1/ic, 2/edt, 2/rqr, 2/nst, 3/bg, 3/ib, 3/is2, 3/is3, 4/em, 4/pm, 4/pbm, 4/pfm, 4/tm, 5/es, 5/ks, 5/ls, 5/ps, 5/ps2, 6/hdn, 6/inc, 6/vmg, 7/ed, 7/ed2, 7/ec and here.</li></ul>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="5-ps2.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresssection"><a href="5-es.html">es</a></li><li class="progresssection"><a href="5-ks.html">ks</a></li><li class="progresssection"><a href="5-ls.html">ls</a></li><li class="progresssection"><a href="5-ps.html">ps</a></li><li class="progresssection"><a href="5-ps2.html">ps2</a></li><li class="progresscurrent">ts</li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-ed.html">7</a></li><li class="progressnext"><a href="6-st.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
|
|
@ -51,12 +51,10 @@ inbuild_copy *LanguageManager::new_copy(text_stream *name, pathname *P) {
|
|||
if (Dictionaries::find(language_copy_cache, key))
|
||||
C = Dictionaries::read_value(language_copy_cache, key);
|
||||
if (C == NULL) {
|
||||
inform_language *K = Languages::new_il(name, P);
|
||||
inbuild_work *work = Works::new(language_genre, Str::duplicate(name), NULL);
|
||||
inbuild_edition *edition = Editions::new(work, K->version);
|
||||
inbuild_edition *edition = Editions::new(work, VersionNumbers::null());
|
||||
C = Copies::new_in_path(edition, P);
|
||||
Copies::set_content(C, STORE_POINTER_inform_language(K));
|
||||
K->as_copy = C;
|
||||
Languages::scan(C);
|
||||
Dictionaries::create(language_copy_cache, key);
|
||||
Dictionaries::write_value(language_copy_cache, key, C);
|
||||
}
|
||||
|
|
|
@ -2,20 +2,15 @@
|
|||
|
||||
Behaviour specific to copies of the language genre.
|
||||
|
||||
@ Inform can read and write text in multiple natural languages, though it
|
||||
needs help to do so. Each natural language known to Inform comes from a
|
||||
small resource folder called its "bundle", and also has an extension
|
||||
associated with it: this includes English. Bundles for common languages
|
||||
are included as part of the default distribution for Inform, but the
|
||||
extension is only included for English.
|
||||
|
||||
Each natural language whose bundle can be located generates an instance
|
||||
of the following structure.
|
||||
@h Scanning metadata.
|
||||
Metadata for natural languages is stored in the following structure.
|
||||
Inform can read and write text in multiple natural languages, though it
|
||||
needs help to do so: each natural language known to Inform comes from a
|
||||
small resource folder called its "bundle". (This includes English.)
|
||||
|
||||
=
|
||||
typedef struct inform_language {
|
||||
struct inbuild_copy *as_copy;
|
||||
struct semantic_version_number version;
|
||||
struct wording instance_name; /* instance name, e.g., "German language" */
|
||||
struct instance *nl_instance; /* instance, e.g., "German language" */
|
||||
struct wording language_field[MAX_LANGUAGE_FIELDS]; /* contents of the |about.txt| fields */
|
||||
|
@ -23,24 +18,25 @@ typedef struct inform_language {
|
|||
MEMORY_MANAGEMENT
|
||||
} inform_language;
|
||||
|
||||
inform_language *Languages::new_il(text_stream *name, pathname *P) {
|
||||
@ This is called as soon as a new copy |C| of the language genre is created.
|
||||
|
||||
=
|
||||
void Languages::scan(inbuild_copy *C) {
|
||||
inform_language *L = CREATE(inform_language);
|
||||
L->as_copy = NULL;
|
||||
L->version = VersionNumbers::null();
|
||||
L->as_copy = C;
|
||||
if (C == NULL) internal_error("no copy to scan");
|
||||
Copies::set_content(C, STORE_POINTER_inform_language(L));
|
||||
|
||||
TEMPORARY_TEXT(sentence_format);
|
||||
WRITE_TO(sentence_format, "%S language", name);
|
||||
WRITE_TO(sentence_format, "%S language", C->edition->work->title);
|
||||
L->instance_name = Feeds::feed_stream(sentence_format);
|
||||
DISCARD_TEXT(sentence_format);
|
||||
L->nl_instance = NULL;
|
||||
L->adaptive_person = -1; /* i.e., none yet specified */
|
||||
for (int n=0; n<MAX_LANGUAGE_FIELDS; n++) L->language_field[n] = EMPTY_WORDING;
|
||||
@<Read the about.txt file for the bundle@>;
|
||||
LOG("Found language bundle '%S' (%p)\n", name, P);
|
||||
return L;
|
||||
}
|
||||
|
||||
pathname *Languages::path_to_bundle(inform_language *L) {
|
||||
return L->as_copy->location_if_path;
|
||||
LOG("Found language bundle '%S' (%p)\n", C->edition->work->title,
|
||||
Languages::path_to_bundle(L));
|
||||
}
|
||||
|
||||
@ Within the bundle folder is a file called |about.txt|, which sets numbered
|
||||
|
@ -60,10 +56,10 @@ remain empty. But we may as well tell the debugging log.
|
|||
@d MAX_BUNDLE_ABOUT_LINE_LENGTH 256 /* which is far more than necessary, really */
|
||||
|
||||
@<Read the about.txt file for the bundle@> =
|
||||
filename *about_file = Filenames::in(P, I"about.txt");
|
||||
filename *about_file = Filenames::in(Languages::path_to_bundle(L), I"about.txt");
|
||||
|
||||
if (TextFiles::read(about_file, FALSE,
|
||||
NULL, FALSE, Languages::about_helper, NULL, L) == FALSE)
|
||||
NULL, FALSE, Languages::read_metadata, NULL, L) == FALSE)
|
||||
LOG("Can't find about file: %f\n", about_file);
|
||||
|
||||
@ The format of the file is very simple. Each line is introduced by a number
|
||||
|
@ -71,7 +67,7 @@ from 1 to |MAX_LANGUAGE_FIELDS| minus one, and then contains text which
|
|||
extends for the rest of the line.
|
||||
|
||||
=
|
||||
void Languages::about_helper(text_stream *item_name,
|
||||
void Languages::read_metadata(text_stream *item_name,
|
||||
text_file_position *tfp, void *vnl) {
|
||||
inform_language *L = (inform_language *) vnl;
|
||||
wording W = Feeds::feed_stream(item_name);
|
||||
|
@ -87,6 +83,11 @@ void Languages::about_helper(text_stream *item_name,
|
|||
}
|
||||
}
|
||||
|
||||
@ =
|
||||
pathname *Languages::path_to_bundle(inform_language *L) {
|
||||
return L->as_copy->location_if_path;
|
||||
}
|
||||
|
||||
@h Logging.
|
||||
|
||||
=
|
||||
|
|
Loading…
Reference in a new issue