mirror of
https://github.com/ganelson/inform.git
synced 2024-06-17 07:40:47 +03:00
Directory extensions able to use their own figures, sounds and internal files
This commit is contained in:
parent
ccff6ddc47
commit
7af87e5206
|
@ -1,6 +1,6 @@
|
|||
# Inform 7
|
||||
|
||||
[Version](notes/versioning.md): 10.2.0-beta+6W18 'Krypton' (30 January 2023)
|
||||
[Version](notes/versioning.md): 10.2.0-beta+6W19 'Krypton' (1 February 2023)
|
||||
|
||||
## About Inform
|
||||
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
Prerelease: beta
|
||||
Build Date: 30 January 2023
|
||||
Build Number: 6W18
|
||||
Build Date: 1 February 2023
|
||||
Build Number: 6W19
|
||||
|
|
|
@ -386,7 +386,7 @@ here, which only happens when special runs are made for compiler testing.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">tests_run</span><span class="plain-syntax"> = </span><a href="1-itc.html#SP7" class="function-link"><span class="function-syntax">InternalTests::run</span></a><span class="plain-syntax">(2);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">tests_run</span><span class="plain-syntax"> > </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">exit</span><span class="plain-syntax">(0);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP19" class="function-link"><span class="function-syntax">Task::specify_index_requirements</span></a><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">BENCH</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP20" class="function-link"><span class="function-syntax">Task::specify_index_requirements</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">Log::aspect_switched_on</span><span class="plain-syntax">(</span><span class="constant-syntax">INTER_DA</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">InterSkill::set_debugging</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Log::aspect_switched_on</span><span class="plain-syntax">(</span><span class="constant-syntax">INFORM_INTER_DA</span><span class="plain-syntax">))</span>
|
||||
|
|
|
@ -469,10 +469,6 @@ file of the map, if so requested; a bit anomalously, it's the only file in
|
|||
Materials but outside Release which we write to.
|
||||
</p>
|
||||
|
||||
<p class="commentary">This is also where the originals (not the released copies) of the Figures
|
||||
and Sounds, if any, live: in their own subfolders.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="function-syntax">Task::large_cover_art_file</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">JPEG</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">inform7_task</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">"there is no current task"</span><span class="plain-syntax">);</span>
|
||||
|
@ -483,21 +479,28 @@ and Sounds, if any, live: in their own subfolders.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">inform7_task</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">"there is no current task"</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">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">inform7_task</span><span class="plain-syntax">-></span><span class="element-syntax">materials</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Inform Map.eps"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b>This is also where the originals (not the released copies) of the Figures
|
||||
and Sounds, if any, live: in their own subfolders, or "departments".
|
||||
</p>
|
||||
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Task::figures_path</span><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="function-syntax">Task::resources_path</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">inform7_task</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">"there is no current task"</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">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">inform7_task</span><span class="plain-syntax">-></span><span class="element-syntax">materials</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Figures"</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">inform7_task</span><span class="plain-syntax">-></span><span class="element-syntax">materials</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">Task::sounds_path</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">inform7_task</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">"there is no current task"</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">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">inform7_task</span><span class="plain-syntax">-></span><span class="element-syntax">materials</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Sounds"</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Task::figures_department</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">I</span><span class="string-syntax">"Figures"</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">Task::data_path</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">inform7_task</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">"there is no current task"</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">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">inform7_task</span><span class="plain-syntax">-></span><span class="element-syntax">materials</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Data"</span><span class="plain-syntax">);</span>
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Task::sounds_department</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">I</span><span class="string-syntax">"Sounds"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
<span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Task::data_department</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">I</span><span class="string-syntax">"Data"</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP17" class="paragraph-anchor"></a><b>§17. </b>On a release run, Inblorb will populate the Release subfolder of Materials;
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b>On a release run, Inblorb will populate the Release subfolder of Materials;
|
||||
figures and sounds will be copied into the relevant subfolders. The principle
|
||||
is that everything in Release can always be thrown away without loss, because
|
||||
it can all be generated again.
|
||||
|
@ -509,16 +512,16 @@ it can all be generated again.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">inform7_task</span><span class="plain-syntax">-></span><span class="element-syntax">materials</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Release"</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">Task::released_figures_path</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">Pathnames::down</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP17" class="function-link"><span class="function-syntax">Task::release_path</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"Figures"</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">Pathnames::down</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP18" class="function-link"><span class="function-syntax">Task::release_path</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"Figures"</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">Task::released_sounds_path</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">Pathnames::down</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP17" class="function-link"><span class="function-syntax">Task::release_path</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"Sounds"</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">Pathnames::down</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP18" class="function-link"><span class="function-syntax">Task::release_path</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"Sounds"</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">Task::released_interpreter_path</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">Pathnames::down</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP17" class="function-link"><span class="function-syntax">Task::release_path</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"interpreter"</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">Pathnames::down</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP18" class="function-link"><span class="function-syntax">Task::release_path</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">I</span><span class="string-syntax">"interpreter"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP18" class="paragraph-anchor"></a><b>§18. </b>EPS-format files are vector art, rather than raster art, and are produced
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. </b>EPS-format files are vector art, rather than raster art, and are produced
|
||||
with the intention that authors can tidy them up afterwards using programs
|
||||
like Adobe Illustrator. By default they aren't produced, so that the following
|
||||
flag stays <span class="extract"><span class="extract-syntax">FALSE</span></span>:
|
||||
|
@ -544,7 +547,7 @@ flag stays <span class="extract"><span class="extract-syntax">FALSE</span></span
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">do_not_generate_problems</span><span class="plain-syntax">?</span><span class="identifier-syntax">FALSE:TRUE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP19" class="paragraph-anchor"></a><b>§19. </b>And so, finally, the following triggers the indexing process.
|
||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. </b>And so, finally, the following triggers the indexing process.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
|
|
|
@ -89,6 +89,16 @@ group.
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"Specifically, %2."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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">EXT_BAD_DIRNAME_CE:</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::quote_work</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">copy</span><span class="plain-syntax">-></span><span class="identifier-syntax">found_by</span><span class="plain-syntax">-></span><span class="identifier-syntax">work</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_stream</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">details</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><a href="1-wtc.html#SP6" class="function-link"><span class="function-syntax">Task::syntax_tree</span></a><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">Untestable</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The extension %1, which your source text makes use of, is stored "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"in a directory (which is fine), but does not follow the rules for "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"what that directory is called (which is not fine). Specifically, %2."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">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">METADATA_MALFORMED_CE:</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">copy</span><span class="plain-syntax">-></span><span class="identifier-syntax">found_by</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::quote_work</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="identifier-syntax">copy</span><span class="plain-syntax">-></span><span class="identifier-syntax">found_by</span><span class="plain-syntax">-></span><span class="identifier-syntax">work</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -324,15 +324,15 @@ to match this width, preserving the aspect ratio.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="string-syntax">"<br>"</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">sample</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">sample</span><span class="plain-syntax">, </span><span class="string-syntax">"%d.%01dkHz"</span><span class="plain-syntax">, </span><span class="identifier-syntax">pSampleRate</span><span class="plain-syntax">/1000, (</span><span class="identifier-syntax">pSampleRate</span><span class="plain-syntax">%1000)/100);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Localisation::roman_t</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.Sampled"</span><span class="plain-syntax">, </span><span class="identifier-syntax">sample</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Localisation::roman_t</span><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.Sampled"</span><span class="plain-syntax">, </span><span class="identifier-syntax">sample</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">sample</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">description</span><span class="plain-syntax">, </span><span class="string-syntax">" "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">pChannels</span><span class="plain-syntax"> == </span><span class="constant-syntax">1</span><span class="plain-syntax">) </span><span class="identifier-syntax">Localisation::roman</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.Mono"</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">Localisation::roman</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.Stereo"</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">Localisation::roman</span><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.Stereo"</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">description</span><span class="plain-syntax">, </span><span class="string-syntax">" ("</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">bitrate</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">bitrate</span><span class="plain-syntax">, </span><span class="string-syntax">"%d.%01d"</span><span class="plain-syntax">, </span><span class="identifier-syntax">pBitsPerSecond</span><span class="plain-syntax">/1000, (</span><span class="identifier-syntax">pSampleRate</span><span class="plain-syntax">%1000)/100);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Localisation::roman_t</span><span class="plain-syntax">(</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.BitRate"</span><span class="plain-syntax">, </span><span class="identifier-syntax">bitrate</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Localisation::roman_t</span><span class="plain-syntax">(</span><span class="identifier-syntax">description</span><span class="plain-syntax">, </span><span class="identifier-syntax">LD</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Index.Elements.Fi.BitRate"</span><span class="plain-syntax">, </span><span class="identifier-syntax">bitrate</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">bitrate</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">description</span><span class="plain-syntax">, </span><span class="string-syntax">")"</span><span class="plain-syntax">);</span>
|
||||
</pre>
|
||||
|
|
|
@ -175,14 +175,14 @@ isn't set up to allow more, so this error is not easy to generate.
|
|||
<span 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">proj</span><span class="plain-syntax">-></span><span class="element-syntax">stand_alone</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">index_explicitly_set</span><span class="plain-syntax"> == </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="../core-module/1-wtc.html#SP18" class="function-link"><span class="function-syntax">Task::disable_or_enable_index</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TRUE</span><span class="plain-syntax">); </span><span class="comment-syntax"> disable it</span>
|
||||
<span class="plain-syntax"> </span><a href="../core-module/1-wtc.html#SP19" class="function-link"><span class="function-syntax">Task::disable_or_enable_index</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TRUE</span><span class="plain-syntax">); </span><span class="comment-syntax"> disable it</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">problems_explicitly_set</span><span class="plain-syntax"> == </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="../core-module/1-wtc.html#SP18" class="function-link"><span class="function-syntax">Task::disable_or_enable_problems</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TRUE</span><span class="plain-syntax">); </span><span class="comment-syntax"> disable it</span>
|
||||
<span class="plain-syntax"> </span><a href="../core-module/1-wtc.html#SP19" class="function-link"><span class="function-syntax">Task::disable_or_enable_problems</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TRUE</span><span class="plain-syntax">); </span><span class="comment-syntax"> disable it</span>
|
||||
<span class="plain-syntax"> </span><a href="../core-module/1-pp2.html#SP1" class="function-link"><span class="function-syntax">ProgressBar::enable_or_disable</span></a><span class="plain-syntax">(</span><span class="constant-syntax">FALSE</span><span class="plain-syntax">); </span><span class="comment-syntax"> disable it</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../../../inweb/foundation-module/2-dl.html#SP5" class="function-link"><span class="function-syntax">Log::get_debug_log_filename</span></a><span class="plain-syntax">() == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/2-dl.html#SP9" class="function-link"><span class="function-syntax">Log::set_aspect_from_command_line</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"nothing"</span><span class="plain-syntax">, </span><span class="constant-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">silence_is_golden</span><span class="plain-syntax">) </span><a href="../core-module/1-wtc.html#SP18" class="function-link"><span class="function-syntax">Task::disable_or_enable_problems</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TRUE</span><span class="plain-syntax">); </span><span class="comment-syntax"> disable it</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">silence_is_golden</span><span class="plain-syntax">) </span><a href="../core-module/1-wtc.html#SP19" class="function-link"><span class="function-syntax">Task::disable_or_enable_problems</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TRUE</span><span class="plain-syntax">); </span><span class="comment-syntax"> disable it</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>This code is used in <a href="1-mn.html#SP2">§2</a>.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2_3" class="paragraph-anchor"></a><b>§2.3. </b><a href="../supervisor-module/index.html" class="internal">supervisor</a> supplies us with a folder in which to write the debugging log
|
||||
|
@ -212,7 +212,7 @@ but we won't assume that. Remember, <a href="../supervisor-module/index.html" cl
|
|||
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP10" class="function-link"><span class="function-syntax">CommandLine::play_back_log</span></a><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">proj</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../core-module/1-wtc.html#SP18" class="function-link"><span class="function-syntax">Task::problems_enabled</span></a><span class="plain-syntax">()) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../core-module/1-wtc.html#SP19" class="function-link"><span class="function-syntax">Task::problems_enabled</span></a><span class="plain-syntax">()) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">build_folder</span><span class="plain-syntax"> = </span><a href="../supervisor-module/5-ps2.html#SP6" class="function-link"><span class="function-syntax">Projects::build_path</span></a><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">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">PF</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/3-fln.html#SP2" class="function-link"><span class="function-syntax">Filenames::in</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">build_folder</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Problems.html"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../problems-module/2-pl3.html#SP19" class="function-link"><span class="function-syntax">StandardProblems::start_problems_report</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">PF</span><span class="plain-syntax">);</span>
|
||||
|
@ -412,6 +412,7 @@ compiler via Delia scripts in <span class="extract"><span class="extract-syntax"
|
|||
<span class="definition-keyword">enum</span> <span class="constant-syntax">SIGILS_CLSW</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">TEST_OUTPUT_CLSW</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">SILENCE_CLSW</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">CHECK_RESOURCES_CLSW</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4_2" class="paragraph-anchor"></a><b>§4.2. </b><span class="named-paragraph-container code-font"><span class="named-paragraph-defn">Register command-line arguments</span><span class="named-paragraph-number">4.2</span></span><span class="comment-syntax"> =</span>
|
||||
</p>
|
||||
|
@ -430,6 +431,8 @@ compiler via Delia scripts in <span class="extract"><span class="extract-syntax"
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"display progress percentages"</span><span class="plain-syntax">, </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP6" class="function-link"><span class="function-syntax">CommandLine::declare_boolean_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">SIGILS_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"sigils"</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">L</span><span class="string-syntax">"print Problem message sigils"</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP6" class="function-link"><span class="function-syntax">CommandLine::declare_boolean_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">CHECK_RESOURCES_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"resource-checking"</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">L</span><span class="string-syntax">"check that figures, sounds and similar resources exist at compile-time"</span><span class="plain-syntax">, </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP6" class="function-link"><span class="function-syntax">CommandLine::declare_boolean_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">DIAGNOSTICS_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"diagnostics"</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">L</span><span class="string-syntax">"if no problems occur, write diagnostics files to directory X"</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="../../../inweb/foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">REQUIRE_PROBLEM_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"require-problem"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
|
||||
|
@ -450,15 +453,16 @@ rather than <span class="extract"><span class="extract-syntax">core</span></span
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">id</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">CRASHALL_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">debugger_mode</span><span class="plain-syntax"> = </span><span class="identifier-syntax">val</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> </span><a href="../problems-module/2-pl0.html#SP5" class="function-link"><span class="function-syntax">ProblemSigils::crash_on_problems</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</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">INDEX_CLSW:</span><span class="plain-syntax"> </span><a href="../core-module/1-wtc.html#SP18" class="function-link"><span class="function-syntax">Task::disable_or_enable_index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">?</span><span class="identifier-syntax">FALSE:TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">INDEX_CLSW:</span><span class="plain-syntax"> </span><a href="../core-module/1-wtc.html#SP19" class="function-link"><span class="function-syntax">Task::disable_or_enable_index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">?</span><span class="identifier-syntax">FALSE:TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">index_explicitly_set</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</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">PROBLEMS_CLSW:</span><span class="plain-syntax"> </span><a href="../core-module/1-wtc.html#SP18" class="function-link"><span class="function-syntax">Task::disable_or_enable_problems</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">?</span><span class="identifier-syntax">FALSE:TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PROBLEMS_CLSW:</span><span class="plain-syntax"> </span><a href="../core-module/1-wtc.html#SP19" class="function-link"><span class="function-syntax">Task::disable_or_enable_problems</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">?</span><span class="identifier-syntax">FALSE:TRUE</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">problems_explicitly_set</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</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">CENSUS_UPDATE_CLSW:</span><span class="plain-syntax"> </span><a href="../core-module/1-wtc.html#SP18" class="function-link"><span class="function-syntax">Task::disable_or_enable_census</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">?</span><span class="identifier-syntax">FALSE:TRUE</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">CENSUS_UPDATE_CLSW:</span><span class="plain-syntax"> </span><a href="../core-module/1-wtc.html#SP19" class="function-link"><span class="function-syntax">Task::disable_or_enable_census</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">?</span><span class="identifier-syntax">FALSE:TRUE</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">PROGRESS_CLSW:</span><span class="plain-syntax"> </span><a href="../core-module/1-pp2.html#SP1" class="function-link"><span class="function-syntax">ProgressBar::enable_or_disable</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</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">SIGILS_CLSW:</span><span class="plain-syntax"> </span><a href="../problems-module/2-pl0.html#SP4" class="function-link"><span class="function-syntax">ProblemSigils::echo_sigils</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</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">REQUIRE_PROBLEM_CLSW:</span><span class="plain-syntax"> </span><a href="../problems-module/2-pl0.html#SP3" class="function-link"><span class="function-syntax">ProblemSigils::require</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</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">DIAGNOSTICS_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">diagnostics_path</span><span class="plain-syntax"> = </span><a href="../../../inweb/foundation-module/3-pth.html#SP5" class="function-link"><span class="function-syntax">Pathnames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</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">CHECK_RESOURCES_CLSW:</span><span class="plain-syntax"> </span><a href="../multimedia-module/2-rf.html#SP1" class="function-link"><span class="function-syntax">ResourceFinder::set_mode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</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">TEST_OUTPUT_CLSW:</span><span class="plain-syntax"> </span><a href="../core-module/1-itc.html#SP6" class="function-link"><span class="function-syntax">InternalTests::set_file</span></a><span class="plain-syntax">(</span><a href="../../../inweb/foundation-module/3-fln.html#SP3" class="function-link"><span class="function-syntax">Filenames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</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">SILENCE_CLSW:</span><span class="plain-syntax"> </span><span class="identifier-syntax">silence_is_golden</span><span class="plain-syntax"> = </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">; </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -70,37 +70,37 @@ which take more than 1/1000th of the total running time.
|
|||
|
||||
<pre class="undisplayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">100.0% in inform7 run</span>
|
||||
<span class="plain-syntax"> 71.2% in compilation to Inter</span>
|
||||
<span class="plain-syntax"> 50.4% in </span><a href="../core-module/1-htc.html#SP9" class="internal">Sequence::undertake_queued_tasks</a>
|
||||
<span class="plain-syntax"> 4.8% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pre_pass</a>
|
||||
<span class="plain-syntax"> 3.4% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pass_1</a>
|
||||
<span class="plain-syntax"> 2.0% in </span><a href="../runtime-module/6-pi.html#SP1" class="internal">RTPhrasebook::compile_entries</a>
|
||||
<span class="plain-syntax"> 1.8% in </span><a href="../assertions-module/5-id.html#SP4" class="internal">ImperativeDefinitions::assess_all</a>
|
||||
<span class="plain-syntax"> 1.4% in </span><a href="../runtime-module/5-kc.html#SP10" class="internal">RTKindConstructors::compile</a>
|
||||
<span class="plain-syntax"> 1.0% in </span><a href="../core-module/1-htc.html#SP12" class="internal">Sequence::lint_inter</a>
|
||||
<span class="plain-syntax"> 0.6% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pass_2</a>
|
||||
<span class="plain-syntax"> 0.6% in </span><a href="../knowledge-module/5-tmw.html#SP5" class="internal">World::stage_V</a>
|
||||
<span class="plain-syntax"> 0.4% in </span><a href="../assertions-module/5-id.html#SP5" class="internal">ImperativeDefinitions::compile_first_block</a>
|
||||
<span class="plain-syntax"> 0.4% in </span><a href="../core-module/1-htc.html#SP9" class="internal">Sequence::undertake_queued_tasks</a>
|
||||
<span class="plain-syntax"> 0.4% in </span><a href="../core-module/1-htc.html#SP9" class="internal">Sequence::undertake_queued_tasks</a>
|
||||
<span class="plain-syntax"> 0.2% in </span><a href="../runtime-module/3-cm.html#SP1" class="internal">CompletionModule::compile</a>
|
||||
<span class="plain-syntax"> 0.2% in </span><a href="../knowledge-module/4-is.html#SP27" class="internal">InferenceSubjects::emit_all</a>
|
||||
<span class="plain-syntax"> 0.2% in </span><a href="../runtime-module/5-kc.html#SP10_7" class="internal">RTKindConstructors::compile_permissions</a>
|
||||
<span class="plain-syntax"> 0.2% in </span><a href="../core-module/1-wtc.html#SP9" class="internal">Task::make_built_in_kind_constructors</a>
|
||||
<span class="plain-syntax"> 3.2% not specifically accounted for</span>
|
||||
<span class="plain-syntax"> 70.9% in compilation to Inter</span>
|
||||
<span class="plain-syntax"> 50.3% in </span><a href="../core-module/1-htc.html#SP9" class="internal">Sequence::undertake_queued_tasks</a>
|
||||
<span class="plain-syntax"> 4.9% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pre_pass</a>
|
||||
<span class="plain-syntax"> 3.3% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pass_1</a>
|
||||
<span class="plain-syntax"> 1.7% in </span><a href="../assertions-module/5-id.html#SP4" class="internal">ImperativeDefinitions::assess_all</a>
|
||||
<span class="plain-syntax"> 1.3% in </span><a href="../runtime-module/5-kc.html#SP10" class="internal">RTKindConstructors::compile</a>
|
||||
<span class="plain-syntax"> 1.3% in </span><a href="../runtime-module/6-pi.html#SP1" class="internal">RTPhrasebook::compile_entries</a>
|
||||
<span class="plain-syntax"> 1.1% in </span><a href="../core-module/1-htc.html#SP12" class="internal">Sequence::lint_inter</a>
|
||||
<span class="plain-syntax"> 0.5% in </span><a href="../assertions-module/2-ptmn.html#SP1" class="internal">MajorNodes::pass_2</a>
|
||||
<span class="plain-syntax"> 0.5% in </span><a href="../core-module/1-htc.html#SP9" class="internal">Sequence::undertake_queued_tasks</a>
|
||||
<span class="plain-syntax"> 0.5% in </span><a href="../core-module/1-htc.html#SP9" class="internal">Sequence::undertake_queued_tasks</a>
|
||||
<span class="plain-syntax"> 0.5% in </span><a href="../knowledge-module/5-tmw.html#SP5" class="internal">World::stage_V</a>
|
||||
<span class="plain-syntax"> 0.3% in </span><a href="../assertions-module/5-id.html#SP5" class="internal">ImperativeDefinitions::compile_first_block</a>
|
||||
<span class="plain-syntax"> 0.1% in </span><a href="../runtime-module/3-cm.html#SP1" class="internal">CompletionModule::compile</a>
|
||||
<span class="plain-syntax"> 0.1% in </span><a href="../knowledge-module/4-is.html#SP27" class="internal">InferenceSubjects::emit_all</a>
|
||||
<span class="plain-syntax"> 0.1% in </span><a href="../runtime-module/5-kc.html#SP10_7" class="internal">RTKindConstructors::compile_permissions</a>
|
||||
<span class="plain-syntax"> 0.1% in </span><a href="../core-module/1-wtc.html#SP9" class="internal">Task::make_built_in_kind_constructors</a>
|
||||
<span class="plain-syntax"> 2.8% not specifically accounted for</span>
|
||||
<span class="plain-syntax"> 25.8% in running Inter pipeline</span>
|
||||
<span class="plain-syntax"> 10.2% in step 14/15: generate inform6 -> auto.inf</span>
|
||||
<span class="plain-syntax"> 5.6% in step 5/15: load-binary-kits</span>
|
||||
<span class="plain-syntax"> 5.2% in step 6/15: make-synoptic-module</span>
|
||||
<span class="plain-syntax"> 1.8% in step 9/15: make-identifiers-unique</span>
|
||||
<span class="plain-syntax"> 0.4% in step 12/15: eliminate-redundant-operations</span>
|
||||
<span class="plain-syntax"> 0.4% in step 4/15: compile-splats</span>
|
||||
<span class="plain-syntax"> 0.4% in step 7/15: shorten-wiring</span>
|
||||
<span class="plain-syntax"> 0.4% in step 8/15: detect-indirect-calls</span>
|
||||
<span class="plain-syntax"> 0.2% in step 11/15: eliminate-redundant-labels</span>
|
||||
<span class="plain-syntax"> 1.2% not specifically accounted for</span>
|
||||
<span class="plain-syntax"> 2.6% in supervisor</span>
|
||||
<span class="plain-syntax"> 0.4% not specifically accounted for</span>
|
||||
<span class="plain-syntax"> 10.1% in step 14/15: generate inform6 -> auto.inf</span>
|
||||
<span class="plain-syntax"> 5.7% in step 5/15: load-binary-kits</span>
|
||||
<span class="plain-syntax"> 5.3% in step 6/15: make-synoptic-module</span>
|
||||
<span class="plain-syntax"> 1.7% in step 9/15: make-identifiers-unique</span>
|
||||
<span class="plain-syntax"> 0.3% in step 12/15: eliminate-redundant-operations</span>
|
||||
<span class="plain-syntax"> 0.3% in step 4/15: compile-splats</span>
|
||||
<span class="plain-syntax"> 0.3% in step 7/15: shorten-wiring</span>
|
||||
<span class="plain-syntax"> 0.3% in step 8/15: detect-indirect-calls</span>
|
||||
<span class="plain-syntax"> 0.1% in step 11/15: eliminate-redundant-labels</span>
|
||||
<span class="plain-syntax"> 0.9% not specifically accounted for</span>
|
||||
<span class="plain-syntax"> 2.5% in supervisor</span>
|
||||
<span class="plain-syntax"> 0.6% not specifically accounted for</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. Memory consumption. </b>The following gives some idea of which classes of object have the most
|
||||
instances, and also of how Inform's memory tends to be used in practice.
|
||||
|
@ -109,53 +109,53 @@ represent less than 1/1000th of the total.
|
|||
</p>
|
||||
|
||||
<pre class="undisplayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax">Total memory consumption was 123441K = 121 MB</span>
|
||||
<span class="plain-syntax">Total memory consumption was 121434K = 119 MB</span>
|
||||
|
||||
<span class="plain-syntax"> ---- was used for 2056836 objects, in 366558 frames in 0 x 800K = 0K = 0 MB:</span>
|
||||
<span class="plain-syntax"> ---- was used for 2058109 objects, in 366643 frames in 0 x 800K = 0K = 0 MB:</span>
|
||||
|
||||
<span class="plain-syntax"> 33.0% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes</span>
|
||||
<span class="plain-syntax"> 20.6% text_stream_array 4639 x 100 = 463900 objects, 26126848 bytes</span>
|
||||
<span class="plain-syntax"> 19.5% linked_list 44089 objects, 24689840 bytes</span>
|
||||
<span class="plain-syntax"> 11.2% inter_symbol_array 133 x 1024 = 136192 objects, 14168224 bytes</span>
|
||||
<span class="plain-syntax"> 10.5% inter_error_stash_array 102 x 1024 = 104448 objects, 13372608 bytes</span>
|
||||
<span class="plain-syntax"> 8.2% parse_node 130351 objects, 10428080 bytes</span>
|
||||
<span class="plain-syntax"> 6.0% verb_conjugation 164 objects, 7610912 bytes</span>
|
||||
<span class="plain-syntax"> 33.6% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes</span>
|
||||
<span class="plain-syntax"> 21.0% text_stream_array 4649 x 100 = 464900 objects, 26183168 bytes</span>
|
||||
<span class="plain-syntax"> 19.8% linked_list 44171 objects, 24735760 bytes</span>
|
||||
<span class="plain-syntax"> 11.3% inter_symbol_array 133 x 1024 = 136192 objects, 14168224 bytes</span>
|
||||
<span class="plain-syntax"> 10.7% inter_error_stash_array 102 x 1024 = 104448 objects, 13372608 bytes</span>
|
||||
<span class="plain-syntax"> 8.3% parse_node 130355 objects, 10428400 bytes</span>
|
||||
<span class="plain-syntax"> 6.1% verb_conjugation 164 objects, 7610912 bytes</span>
|
||||
<span class="plain-syntax"> 4.4% parse_node_annotation_array 348 x 500 = 174000 objects, 5579136 bytes</span>
|
||||
<span class="plain-syntax"> 2.6% pcalc_prop_array 25 x 1000 = 25000 objects, 3400800 bytes</span>
|
||||
<span class="plain-syntax"> 2.7% pcalc_prop_array 25 x 1000 = 25000 objects, 3400800 bytes</span>
|
||||
<span class="plain-syntax"> 2.5% inter_name_array 67 x 1000 = 67000 objects, 3218144 bytes</span>
|
||||
<span class="plain-syntax"> 2.1% kind_array 67 x 1000 = 67000 objects, 2682144 bytes</span>
|
||||
<span class="plain-syntax"> 1.7% scan_directory 528 objects, 2179584 bytes</span>
|
||||
<span class="plain-syntax"> 1.8% scan_directory 548 objects, 2262144 bytes</span>
|
||||
<span class="plain-syntax"> 1.6% inter_name_generator_array 51 x 1000 = 51000 objects, 2041632 bytes</span>
|
||||
<span class="plain-syntax"> 1.6% inter_schema_token 14131 objects, 2034864 bytes</span>
|
||||
<span class="plain-syntax"> 1.6% inter_schema_token 14043 objects, 2022192 bytes</span>
|
||||
<span class="plain-syntax"> 1.4% package_request 21191 objects, 1864808 bytes</span>
|
||||
<span class="plain-syntax"> 1.4% vocabulary_entry_array 164 x 100 = 16400 objects, 1842048 bytes</span>
|
||||
<span class="plain-syntax"> 1.2% dict_entry_array 475 x 100 = 47500 objects, 1535200 bytes</span>
|
||||
<span class="plain-syntax"> 1.1% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes</span>
|
||||
<span class="plain-syntax"> 1.1% inter_symbols_table 26612 objects, 1490272 bytes</span>
|
||||
<span class="plain-syntax"> 1.0% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes</span>
|
||||
<span class="plain-syntax"> 1.0% inter_package 26612 objects, 1277376 bytes</span>
|
||||
<span class="plain-syntax"> 0.8% map_data 677 objects, 1137360 bytes</span>
|
||||
<span class="plain-syntax"> 1.2% dict_entry_array 477 x 100 = 47700 objects, 1541664 bytes</span>
|
||||
<span class="plain-syntax"> 1.2% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes</span>
|
||||
<span class="plain-syntax"> 1.1% inter_symbols_table 26637 objects, 1491672 bytes</span>
|
||||
<span class="plain-syntax"> 1.1% i6_schema_array 23 x 100 = 2300 objects, 1380736 bytes</span>
|
||||
<span class="plain-syntax"> 1.0% inter_package 26637 objects, 1278576 bytes</span>
|
||||
<span class="plain-syntax"> 0.9% map_data 677 objects, 1137360 bytes</span>
|
||||
<span class="plain-syntax"> 0.8% id_body 947 objects, 1083368 bytes</span>
|
||||
<span class="plain-syntax"> 0.7% adjective_meaning 202 objects, 1000304 bytes</span>
|
||||
<span class="plain-syntax"> 0.8% adjective_meaning 202 objects, 1000304 bytes</span>
|
||||
<span class="plain-syntax"> 0.7% excerpt_meaning 3122 objects, 974064 bytes</span>
|
||||
<span class="plain-syntax"> 0.7% production 3956 objects, 917792 bytes</span>
|
||||
<span class="plain-syntax"> 0.7% ptoken 8587 objects, 893048 bytes</span>
|
||||
<span class="plain-syntax"> 0.6% grammatical_usage 3641 objects, 873840 bytes</span>
|
||||
<span class="plain-syntax"> 0.6% inter_schema_node 9056 objects, 869376 bytes</span>
|
||||
<span class="plain-syntax"> 0.7% production 3957 objects, 918024 bytes</span>
|
||||
<span class="plain-syntax"> 0.7% ptoken 8588 objects, 893152 bytes</span>
|
||||
<span class="plain-syntax"> 0.7% grammatical_usage 3641 objects, 873840 bytes</span>
|
||||
<span class="plain-syntax"> 0.6% individual_form 2571 objects, 863856 bytes</span>
|
||||
<span class="plain-syntax"> 0.6% inter_schema_node 8968 objects, 860928 bytes</span>
|
||||
<span class="plain-syntax"> 0.5% unary_predicate_array 16 x 1000 = 16000 objects, 640512 bytes</span>
|
||||
<span class="plain-syntax"> 0.3% local_variable_array 47 x 100 = 4700 objects, 452704 bytes</span>
|
||||
<span class="plain-syntax"> 0.3% verb_usage 1148 objects, 394912 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% rule 470 objects, 368480 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% dictionary 7622 objects, 365856 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% dictionary 7661 objects, 367728 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% verb_form 388 objects, 350752 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% noun 2389 objects, 286680 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% compilation_subtask 3367 objects, 269360 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% inference_subject 672 objects, 263424 bytes</span>
|
||||
<span class="plain-syntax"> 0.2% inter_annotation_array 2 x 8192 = 16384 objects, 262208 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% vanilla_function 3706 objects, 237184 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% vanilla_function 3716 objects, 237824 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% binary_predicate 326 objects, 172128 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% hierarchy_location 1172 objects, 168768 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% hierarchy_location 1178 objects, 169632 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% linguistic_stock_item 3329 objects, 159792 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% rule_family_data 401 objects, 147568 bytes</span>
|
||||
<span class="plain-syntax"> 0.1% nonterminal 773 objects, 142232 bytes</span>
|
||||
|
@ -192,8 +192,8 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- heading 204 objects, 45696 bytes</span>
|
||||
<span class="plain-syntax"> ---- text_substitution 437 objects, 41952 bytes</span>
|
||||
<span class="plain-syntax"> ---- to_family_data 502 objects, 40160 bytes</span>
|
||||
<span class="plain-syntax"> ---- activity_list_array 1 x 1000 objects, 40032 bytes</span>
|
||||
<span class="plain-syntax"> ---- anl_clause_array 1 x 1000 objects, 40032 bytes</span>
|
||||
<span class="plain-syntax"> ---- activity_list_array 1 x 1000 objects, 40032 bytes</span>
|
||||
<span class="plain-syntax"> ---- shared_variable_access_list_array 12 x 100 = 1200 objects, 38784 bytes</span>
|
||||
<span class="plain-syntax"> ---- parsing_data 677 objects, 37912 bytes</span>
|
||||
<span class="plain-syntax"> ---- production_list 630 objects, 35280 bytes</span>
|
||||
|
@ -212,17 +212,17 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- action_name 90 objects, 20160 bytes</span>
|
||||
<span class="plain-syntax"> ---- filename 489 objects, 19560 bytes</span>
|
||||
<span class="plain-syntax"> ---- timed_rules_rfd_data 401 objects, 19248 bytes</span>
|
||||
<span class="plain-syntax"> ---- method 384 objects, 18432 bytes</span>
|
||||
<span class="plain-syntax"> ---- method 390 objects, 18720 bytes</span>
|
||||
<span class="plain-syntax"> ---- pcalc_prop_deferral 86 objects, 17888 bytes</span>
|
||||
<span class="plain-syntax"> ---- instance 167 objects, 17368 bytes</span>
|
||||
<span class="plain-syntax"> ---- JSON_value 194 objects, 17072 bytes</span>
|
||||
<span class="plain-syntax"> ---- JSON_value 195 objects, 17160 bytes</span>
|
||||
<span class="plain-syntax"> ---- to_phrase_request 62 objects, 16864 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_vertex 138 objects, 16560 bytes</span>
|
||||
<span class="plain-syntax"> ---- pathname 403 objects, 16120 bytes</span>
|
||||
<span class="plain-syntax"> ---- understanding_reference_array 2 x 100 = 200 objects, 16064 bytes</span>
|
||||
<span class="plain-syntax"> ---- match_avinue_array 1 x 1000 objects, 16032 bytes</span>
|
||||
<span class="plain-syntax"> ---- action_name_list_array 1 x 1000 objects, 16032 bytes</span>
|
||||
<span class="plain-syntax"> ---- match_avinue_array 1 x 1000 objects, 16032 bytes</span>
|
||||
<span class="plain-syntax"> ---- adjective 137 objects, 15344 bytes</span>
|
||||
<span class="plain-syntax"> ---- pathname 383 objects, 15320 bytes</span>
|
||||
<span class="plain-syntax"> ---- parse_node_tree 17 objects, 14824 bytes</span>
|
||||
<span class="plain-syntax"> ---- booking_list 407 objects, 13024 bytes</span>
|
||||
<span class="plain-syntax"> ---- adjective_iname_holder 320 objects, 12800 bytes</span>
|
||||
|
@ -247,37 +247,37 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- value_property_data 84 objects, 4704 bytes</span>
|
||||
<span class="plain-syntax"> ---- parsing_pp_data 96 objects, 4608 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_script 138 objects, 4416 bytes</span>
|
||||
<span class="plain-syntax"> ---- command_line_switch 49 objects, 3920 bytes</span>
|
||||
<span class="plain-syntax"> ---- command_line_switch 51 objects, 4080 bytes</span>
|
||||
<span class="plain-syntax"> ---- compatibility_specification 80 objects, 3840 bytes</span>
|
||||
<span class="plain-syntax"> ---- parse_node_annotation_type 119 objects, 3808 bytes</span>
|
||||
<span class="plain-syntax"> ---- submodule_request 85 objects, 3400 bytes</span>
|
||||
<span class="plain-syntax"> ---- method_set 106 objects, 3392 bytes</span>
|
||||
<span class="plain-syntax"> ---- property_setting_bp_data 84 objects, 3360 bytes</span>
|
||||
<span class="plain-syntax"> ---- method_set 105 objects, 3360 bytes</span>
|
||||
<span class="plain-syntax"> ---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes</span>
|
||||
<span class="plain-syntax"> ---- semver_range 31 objects, 3224 bytes</span>
|
||||
<span class="plain-syntax"> ---- inform_extension 16 objects, 3200 bytes</span>
|
||||
<span class="plain-syntax"> ---- definition 44 objects, 3168 bytes</span>
|
||||
<span class="plain-syntax"> ---- either_or_property_data 62 objects, 2976 bytes</span>
|
||||
<span class="plain-syntax"> ---- target_vm 20 objects, 2880 bytes</span>
|
||||
<span class="plain-syntax"> ---- inform_extension 16 objects, 2688 bytes</span>
|
||||
<span class="plain-syntax"> ---- use_option 29 objects, 2552 bytes</span>
|
||||
<span class="plain-syntax"> ---- parentage_inference_data 79 objects, 2528 bytes</span>
|
||||
<span class="plain-syntax"> ---- part_of_inference_data 79 objects, 2528 bytes</span>
|
||||
<span class="plain-syntax"> ---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes</span>
|
||||
<span class="plain-syntax"> ---- parentage_inference_data 79 objects, 2528 bytes</span>
|
||||
<span class="plain-syntax"> ---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes</span>
|
||||
<span class="plain-syntax"> ---- kind_constructor_instance_array 1 x 100 objects, 2432 bytes</span>
|
||||
<span class="plain-syntax"> ---- equation_symbol 30 objects, 2400 bytes</span>
|
||||
<span class="plain-syntax"> ---- scene 1 object, 2352 bytes</span>
|
||||
<span class="plain-syntax"> ---- JSON_type 31 objects, 2232 bytes</span>
|
||||
<span class="plain-syntax"> ---- JSON_single_requirement 43 objects, 2064 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_step 28 objects, 2016 bytes</span>
|
||||
<span class="plain-syntax"> ---- compiler_feature 30 objects, 1680 bytes</span>
|
||||
<span class="plain-syntax"> ---- pronoun_usage 42 objects, 1680 bytes</span>
|
||||
<span class="plain-syntax"> ---- compiler_feature 30 objects, 1680 bytes</span>
|
||||
<span class="plain-syntax"> ---- table_contribution_array 1 x 100 objects, 1632 bytes</span>
|
||||
<span class="plain-syntax"> ---- inform_pipeline 24 objects, 1536 bytes</span>
|
||||
<span class="plain-syntax"> ---- noun_filter_token 22 objects, 1408 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_node_array 35 objects, 1400 bytes</span>
|
||||
<span class="plain-syntax"> ---- special_meaning_holder 35 objects, 1400 bytes</span>
|
||||
<span class="plain-syntax"> ---- table_column 16 objects, 1280 bytes</span>
|
||||
<span class="plain-syntax"> ---- constant_phrase 20 objects, 1280 bytes</span>
|
||||
<span class="plain-syntax"> ---- table_column 16 objects, 1280 bytes</span>
|
||||
<span class="plain-syntax"> ---- invocation_options_array 1 x 100 objects, 1224 bytes</span>
|
||||
<span class="plain-syntax"> ---- direction_inference_data 30 objects, 1200 bytes</span>
|
||||
<span class="plain-syntax"> ---- JSON_requirement 36 objects, 1152 bytes</span>
|
||||
|
@ -286,8 +286,8 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- submodule_identity 33 objects, 1056 bytes</span>
|
||||
<span class="plain-syntax"> ---- runtime_kind_structure 13 objects, 1040 bytes</span>
|
||||
<span class="plain-syntax"> ---- quantifier 16 objects, 1024 bytes</span>
|
||||
<span class="plain-syntax"> ---- pipeline_stage 20 objects, 960 bytes</span>
|
||||
<span class="plain-syntax"> ---- named_rulebook_outcome 15 objects, 960 bytes</span>
|
||||
<span class="plain-syntax"> ---- pipeline_stage 20 objects, 960 bytes</span>
|
||||
<span class="plain-syntax"> ---- control_structure_phrase 12 objects, 864 bytes</span>
|
||||
<span class="plain-syntax"> ---- web_md 6 objects, 864 bytes</span>
|
||||
<span class="plain-syntax"> ---- cached_understanding 21 objects, 840 bytes</span>
|
||||
|
@ -300,20 +300,20 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- implication 13 objects, 624 bytes</span>
|
||||
<span class="plain-syntax"> ---- code_generation 1 object, 576 bytes</span>
|
||||
<span class="plain-syntax"> ---- generated_segment 14 objects, 560 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_annotation_form 14 objects, 560 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_warehouse_room 10 objects, 560 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_annotation_form 14 objects, 560 bytes</span>
|
||||
<span class="plain-syntax"> ---- rulebook_outcome 17 objects, 544 bytes</span>
|
||||
<span class="plain-syntax"> ---- small_word_set 11 objects, 528 bytes</span>
|
||||
<span class="plain-syntax"> ---- chapter_md 6 objects, 528 bytes</span>
|
||||
<span class="plain-syntax"> ---- module 6 objects, 480 bytes</span>
|
||||
<span class="plain-syntax"> ---- equation 4 objects, 480 bytes</span>
|
||||
<span class="plain-syntax"> ---- small_word_set 11 objects, 528 bytes</span>
|
||||
<span class="plain-syntax"> ---- inform_language 6 objects, 480 bytes</span>
|
||||
<span class="plain-syntax"> ---- bp_family 14 objects, 448 bytes</span>
|
||||
<span class="plain-syntax"> ---- equation 4 objects, 480 bytes</span>
|
||||
<span class="plain-syntax"> ---- module 6 objects, 480 bytes</span>
|
||||
<span class="plain-syntax"> ---- i6_memory_setting 14 objects, 448 bytes</span>
|
||||
<span class="plain-syntax"> ---- bp_family 14 objects, 448 bytes</span>
|
||||
<span class="plain-syntax"> ---- inference_family 11 objects, 440 bytes</span>
|
||||
<span class="plain-syntax"> ---- article_usage 8 objects, 384 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_genre 8 objects, 384 bytes</span>
|
||||
<span class="plain-syntax"> ---- source_file 5 objects, 360 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_genre 7 objects, 336 bytes</span>
|
||||
<span class="plain-syntax"> ---- tree_inventory 1 object, 320 bytes</span>
|
||||
<span class="plain-syntax"> ---- grammatical_category 8 objects, 320 bytes</span>
|
||||
<span class="plain-syntax"> ---- pronoun 8 objects, 320 bytes</span>
|
||||
|
@ -323,52 +323,52 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- inter_pipeline 1 object, 312 bytes</span>
|
||||
<span class="plain-syntax"> ---- up_family 9 objects, 288 bytes</span>
|
||||
<span class="plain-syntax"> ---- compilation_unit 5 objects, 280 bytes</span>
|
||||
<span class="plain-syntax"> ---- contents_entry 7 objects, 280 bytes</span>
|
||||
<span class="plain-syntax"> ---- explicit_bp_data 5 objects, 280 bytes</span>
|
||||
<span class="plain-syntax"> ---- contents_entry 7 objects, 280 bytes</span>
|
||||
<span class="plain-syntax"> ---- door_to_notice 5 objects, 280 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_nest 7 objects, 280 bytes</span>
|
||||
<span class="plain-syntax"> ---- verb_usage_tier 5 objects, 240 bytes</span>
|
||||
<span class="plain-syntax"> ---- inform_project 1 object, 224 bytes</span>
|
||||
<span class="plain-syntax"> ---- adjective_meaning_family 7 objects, 224 bytes</span>
|
||||
<span class="plain-syntax"> ---- inform_project 1 object, 224 bytes</span>
|
||||
<span class="plain-syntax"> ---- test_scenario 1 object, 216 bytes</span>
|
||||
<span class="plain-syntax"> ---- release_instructions 1 object, 208 bytes</span>
|
||||
<span class="plain-syntax"> ---- code_generator 5 objects, 200 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_skill 5 objects, 200 bytes</span>
|
||||
<span class="plain-syntax"> ---- code_generator 5 objects, 200 bytes</span>
|
||||
<span class="plain-syntax"> ---- plural_dictionary_entry 4 objects, 192 bytes</span>
|
||||
<span class="plain-syntax"> ---- kit_dependency 4 objects, 192 bytes</span>
|
||||
<span class="plain-syntax"> ---- element_activation 6 objects, 192 bytes</span>
|
||||
<span class="plain-syntax"> ---- imperative_defn_family 4 objects, 160 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_architecture 4 objects, 160 bytes</span>
|
||||
<span class="plain-syntax"> ---- element_activation 5 objects, 160 bytes</span>
|
||||
<span class="plain-syntax"> ---- attachment_instruction 4 objects, 160 bytes</span>
|
||||
<span class="plain-syntax"> ---- inference_subject_family 5 objects, 160 bytes</span>
|
||||
<span class="plain-syntax"> ---- inbuild_nest 3 objects, 120 bytes</span>
|
||||
<span class="plain-syntax"> ---- local_block_value 2 objects, 112 bytes</span>
|
||||
<span class="plain-syntax"> ---- inform_kit_ittt 2 objects, 96 bytes</span>
|
||||
<span class="plain-syntax"> ---- article 2 objects, 80 bytes</span>
|
||||
<span class="plain-syntax"> ---- group_together_function 2 objects, 80 bytes</span>
|
||||
<span class="plain-syntax"> ---- compile_task_data 1 object, 80 bytes</span>
|
||||
<span class="plain-syntax"> ---- group_together_function 2 objects, 80 bytes</span>
|
||||
<span class="plain-syntax"> ---- figures_data 1 object, 56 bytes</span>
|
||||
<span class="plain-syntax"> ---- inter_warehouse 1 object, 56 bytes</span>
|
||||
<span class="plain-syntax"> ---- build_methodology 1 object, 56 bytes</span>
|
||||
<span class="plain-syntax"> ---- figures_data 1 object, 56 bytes</span>
|
||||
<span class="plain-syntax"> ---- HTML_file_state 1 object, 48 bytes</span>
|
||||
<span class="plain-syntax"> ---- star_invention 1 object, 48 bytes</span>
|
||||
<span class="plain-syntax"> ---- HTML_file_state 1 object, 48 bytes</span>
|
||||
<span class="plain-syntax"> ---- kind_template_definition 1 object, 40 bytes</span>
|
||||
<span class="plain-syntax"> ---- by_function_bp_data 1 object, 40 bytes</span>
|
||||
<span class="plain-syntax"> ---- I6_generation_data 1 object, 40 bytes</span>
|
||||
<span class="plain-syntax"> ---- loop_over_scope 1 object, 40 bytes</span>
|
||||
<span class="plain-syntax"> ---- kind_template_definition 1 object, 40 bytes</span>
|
||||
|
||||
<span class="plain-syntax">100.0% was used for memory not allocated for objects:</span>
|
||||
|
||||
<span class="plain-syntax"> 57.6% text stream storage 72845148 bytes in 481444 claims</span>
|
||||
<span class="plain-syntax"> 4.2% dictionary storage 5313536 bytes in 7622 claims</span>
|
||||
<span class="plain-syntax"> ---- sorting 1568 bytes in 159 claims</span>
|
||||
<span class="plain-syntax"> 5.6% source text 7200000 bytes in 3 claims</span>
|
||||
<span class="plain-syntax"> 8.5% source text details 10800000 bytes in 2 claims</span>
|
||||
<span class="plain-syntax"> 56.9% text stream storage 70764524 bytes in 482127 claims</span>
|
||||
<span class="plain-syntax"> 4.2% dictionary storage 5335040 bytes in 7661 claims</span>
|
||||
<span class="plain-syntax"> ---- sorting 1696 bytes in 183 claims</span>
|
||||
<span class="plain-syntax"> 5.7% source text 7200000 bytes in 3 claims</span>
|
||||
<span class="plain-syntax"> 8.6% source text details 10800000 bytes in 2 claims</span>
|
||||
<span class="plain-syntax"> 0.2% documentation fragments 262144 bytes in 1 claim</span>
|
||||
<span class="plain-syntax"> ---- linguistic stock array 81920 bytes in 2 claims</span>
|
||||
<span class="plain-syntax"> ---- small word set array 105600 bytes in 22 claims</span>
|
||||
<span class="plain-syntax"> 3.6% inter symbols storage 4558048 bytes in 27977 claims</span>
|
||||
<span class="plain-syntax"> 13.2% inter bytecode storage 16767448 bytes in 14 claims</span>
|
||||
<span class="plain-syntax"> 4.9% inter links storage 6222976 bytes in 11 claims</span>
|
||||
<span class="plain-syntax"> 3.6% inter symbols storage 4562240 bytes in 28004 claims</span>
|
||||
<span class="plain-syntax"> 13.4% inter bytecode storage 16767540 bytes in 14 claims</span>
|
||||
<span class="plain-syntax"> 5.0% inter links storage 6222976 bytes in 11 claims</span>
|
||||
<span class="plain-syntax"> 0.1% inter tree location list storage 191232 bytes in 32 claims</span>
|
||||
<span class="plain-syntax"> 1.3% instance-of-kind counting 1731856 bytes in 1 claim</span>
|
||||
<span class="plain-syntax"> ---- compilation workspace for objects 22136 bytes in 25 claims</span>
|
||||
|
@ -376,7 +376,7 @@ represent less than 1/1000th of the total.
|
|||
<span class="plain-syntax"> ---- code generation workspace for objects 3480 bytes in 19 claims</span>
|
||||
<span class="plain-syntax"> 0.2% emitter array storage 280544 bytes in 2001 claims</span>
|
||||
|
||||
<span class="plain-syntax">-147.-8% was overhead - -186919368 bytes = -182538K = -178 MB</span>
|
||||
<span class="plain-syntax">-150.-4% was overhead - -187098264 bytes = -182713K = -178 MB</span>
|
||||
</pre>
|
||||
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>§4. Preform grammar. </b>The full annotated description of the Preform grammar (see <a href="../words-module/4-ap.html" class="internal">About Preform (in words)</a>),
|
||||
with optimisation details and hit/miss statistics added, is also long: it's
|
||||
|
@ -419,7 +419,7 @@ sample, showing the nonterminal used to parse literals in Inform 7 source text:
|
|||
<a href="preform-diagnostics.txt" download>
|
||||
<button class="download-button">
|
||||
<img src="../docs-assets/download.png" alt="download icon" height=16 width=16>
|
||||
Download <b>preform-diagnostics.txt</b> (Preform diagnostics file, 399.3kB)
|
||||
Download <b>preform-diagnostics.txt</b> (Preform diagnostics file, 399.4kB)
|
||||
</button>
|
||||
</a>
|
||||
</p>
|
||||
|
|
|
@ -60,48 +60,49 @@
|
|||
<span class="plain-syntax">Usage: inform7 [OPTIONS]</span>
|
||||
|
||||
<span class="plain-syntax">for translating Inform source text to Inter:</span>
|
||||
<span class="plain-syntax"> -basic use Basic Inform language</span>
|
||||
<span class="plain-syntax"> -case X make any source links refer to the source in extension example X</span>
|
||||
<span class="plain-syntax"> -census perform an extensions census (default is -no-census)</span>
|
||||
<span class="plain-syntax"> -debug compile with debugging features even on a Release (default is -no-debug)</span>
|
||||
<span class="plain-syntax"> -format=X compile to the format X (default is Inform6/32)</span>
|
||||
<span class="plain-syntax"> -o X use file X as the compiled output (not for use with -project)</span>
|
||||
<span class="plain-syntax"> -project X work within the Inform project X</span>
|
||||
<span class="plain-syntax"> -release compile a version suitable for a Release build (default is -no-release)</span>
|
||||
<span class="plain-syntax"> -rng fix the random number generator of the story file (for testing) (default is -no-rng)</span>
|
||||
<span class="plain-syntax"> -source X use file X as the Inform source text</span>
|
||||
<span class="plain-syntax"> -basic use Basic Inform language</span>
|
||||
<span class="plain-syntax"> -case X make any source links refer to the source in extension example X</span>
|
||||
<span class="plain-syntax"> -census perform an extensions census (default is -no-census)</span>
|
||||
<span class="plain-syntax"> -debug compile with debugging features even on a Release (default is -no-debug)</span>
|
||||
<span class="plain-syntax"> -format=X compile to the format X (default is Inform6/32)</span>
|
||||
<span class="plain-syntax"> -o X use file X as the compiled output (not for use with -project)</span>
|
||||
<span class="plain-syntax"> -project X work within the Inform project X</span>
|
||||
<span class="plain-syntax"> -release compile a version suitable for a Release build (default is -no-release)</span>
|
||||
<span class="plain-syntax"> -rng fix the random number generator of the story file (for testing) (default is -no-rng)</span>
|
||||
<span class="plain-syntax"> -source X use file X as the Inform source text</span>
|
||||
|
||||
<span class="plain-syntax">for locating resources in the file system:</span>
|
||||
<span class="plain-syntax"> -external X use X as the user's home for installed material such as extensions</span>
|
||||
<span class="plain-syntax"> -internal X use X as the location of built-in material such as the Standard Rules</span>
|
||||
<span class="plain-syntax"> -nest X add the nest at pathname X to the search list</span>
|
||||
<span class="plain-syntax"> -transient X use X for transient data such as the extensions census</span>
|
||||
<span class="plain-syntax"> -external X use X as the user's home for installed material such as extensions</span>
|
||||
<span class="plain-syntax"> -internal X use X as the location of built-in material such as the Standard Rules</span>
|
||||
<span class="plain-syntax"> -nest X add the nest at pathname X to the search list</span>
|
||||
<span class="plain-syntax"> -transient X use X for transient data such as the extensions census</span>
|
||||
|
||||
<span class="plain-syntax">for tweaking code generation from Inter:</span>
|
||||
<span class="plain-syntax"> -kit X include Inter code from the kit called X</span>
|
||||
<span class="plain-syntax"> -pipeline X specify code-generation pipeline by name (default is "compile")</span>
|
||||
<span class="plain-syntax"> -pipeline-file X specify code-generation pipeline as file X</span>
|
||||
<span class="plain-syntax"> -variable X set pipeline variable X (in form name=value)</span>
|
||||
<span class="plain-syntax"> -kit X include Inter code from the kit called X</span>
|
||||
<span class="plain-syntax"> -pipeline X specify code-generation pipeline by name (default is "compile")</span>
|
||||
<span class="plain-syntax"> -pipeline-file X specify code-generation pipeline as file X</span>
|
||||
<span class="plain-syntax"> -variable X set pipeline variable X (in form name=value)</span>
|
||||
|
||||
<span class="plain-syntax">for testing and debugging inform7:</span>
|
||||
<span class="plain-syntax"> -no-census-update don't update the extensions census (default is -census-update)</span>
|
||||
<span class="plain-syntax"> -crash-all intentionally crash on Problem messages, for backtracing (default is -no-crash-all)</span>
|
||||
<span class="plain-syntax"> -diagnostics X if no problems occur, write diagnostics files to directory X (default is -no-diagnostics)</span>
|
||||
<span class="plain-syntax"> -no-index don't produce an Index (default is -index)</span>
|
||||
<span class="plain-syntax"> -no-problems don't produce (an HTML) Problems report page (default is -problems)</span>
|
||||
<span class="plain-syntax"> -no-progress don't display progress percentages (default is -progress)</span>
|
||||
<span class="plain-syntax"> -require-problem X return 0 unless exactly this Problem message is generated</span>
|
||||
<span class="plain-syntax"> -sigils print Problem message sigils (default is -no-sigils)</span>
|
||||
<span class="plain-syntax"> -silence practice 'silence is golden': print only Unix-style errors (default is -no-silence)</span>
|
||||
<span class="plain-syntax"> -test-output X write output of internal tests to file X</span>
|
||||
<span class="plain-syntax"> -no-census-update don't update the extensions census (default is -census-update)</span>
|
||||
<span class="plain-syntax"> -crash-all intentionally crash on Problem messages, for backtracing (default is -no-crash-all)</span>
|
||||
<span class="plain-syntax"> -diagnostics X if no problems occur, write diagnostics files to directory X (default is -no-diagnostics)</span>
|
||||
<span class="plain-syntax"> -no-index don't produce an Index (default is -index)</span>
|
||||
<span class="plain-syntax"> -no-problems don't produce (an HTML) Problems report page (default is -problems)</span>
|
||||
<span class="plain-syntax"> -no-progress don't display progress percentages (default is -progress)</span>
|
||||
<span class="plain-syntax"> -require-problem X return 0 unless exactly this Problem message is generated</span>
|
||||
<span class="plain-syntax"> -no-resource-checking don't check that figures, sounds and similar resources exist at compile-time (default is -resource-checking)</span>
|
||||
<span class="plain-syntax"> -sigils print Problem message sigils (default is -no-sigils)</span>
|
||||
<span class="plain-syntax"> -silence practice 'silence is golden': print only Unix-style errors (default is -no-silence)</span>
|
||||
<span class="plain-syntax"> -test-output X write output of internal tests to file X</span>
|
||||
|
||||
<span class="plain-syntax">-at X specify that this tool is installed at X</span>
|
||||
<span class="plain-syntax">-crash intentionally crash on internal errors, for backtracing (default is -no-crash)</span>
|
||||
<span class="plain-syntax">-fixtime pretend the time is 11 a.m. on 28 March 2016 for testing (default is -no-fixtime)</span>
|
||||
<span class="plain-syntax">-help print this help information</span>
|
||||
<span class="plain-syntax">-locale X set locales as 'L=E', L being shell or console, E platform, utf-8 or iso-latin1</span>
|
||||
<span class="plain-syntax">-log X write the debugging log to include diagnostics on X</span>
|
||||
<span class="plain-syntax">-version print out version number</span>
|
||||
<span class="plain-syntax">-at X specify that this tool is installed at X</span>
|
||||
<span class="plain-syntax">-crash intentionally crash on internal errors, for backtracing (default is -no-crash)</span>
|
||||
<span class="plain-syntax">-fixtime pretend the time is 11 a.m. on 28 March 2016 for testing (default is -no-fixtime)</span>
|
||||
<span class="plain-syntax">-help print this help information</span>
|
||||
<span class="plain-syntax">-locale X set locales as 'L=E', L being shell or console, E platform, utf-8 or iso-latin1</span>
|
||||
<span class="plain-syntax">-log X write the debugging log to include diagnostics on X</span>
|
||||
<span class="plain-syntax">-version print out version number</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="M-cifc.html">❮</a></li><li class="progresscurrentchapter">M</li><li class="progresssection"><a href="M-cu.html">cu</a></li><li class="progresssection"><a href="M-iwtg.html">iwtg</a></li><li class="progresssection"><a href="M-cifc.html">cifc</a></li><li class="progresscurrent">rc</li><li class="progresssection"><a href="M-pm.html">pm</a></li><li class="progresschapter"><a href="1-mn.html">1</a></li><li class="progressnext"><a href="M-pm.html">❯</a></li></ul></div>
|
||||
|
|
|
@ -9381,7 +9381,7 @@
|
|||
<action-pattern-past-negated>
|
||||
(hits 0/978) constraint DS = {18} extremes [4, infinity)
|
||||
|
||||
<action-pattern> hits 558/21394 nti 6 constraint (none) extremes [1, infinity)
|
||||
<action-pattern> hits 558/21424 nti 6 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
asking <s-ap-parameter> to try <ap-three-present>
|
||||
(hits 0/1005) constraint DS = {6} extremes [5, infinity)
|
||||
|
@ -9394,9 +9394,9 @@
|
|||
trying <ap-three-present>
|
||||
(hits 0/2266) constraint DS = {6} extremes [2, infinity)
|
||||
<ap-three-present>
|
||||
(hits 60/10264) (matched long text) constraint (none) extremes [1, infinity)
|
||||
(hits 60/10279) (matched long text) constraint (none) extremes [1, infinity)
|
||||
<actor-description> <ap-three-present>
|
||||
(hits 65/5437) (matched long text) constraint (none) extremes [2, infinity)
|
||||
(hits 65/5439) (matched long text) constraint (none) extremes [2, infinity)
|
||||
|
||||
<we-are-action-pattern> hits 27/2756 nti 19 constraint (none) extremes [1, infinity)
|
||||
English:
|
||||
|
@ -9474,9 +9474,9 @@
|
|||
we have not <ap-three-past>
|
||||
(hits 0/978) constraint DS = {18} extremes [4, infinity)
|
||||
|
||||
<actor-description> internal hits 94/13126 nti 9 constraint (none) extremes [1, infinity)
|
||||
<actor-description> internal hits 94/13130 nti 9 constraint (none) extremes [1, infinity)
|
||||
|
||||
<ap-three-present> internal hits 585/24338 nti 10 constraint (none) extremes [1, infinity)
|
||||
<ap-three-present> internal hits 585/24368 nti 10 constraint (none) extremes [1, infinity)
|
||||
|
||||
<ap-three-past> internal nti 11 constraint (none) extremes [1, infinity)
|
||||
|
||||
|
@ -9692,6 +9692,8 @@
|
|||
English:
|
||||
<action-name>
|
||||
(hits 150/165) (matched: 'requesting the story file version') constraint (none) extremes [1, infinity)
|
||||
<action-pattern>
|
||||
(hits 0/15) constraint (none) extremes [1, infinity)
|
||||
<s-descriptive-type-expression>
|
||||
(hits 15/15) (matched: 'the statue') constraint (none) extremes [1, infinity)
|
||||
<s-variable>
|
||||
|
|
|
@ -88,7 +88,7 @@ to the other three; it doesn't even have an activation function.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<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">mm</li><li class="progresschapter"><a href="2-fgr.html">2</a></li><li class="progressnext"><a href="2-fgr.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">mm</li><li class="progresschapter"><a href="2-rf.html">2</a></li><li class="progressnext"><a href="2-rf.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -385,7 +385,7 @@ manages to make a figure, a problem message is thrown.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-se.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-mm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-fgr.html">fgr</a></li><li class="progresssection"><a href="2-se.html">se</a></li><li class="progresscurrent">ef</li><li class="progresssection"><a href="2-if.html">if</a></li><li class="progressnext"><a href="2-if.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-se.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-mm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-rf.html">rf</a></li><li class="progresssection"><a href="2-fgr.html">fgr</a></li><li class="progresssection"><a href="2-se.html">se</a></li><li class="progresscurrent">ef</li><li class="progresssection"><a href="2-if.html">if</a></li><li class="progressnext"><a href="2-if.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -179,11 +179,15 @@ has been found to create a figure:
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">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">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><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="plain-syntax"> </span><span class="identifier-syntax">figure_file</span><span class="plain-syntax"> = </span><a href="2-rf.html#SP1" class="function-link"><span class="function-syntax">ResourceFinder::find_resource</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Task::figures_department</span><span class="plain-syntax">(), </span><span class="identifier-syntax">leaf</span><span class="plain-syntax">, </span><span class="identifier-syntax">FN</span><span class="plain-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">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>
|
||||
<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="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>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -362,7 +366,7 @@ the cover art, which is handled by Bibliographic Data.
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="1-mm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-mm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">fgr</li><li class="progresssection"><a href="2-se.html">se</a></li><li class="progresssection"><a href="2-ef.html">ef</a></li><li class="progresssection"><a href="2-if.html">if</a></li><li class="progressnext"><a href="2-se.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-rf.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-mm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-rf.html">rf</a></li><li class="progresscurrent">fgr</li><li class="progresssection"><a href="2-se.html">se</a></li><li class="progresssection"><a href="2-ef.html">ef</a></li><li class="progresssection"><a href="2-if.html">if</a></li><li class="progressnext"><a href="2-se.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -134,7 +134,7 @@ proposition somehow manages to make a file, a problem message is thrown.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_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">Word::dequote</span><span class="plain-syntax">(</span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">FN</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">leaf</span><span class="plain-syntax">, </span><span class="string-syntax">"%N"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Wordings::first_wn</span><span class="plain-syntax">(</span><span class="identifier-syntax">FN</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ifd</span><span class="plain-syntax">-></span><span class="element-syntax">local_filename</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::data_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="identifier-syntax">ifd</span><span class="plain-syntax">-></span><span class="element-syntax">local_filename</span><span class="plain-syntax"> = </span><a href="2-rf.html#SP1" class="function-link"><span class="function-syntax">ResourceFinder::find_resource</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Task::data_department</span><span class="plain-syntax">(), </span><span class="identifier-syntax">leaf</span><span class="plain-syntax">, </span><span class="identifier-syntax">FN</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="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">I</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
@ -197,7 +197,7 @@ created from <span class="extract"><span class="extract-syntax">Figures.w</span>
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ef.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-mm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-fgr.html">fgr</a></li><li class="progresssection"><a href="2-se.html">se</a></li><li class="progresssection"><a href="2-ef.html">ef</a></li><li class="progresscurrent">if</li><li class="progressnextoff">❯</li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-ef.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-mm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-rf.html">rf</a></li><li class="progresssection"><a href="2-fgr.html">fgr</a></li><li class="progresssection"><a href="2-se.html">se</a></li><li class="progresssection"><a href="2-ef.html">ef</a></li><li class="progresscurrent">if</li><li class="progressnextoff">❯</li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
142
docs/multimedia-module/2-rf.html
Normal file
142
docs/multimedia-module/2-rf.html
Normal file
|
@ -0,0 +1,142 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
|
||||
<html>
|
||||
<head>
|
||||
<title>Resource Finder</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="../index.html">home</a></li>
|
||||
</ul><h2>Compiler</h2><ul>
|
||||
<li><a href="../structure.html">structure</a></li>
|
||||
<li><a href="../inbuildn.html">inbuild</a></li>
|
||||
<li><a href="../inform7n.html">inform7</a></li>
|
||||
<li><a href="../intern.html">inter</a></li>
|
||||
<li><a href="../services.html">services</a></li>
|
||||
<li><a href="../secrets.html">secrets</a></li>
|
||||
</ul><h2>Other Tools</h2><ul>
|
||||
<li><a href="../inblorbn.html">inblorb</a></li>
|
||||
<li><a href="../indocn.html">indoc</a></li>
|
||||
<li><a href="../inform6.html">inform6</a></li>
|
||||
<li><a href="../inpolicyn.html">inpolicy</a></li>
|
||||
<li><a href="../inrtpsn.html">inrtps</a></li>
|
||||
</ul><h2>Resources</h2><ul>
|
||||
<li><a href="../extensions.html">extensions</a></li>
|
||||
<li><a href="../kits.html">kits</a></li>
|
||||
</ul><h2>Repository</h2><ul>
|
||||
<li><a href="https://github.com/ganelson/inform"><img src="../docs-assets/github.png" height=18> github</a></li>
|
||||
</ul><h2>Related Projects</h2><ul>
|
||||
<li><a href="../../../inweb/index.html">inweb</a></li>
|
||||
<li><a href="../../../intest/index.html">intest</a></li>
|
||||
|
||||
</ul>
|
||||
</nav>
|
||||
<main role="main">
|
||||
<!--Weave of 'Resource Finder' generated by Inweb-->
|
||||
<div class="breadcrumbs">
|
||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../inform7n.html">Inform7</a></li><li><a href="index.html">multimedia</a></li><li><a href="index.html#2">Chapter 2: Multimedia Features</a></li><li><b>Resource Finder</b></li></ul></div>
|
||||
<p class="purpose">To find resources such as sound and image files.</p>
|
||||
|
||||
<ul class="toc"><li><a href="2-rf.html#SP1">§1. Resource finder</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Resource finder. </b>This simple function is shared by the code for figures, sound effects and
|
||||
internal data files. When Inform reads a sentence such as:
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Sound</span><span class="plain-syntax"> </span><span class="identifier-syntax">of</span><span class="plain-syntax"> </span><span class="identifier-syntax">Organ</span><span class="plain-syntax"> </span><span class="identifier-syntax">is</span><span class="plain-syntax"> </span><span class="identifier-syntax">the</span><span class="plain-syntax"> </span><span class="identifier-syntax">file</span><span class="plain-syntax"> </span><span class="string-syntax">"Passacaglia.mid"</span><span class="plain-syntax">.</span>
|
||||
</pre>
|
||||
<p class="commentary">it looks for the file first in the <span class="extract"><span class="extract-syntax">Sounds</span></span> folder of the materials for the
|
||||
project, and then, if it isn't there, in the <span class="extract"><span class="extract-syntax">Sounds</span></span> folder of the materials
|
||||
for the extension in which the sentence occurs (if it occurs in an extension).
|
||||
Here <span class="extract"><span class="extract-syntax">"Sounds"</span></span> is what we will call the department name for sound effects.
|
||||
</p>
|
||||
|
||||
<p class="commentary">This code was introduced as part of the implementation of IE-0001, and for
|
||||
the first time throws problem messages is named resources do not exist.
|
||||
</p>
|
||||
|
||||
<pre class="displayed-code all-displayed-code code-font">
|
||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">check_resources_are_present</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">ResourceFinder::set_mode</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</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">check_resources_are_present</span><span class="plain-syntax"> = </span><span class="identifier-syntax">val</span><span class="plain-syntax">; </span><span class="comment-syntax"> set by </span><span class="extract"><span class="extract-syntax">-resource-checking</span></span><span class="comment-syntax"> at command line</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="function-syntax">ResourceFinder::find_resource</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">ResourceFinder::find_resource</span></span>:<br/>Figures - <a href="2-fgr.html#SP5">§5</a><br/>Sound Effects - <a href="2-se.html#SP5">§5</a><br/>Internal Files - <a href="2-if.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">department</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">leaf</span><span class="plain-syntax">, </span><span class="identifier-syntax">wording</span><span class="plain-syntax"> </span><span class="identifier-syntax">W</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">inform_extension</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="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Wordings::nonempty</span><span class="plain-syntax">(</span><span class="identifier-syntax">W</span><span class="plain-syntax">))</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Extensions::corresponding_to</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">W</span><span class="plain-syntax">)));</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P1</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::resources_path</span><span class="plain-syntax">(), </span><span class="identifier-syntax">department</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">pathname</span><span class="plain-syntax"> *</span><span class="identifier-syntax">P2</span><span class="plain-syntax"> = </span><span class="identifier-syntax">E</span><span class="plain-syntax">?(</span><span class="identifier-syntax">Pathnames::down</span><span class="plain-syntax">(</span><span class="identifier-syntax">Extensions::materials_path</span><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">), </span><span class="identifier-syntax">department</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">P1</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">F</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">P1</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">FILE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">HANDLE</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::fopen</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="string-syntax">"rb"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">HANDLE</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">HANDLE</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">F</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P2</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">F</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">P2</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">FILE</span><span class="plain-syntax"> *</span><span class="identifier-syntax">HANDLE</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::fopen</span><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="string-syntax">"rb"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">HANDLE</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">HANDLE</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">F</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">check_resources_are_present</span><span class="plain-syntax"> == </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">P1</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">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"Tried in %p\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">P1</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P2</span><span class="plain-syntax">) </span><span class="identifier-syntax">LOG</span><span class="plain-syntax">(</span><span class="string-syntax">"And also in %p\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">P2</span><span class="plain-syntax">);</span>
|
||||
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_source</span><span class="plain-syntax">(1, </span><span class="identifier-syntax">current_sentence</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_wording</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">W</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_stream</span><span class="plain-syntax">(3, </span><span class="identifier-syntax">department</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">StandardProblems::handmade_problem</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::syntax_tree</span><span class="plain-syntax">(), </span><span class="identifier-syntax">_p_</span><span class="plain-syntax">(</span><span class="identifier-syntax">Untestable</span><span class="plain-syntax">));</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"You wrote %1, which means I am looking for a file called %2, but I'm "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"unable to find it. "</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">P2</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The file should either be in the '%3' subfolder of the materials folder, "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"or in the 'Materials/%3' subfolder of this extension."</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">Problems::issue_problem_segment</span><span class="plain-syntax">(</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"The file should be in the '%3' subfolder of the materials folder."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</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-mm.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-mm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">rf</li><li class="progresssection"><a href="2-fgr.html">fgr</a></li><li class="progresssection"><a href="2-se.html">se</a></li><li class="progresssection"><a href="2-ef.html">ef</a></li><li class="progresssection"><a href="2-if.html">if</a></li><li class="progressnext"><a href="2-fgr.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -171,11 +171,13 @@ has been found to create a sound:
|
|||
<span class="plain-syntax"> </span><span class="string-syntax">"because it is either empty or contains only spaces."</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sound_file</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">Task::sounds_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="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">sound_file</span><span class="plain-syntax"> = </span><a href="2-rf.html#SP1" class="function-link"><span class="function-syntax">ResourceFinder::find_resource</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">Task::sounds_department</span><span class="plain-syntax">(), </span><span class="identifier-syntax">leaf</span><span class="plain-syntax">, </span><span class="identifier-syntax">FN</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><a href="2-se.html#SP9" class="function-link"><span class="function-syntax">Sounds::sounds_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">sound_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="plain-syntax"> </span><span class="string-syntax">"Created sound effect <%W> = filename '%N' = resource ID %d\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">wn</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">sound_file</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><a href="2-se.html#SP9" class="function-link"><span class="function-syntax">Sounds::sounds_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">sound_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="plain-syntax"> </span><span class="string-syntax">"Created sound effect <%W> = filename '%N' = resource ID %d\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">W</span><span class="plain-syntax">, </span><span class="identifier-syntax">wn</span><span class="plain-syntax">, </span><span class="identifier-syntax">id</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
|
@ -319,7 +321,7 @@ created from <span class="extract"><span class="extract-syntax">Figures.w</span>
|
|||
<span class="plain-syntax">}</span>
|
||||
</pre>
|
||||
<nav role="progress"><div class="progresscontainer">
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-fgr.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-mm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-fgr.html">fgr</a></li><li class="progresscurrent">se</li><li class="progresssection"><a href="2-ef.html">ef</a></li><li class="progresssection"><a href="2-if.html">if</a></li><li class="progressnext"><a href="2-ef.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprev"><a href="2-fgr.html">❮</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-mm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-rf.html">rf</a></li><li class="progresssection"><a href="2-fgr.html">fgr</a></li><li class="progresscurrent">se</li><li class="progresssection"><a href="2-ef.html">ef</a></li><li class="progresssection"><a href="2-if.html">if</a></li><li class="progressnext"><a href="2-ef.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -76,7 +76,7 @@ very similar to each other:
|
|||
</li><li>● <a href="2-se.html" class="internal">Sound Effects</a> for playing music or other sounds.
|
||||
</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-mm.html">1</a></li><li class="progresschapter"><a href="2-fgr.html">2</a></li><li class="progressnext"><a href="1-mm.html">❯</a></li></ul></div>
|
||||
<ul class="progressbar"><li class="progressprevoff">❮</li><li class="progresscurrentchapter">P</li><li class="progresscurrent">wtmd</li><li class="progresschapter"><a href="1-mm.html">1</a></li><li class="progresschapter"><a href="2-rf.html">2</a></li><li class="progressnext"><a href="1-mm.html">❯</a></li></ul></div>
|
||||
</nav><!--End of weave-->
|
||||
|
||||
</main>
|
||||
|
|
|
@ -75,6 +75,11 @@
|
|||
<p class="chapterentry"><a name="2"></a>
|
||||
<span class="chaptertitle">Chapter 2: Multimedia Features</span></p>
|
||||
<ul class="sectionlist">
|
||||
<li>
|
||||
<p class="sectionentry"><a href="2-rf.html">
|
||||
<spon class="sectiontitle">Resource Finder</span></a> -
|
||||
<span class="sectionpurpose">To find resources such as sound and image files.</span></p>
|
||||
</li>
|
||||
<li>
|
||||
<p class="sectionentry"><a href="2-fgr.html">
|
||||
<spon class="sectiontitle">Figures</span></a> -
|
||||
|
|
|
@ -74,6 +74,7 @@ fields are blank.
|
|||
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">OPEN_FAILED_CE</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">METADATA_MALFORMED_CE</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">EXT_MISWORDED_CE</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">EXT_BAD_DIRNAME_CE</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">EXT_TITLE_TOO_LONG_CE</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">EXT_AUTHOR_TOO_LONG_CE</span>
|
||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">LEXER_CE</span><span class="plain-syntax"> </span><span class="comment-syntax"> an error generated by the </span><span class="extract"><span class="extract-syntax">words</span></span><span class="comment-syntax"> module</span>
|
||||
|
@ -121,7 +122,7 @@ fields are blank.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">CE</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="reserved-syntax">copy_error</span><span class="plain-syntax"> *</span><span class="function-syntax">CopyErrors::new_T</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">CopyErrors::new_T</span></span>:<br/>JSON Metadata - <a href="2-jm.html#SP1_1">§1.1</a>, <a href="2-jm.html#SP1_2">§1.2</a>, <a href="2-jm.html#SP1_3_1">§1.3.1</a>, <a href="2-jm.html#SP1_3_2">§1.3.2</a>, <a href="2-jm.html#SP1_3_3">§1.3.3</a>, <a href="2-jm.html#SP1_3_4">§1.3.4</a>, <a href="2-jm.html#SP1_3_5">§1.3.5</a>, <a href="2-jm.html#SP1_4">§1.4</a>, <a href="2-jm.html#SP1_5">§1.5</a>, <a href="2-jm.html#SP1_6">§1.6</a><br/>Extension Services - <a href="5-es.html#SP2_2">§2.2</a>, <a href="5-es.html#SP2_2_3">§2.2.3</a>, <a href="5-es.html#SP2_2_3_2">§2.2.3.2</a>, <a href="5-es.html#SP2_3">§2.3</a>, <a href="5-es.html#SP2_4_3">§2.4.3</a>, <a href="5-es.html#SP2_4_3_1_1">§2.4.3.1.1</a>, <a href="5-es.html#SP2_4_3_2_1">§2.4.3.2.1</a>, <a href="5-es.html#SP2_5">§2.5</a>, <a href="5-es.html#SP8">§8</a><br/>Kit Services - <a href="5-ks.html#SP4_3">§4.3</a>, <a href="5-ks.html#SP4_3_1">§4.3.1</a>, <a href="5-ks.html#SP4_3_1_1">§4.3.1.1</a>, <a href="5-ks.html#SP4_3_2">§4.3.2</a>, <a href="5-ks.html#SP11">§11</a><br/>Language Services - <a href="5-ls.html#SP2">§2</a>, <a href="5-ls.html#SP2_2">§2.2</a><br/>Project Services - <a href="5-ps2.html#SP2_3">§2.3</a>, <a href="5-ps2.html#SP22_5">§22.5</a>, <a href="5-ps2.html#SP24">§24</a>, <a href="5-ps2.html#SP33">§33</a>, <a href="5-ps2.html#SP34">§34</a><br/>Headings - <a href="6-hdn.html#SP22_2">§22.2</a><br/>Inclusions - <a href="6-inc.html#SP2_2">§2.2</a>, <a href="6-inc.html#SP2_2_1">§2.2.1</a>, <a href="6-inc.html#SP6_1_1">§6.1.1</a>, <a href="6-inc.html#SP6_1_2">§6.1.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cat</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">subcat</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NB</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">copy_error</span><span class="plain-syntax"> *</span><span class="function-syntax">CopyErrors::new_T</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">CopyErrors::new_T</span></span>:<br/>JSON Metadata - <a href="2-jm.html#SP1_1">§1.1</a>, <a href="2-jm.html#SP1_2">§1.2</a>, <a href="2-jm.html#SP1_3_1">§1.3.1</a>, <a href="2-jm.html#SP1_3_2">§1.3.2</a>, <a href="2-jm.html#SP1_3_3">§1.3.3</a>, <a href="2-jm.html#SP1_3_4">§1.3.4</a>, <a href="2-jm.html#SP1_3_5">§1.3.5</a>, <a href="2-jm.html#SP1_4">§1.4</a>, <a href="2-jm.html#SP1_5">§1.5</a>, <a href="2-jm.html#SP1_6">§1.6</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP3">§3</a><br/>Extension Services - <a href="5-es.html#SP2_2">§2.2</a>, <a href="5-es.html#SP2_2_3">§2.2.3</a>, <a href="5-es.html#SP2_2_3_2">§2.2.3.2</a>, <a href="5-es.html#SP2_3">§2.3</a>, <a href="5-es.html#SP2_4_3">§2.4.3</a>, <a href="5-es.html#SP2_4_3_1_1">§2.4.3.1.1</a>, <a href="5-es.html#SP2_4_3_2_1">§2.4.3.2.1</a>, <a href="5-es.html#SP2_5">§2.5</a>, <a href="5-es.html#SP8">§8</a><br/>Kit Services - <a href="5-ks.html#SP4_3">§4.3</a>, <a href="5-ks.html#SP4_3_1">§4.3.1</a>, <a href="5-ks.html#SP4_3_1_1">§4.3.1.1</a>, <a href="5-ks.html#SP4_3_2">§4.3.2</a>, <a href="5-ks.html#SP11">§11</a><br/>Language Services - <a href="5-ls.html#SP2">§2</a>, <a href="5-ls.html#SP2_2">§2.2</a><br/>Project Services - <a href="5-ps2.html#SP2_3">§2.3</a>, <a href="5-ps2.html#SP22_5">§22.5</a>, <a href="5-ps2.html#SP24">§24</a>, <a href="5-ps2.html#SP33">§33</a>, <a href="5-ps2.html#SP34">§34</a><br/>Headings - <a href="6-hdn.html#SP22_2">§22.2</a><br/>Inclusions - <a href="6-inc.html#SP2_2">§2.2</a>, <a href="6-inc.html#SP2_2_1">§2.2.1</a>, <a href="6-inc.html#SP6_1_1">§6.1.1</a>, <a href="6-inc.html#SP6_1_2">§6.1.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cat</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">subcat</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NB</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">copy_error</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CE</span><span class="plain-syntax"> = </span><a href="2-ce.html#SP2" class="function-link"><span class="function-syntax">CopyErrors::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cat</span><span class="plain-syntax">, </span><span class="identifier-syntax">subcat</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="element-syntax">details</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">NB</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">CE</span><span class="plain-syntax">;</span>
|
||||
|
@ -191,6 +192,7 @@ output.
|
|||
<span class="plain-syntax"> </span><span class="reserved-syntax">switch</span><span class="plain-syntax"> (</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="element-syntax">error_category</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">OPEN_FAILED_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"unable to open file %f"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="element-syntax">details_file</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">EXT_MISWORDED_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"extension misworded: %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="element-syntax">details</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">EXT_BAD_DIRNAME_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"extension directory name wrong: %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="element-syntax">details</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">METADATA_MALFORMED_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S has incorrect metadata: %S"</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="element-syntax">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">genre</span><span class="plain-syntax">-></span><span class="element-syntax">genre_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-></span><span class="element-syntax">details</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">EXT_TITLE_TOO_LONG_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"title too long: %d characters (max is %d)"</span><span class="plain-syntax">,</span>
|
||||
|
|
|
@ -147,7 +147,7 @@ for later reporting. These are stored in a list.
|
|||
</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::attach_error</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">Copies::attach_error</span></span>:<br/>JSON Metadata - <a href="2-jm.html#SP1_1">§1.1</a>, <a href="2-jm.html#SP1_2">§1.2</a>, <a href="2-jm.html#SP1_3_1">§1.3.1</a>, <a href="2-jm.html#SP1_3_2">§1.3.2</a>, <a href="2-jm.html#SP1_3_3">§1.3.3</a>, <a href="2-jm.html#SP1_3_4">§1.3.4</a>, <a href="2-jm.html#SP1_3_5">§1.3.5</a>, <a href="2-jm.html#SP1_4">§1.4</a>, <a href="2-jm.html#SP1_5">§1.5</a>, <a href="2-jm.html#SP1_6">§1.6</a><br/>Extension Services - <a href="5-es.html#SP2_2">§2.2</a>, <a href="5-es.html#SP2_2_3">§2.2.3</a>, <a href="5-es.html#SP2_2_3_2">§2.2.3.2</a>, <a href="5-es.html#SP2_3">§2.3</a>, <a href="5-es.html#SP2_4_3">§2.4.3</a>, <a href="5-es.html#SP2_4_3_1_1">§2.4.3.1.1</a>, <a href="5-es.html#SP2_4_3_2_1">§2.4.3.2.1</a>, <a href="5-es.html#SP2_5">§2.5</a>, <a href="5-es.html#SP8">§8</a><br/>Kit Services - <a href="5-ks.html#SP4_3">§4.3</a>, <a href="5-ks.html#SP4_3_1">§4.3.1</a>, <a href="5-ks.html#SP4_3_1_1">§4.3.1.1</a>, <a href="5-ks.html#SP4_3_2">§4.3.2</a>, <a href="5-ks.html#SP11">§11</a><br/>Language Services - <a href="5-ls.html#SP2">§2</a>, <a href="5-ls.html#SP2_2">§2.2</a><br/>Project Services - <a href="5-ps2.html#SP2_3">§2.3</a>, <a href="5-ps2.html#SP22_5">§22.5</a>, <a href="5-ps2.html#SP24">§24</a>, <a href="5-ps2.html#SP33">§33</a>, <a href="5-ps2.html#SP34">§34</a>, <a href="5-ps2.html#SP35_1_2_3">§35.1.2.3</a><br/>Source Text - <a href="6-st.html#SP2">§2</a>, <a href="6-st.html#SP3">§3</a>, <a href="6-st.html#SP6">§6</a>, <a href="6-st.html#SP15">§15</a><br/>Headings - <a href="6-hdn.html#SP11_1">§11.1</a>, <a href="6-hdn.html#SP12_1">§12.1</a>, <a href="6-hdn.html#SP12_2">§12.2</a>, <a href="6-hdn.html#SP14_3">§14.3</a>, <a href="6-hdn.html#SP22_1">§22.1</a>, <a href="6-hdn.html#SP23_2">§23.2</a>, <a href="6-hdn.html#SP22_2">§22.2</a>, <a href="6-hdn.html#SP22_3">§22.3</a><br/>Inclusions - <a href="6-inc.html#SP2_2">§2.2</a>, <a href="6-inc.html#SP2_2_1">§2.2.1</a>, <a href="6-inc.html#SP3_1">§3.1</a>, <a href="6-inc.html#SP6_1_1">§6.1.1</a>, <a href="6-inc.html#SP6_1_2">§6.1.2</a>, <a href="6-inc.html#SP7_1">§7.1</a>, <a href="6-inc.html#SP9_1">§9.1</a>, <a href="6-inc.html#SP11">§11</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">copy_error</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CE</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Copies::attach_error</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">Copies::attach_error</span></span>:<br/>JSON Metadata - <a href="2-jm.html#SP1_1">§1.1</a>, <a href="2-jm.html#SP1_2">§1.2</a>, <a href="2-jm.html#SP1_3_1">§1.3.1</a>, <a href="2-jm.html#SP1_3_2">§1.3.2</a>, <a href="2-jm.html#SP1_3_3">§1.3.3</a>, <a href="2-jm.html#SP1_3_4">§1.3.4</a>, <a href="2-jm.html#SP1_3_5">§1.3.5</a>, <a href="2-jm.html#SP1_4">§1.4</a>, <a href="2-jm.html#SP1_5">§1.5</a>, <a href="2-jm.html#SP1_6">§1.6</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP3">§3</a><br/>Extension Services - <a href="5-es.html#SP2_2">§2.2</a>, <a href="5-es.html#SP2_2_3">§2.2.3</a>, <a href="5-es.html#SP2_2_3_2">§2.2.3.2</a>, <a href="5-es.html#SP2_3">§2.3</a>, <a href="5-es.html#SP2_4_3">§2.4.3</a>, <a href="5-es.html#SP2_4_3_1_1">§2.4.3.1.1</a>, <a href="5-es.html#SP2_4_3_2_1">§2.4.3.2.1</a>, <a href="5-es.html#SP2_5">§2.5</a>, <a href="5-es.html#SP8">§8</a><br/>Kit Services - <a href="5-ks.html#SP4_3">§4.3</a>, <a href="5-ks.html#SP4_3_1">§4.3.1</a>, <a href="5-ks.html#SP4_3_1_1">§4.3.1.1</a>, <a href="5-ks.html#SP4_3_2">§4.3.2</a>, <a href="5-ks.html#SP11">§11</a><br/>Language Services - <a href="5-ls.html#SP2">§2</a>, <a href="5-ls.html#SP2_2">§2.2</a><br/>Project Services - <a href="5-ps2.html#SP2_3">§2.3</a>, <a href="5-ps2.html#SP22_5">§22.5</a>, <a href="5-ps2.html#SP24">§24</a>, <a href="5-ps2.html#SP33">§33</a>, <a href="5-ps2.html#SP34">§34</a>, <a href="5-ps2.html#SP35_1_2_3">§35.1.2.3</a><br/>Source Text - <a href="6-st.html#SP2">§2</a>, <a href="6-st.html#SP3">§3</a>, <a href="6-st.html#SP6">§6</a>, <a href="6-st.html#SP15">§15</a><br/>Headings - <a href="6-hdn.html#SP11_1">§11.1</a>, <a href="6-hdn.html#SP12_1">§12.1</a>, <a href="6-hdn.html#SP12_2">§12.2</a>, <a href="6-hdn.html#SP14_3">§14.3</a>, <a href="6-hdn.html#SP22_1">§22.1</a>, <a href="6-hdn.html#SP23_2">§23.2</a>, <a href="6-hdn.html#SP22_2">§22.2</a>, <a href="6-hdn.html#SP22_3">§22.3</a><br/>Inclusions - <a href="6-inc.html#SP2_2">§2.2</a>, <a href="6-inc.html#SP2_2_1">§2.2.1</a>, <a href="6-inc.html#SP3_1">§3.1</a>, <a href="6-inc.html#SP6_1_1">§6.1.1</a>, <a href="6-inc.html#SP6_1_2">§6.1.2</a>, <a href="6-inc.html#SP7_1">§7.1</a>, <a href="6-inc.html#SP9_1">§9.1</a>, <a href="6-inc.html#SP11">§11</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">copy_error</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CE</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">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 attach to"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-ce.html#SP4" class="function-link"><span class="function-syntax">CopyErrors::supply_attached_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">, </span><span class="reserved-syntax">copy_error</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-></span><span class="element-syntax">errors_reading_source_text</span><span class="plain-syntax">);</span>
|
||||
|
|
|
@ -109,7 +109,8 @@ which stores data about extensions used by the Inform compiler.
|
|||
<span class="plain-syntax">}</span>
|
||||
|
||||
<span class="identifier-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">eb_copy_cache</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionBundleManager::new_copy</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">ExtensionBundleManager::new_copy</span></span>:<br/><a href="4-ebm.html#SP5">§5</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><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">) {</span>
|
||||
<span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="function-syntax">ExtensionBundleManager::new_copy</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">ExtensionBundleManager::new_copy</span></span>:<br/><a href="4-ebm.html#SP5">§5</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>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax"> *</span><span class="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">semantic_version_number</span><span class="plain-syntax"> </span><span class="identifier-syntax">apparent_V</span><span class="plain-syntax">) {</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">eb_copy_cache</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">eb_copy_cache</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Dictionaries::new</span><span class="plain-syntax">(16, </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">key</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">key</span><span class="plain-syntax">, </span><span class="string-syntax">"%p"</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">);</span>
|
||||
|
@ -118,13 +119,29 @@ which stores data about extensions used by the Inform compiler.
|
|||
<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">eb_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">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_raw</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">extension_bundle_genre</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">Pathnames::directory_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="identifier-syntax">Str::duplicate</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">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">Pathnames::directory_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">Pathnames::up</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_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="identifier-syntax">N</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="5-es.html#SP2" class="function-link"><span class="function-syntax">Extensions::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">eb_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">eb_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><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VersionNumbers::is_null</span><span class="plain-syntax">(</span><span class="identifier-syntax">apparent_V</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">error_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">error_text</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"an extension in directory format must have a directory name ending "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"'-vN', giving the version number: for example, 'Advanced Algebra-v2_3_6'"</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cps.html#SP5" class="function-link"><span class="function-syntax">Copies::attach_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><a href="2-ce.html#SP2" class="function-link"><span class="function-syntax">CopyErrors::new_T</span></a><span class="plain-syntax">(</span><span class="constant-syntax">EXT_BAD_DIRNAME_CE</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">error_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">error_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="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">VersionNumbers::ne</span><span class="plain-syntax">(</span><span class="identifier-syntax">apparent_V</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">version</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">error_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">error_text</span><span class="plain-syntax">,</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"the version number '%v' is not the one implied by the directory "</span>
|
||||
<span class="plain-syntax"> </span><span class="string-syntax">"name '%S', which would be '%v'"</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">edition</span><span class="plain-syntax">-></span><span class="element-syntax">version</span><span class="plain-syntax">), </span><span class="identifier-syntax">Pathnames::directory_name</span><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">), &</span><span class="identifier-syntax">apparent_V</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><a href="2-cps.html#SP5" class="function-link"><span class="function-syntax">Copies::attach_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><a href="2-ce.html#SP2" class="function-link"><span class="function-syntax">CopyErrors::new_T</span></a><span class="plain-syntax">(</span><span class="constant-syntax">EXT_BAD_DIRNAME_CE</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">error_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">error_text</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</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">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">C</span><span class="plain-syntax">;</span>
|
||||
|
@ -157,7 +174,13 @@ copy name.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">canary</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">"extension_metadata.json"</span><span 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::exists</span><span class="plain-syntax">(</span><span class="identifier-syntax">canary</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">name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">Pathnames::directory_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><a href="4-ebm.html#SP3" class="function-link"><span class="function-syntax">ExtensionBundleManager::new_copy</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="identifier-syntax">N</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">semantic_version_number</span><span class="plain-syntax"> </span><span class="identifier-syntax">V</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">match_results</span><span class="plain-syntax"> </span><span class="identifier-syntax">mr</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Regexp::create_mr</span><span class="plain-syntax">();</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Regexp::match</span><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">name</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"(%c+)-v([0-9_]+)"</span><span class="plain-syntax">)) {</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">name</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[0]);</span>
|
||||
<span class="plain-syntax"> </span><span class="identifier-syntax">V</span><span class="plain-syntax"> = </span><span class="identifier-syntax">VersionNumbers::from_text</span><span class="plain-syntax">(</span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="identifier-syntax">exp</span><span class="plain-syntax">[1]);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-ebm.html#SP3" class="function-link"><span class="function-syntax">ExtensionBundleManager::new_copy</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="identifier-syntax">N</span><span class="plain-syntax">, </span><span class="identifier-syntax">V</span><span class="plain-syntax">);</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||
<span class="plain-syntax">}</span>
|
||||
|
|
|
@ -543,7 +543,7 @@ are immutable, and need to be for the extensions dictionary to work.
|
|||
<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><span class="identifier-syntax">C</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="reserved-syntax">if</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">TEMPORARY_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">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">leaf</span><span class="plain-syntax">, </span><span class="string-syntax">"%S.i7x"</span><span class="plain-syntax">, </span><span class="identifier-syntax">Pathnames::directory_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="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">"%S.i7x"</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">F</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Filenames::in</span><span class="plain-syntax">(</span><span class="identifier-syntax">Pathnames::down</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">"Source"</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">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">leaf</span><span class="plain-syntax">)</span>
|
||||
<span class="plain-syntax"> }</span>
|
||||
|
|
|
@ -72,7 +72,7 @@ in the following structure.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">inform_pipeline</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inform_pipeline is accessed in 1/sm, 2/edt, 2/rqr, 2/nst, 2/jm, 3/bg, 3/ib, 3/is3, 4/em, 5/es, 5/ks, 5/ls, 5/ps2, 5/ts, 6/st, 6/hdn, 6/inc, 6/vmg, 7/dct, 7/ip, 7/ip2 and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure inform_pipeline is accessed in 1/sm, 2/edt, 2/rqr, 2/nst, 2/jm, 3/bg, 3/ib, 3/is3, 4/em, 4/ebm, 5/es, 5/ks, 5/ls, 5/ps2, 5/ts, 6/st, 6/hdn, 6/inc, 6/vmg, 7/dct, 7/ip, 7/ip2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></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>
|
||||
|
||||
|
|
|
@ -93,7 +93,7 @@ function togglePopup(material_id) {
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">inform_project</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inform_project is accessed in 1/sm, 2/edt, 2/rqr, 2/nst, 2/jm, 3/bg, 3/ib, 3/is3, 4/em, 4/pbm, 4/pfm, 5/es, 5/ks, 5/ls, 5/ps, 5/ts, 6/st, 6/hdn, 6/inc, 6/vmg, 7/tm, 7/dct, 7/cns, 7/ip, 7/ip2 and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure inform_project is accessed in 1/sm, 2/edt, 2/rqr, 2/nst, 2/jm, 3/bg, 3/ib, 3/is3, 4/em, 4/ebm, 4/pbm, 4/pfm, 5/es, 5/ks, 5/ls, 5/ps, 5/ts, 6/st, 6/hdn, 6/inc, 6/vmg, 7/tm, 7/dct, 7/cns, 7/ip, 7/ip2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></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.
|
||||
It doesn't actually do any scanning to speak of, in fact: we may eventually
|
||||
learn a lot about the project, but for now we simply initialise to bland
|
||||
|
|
|
@ -72,7 +72,7 @@ stored in the following structure.
|
|||
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
|
||||
<span class="plain-syntax">} </span><span class="reserved-syntax">inform_template</span><span class="plain-syntax">;</span>
|
||||
</pre>
|
||||
<ul class="endnotetexts"><li>The structure inform_template is accessed in 1/sm, 2/edt, 2/rqr, 2/nst, 2/jm, 3/bg, 3/ib, 3/is3, 4/em, 5/es, 5/ks, 5/ls, 5/ps, 5/ps2, 6/st, 6/hdn, 6/inc, 6/vmg, 7/dct, 7/ip, 7/ip2 and here.</li></ul>
|
||||
<ul class="endnotetexts"><li>The structure inform_template is accessed in 1/sm, 2/edt, 2/rqr, 2/nst, 2/jm, 3/bg, 3/ib, 3/is3, 4/em, 4/ebm, 5/es, 5/ks, 5/ls, 5/ps, 5/ps2, 6/st, 6/hdn, 6/inc, 6/vmg, 7/dct, 7/ip, 7/ip2 and here.</li></ul>
|
||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></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>
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ fields are blank.
|
|||
@e OPEN_FAILED_CE from 1
|
||||
@e METADATA_MALFORMED_CE
|
||||
@e EXT_MISWORDED_CE
|
||||
@e EXT_BAD_DIRNAME_CE
|
||||
@e EXT_TITLE_TOO_LONG_CE
|
||||
@e EXT_AUTHOR_TOO_LONG_CE
|
||||
@e LEXER_CE /* an error generated by the |words| module */
|
||||
|
@ -127,6 +128,7 @@ void CopyErrors::write(OUTPUT_STREAM, copy_error *CE) {
|
|||
switch (CE->error_category) {
|
||||
case OPEN_FAILED_CE: WRITE("unable to open file %f", CE->details_file); break;
|
||||
case EXT_MISWORDED_CE: WRITE("extension misworded: %S", CE->details); break;
|
||||
case EXT_BAD_DIRNAME_CE: WRITE("extension directory name wrong: %S", CE->details); break;
|
||||
case METADATA_MALFORMED_CE: WRITE("%S has incorrect metadata: %S",
|
||||
CE->copy->edition->work->genre->genre_name, CE->details); break;
|
||||
case EXT_TITLE_TOO_LONG_CE: WRITE("title too long: %d characters (max is %d)",
|
||||
|
|
|
@ -49,7 +49,8 @@ inform_extension *ExtensionBundleManager::from_copy(inbuild_copy *C) {
|
|||
}
|
||||
|
||||
dictionary *eb_copy_cache = NULL;
|
||||
inbuild_copy *ExtensionBundleManager::new_copy(text_stream *name, pathname *P, inbuild_nest *N) {
|
||||
inbuild_copy *ExtensionBundleManager::new_copy(text_stream *name, pathname *P,
|
||||
inbuild_nest *N, semantic_version_number apparent_V) {
|
||||
if (eb_copy_cache == NULL) eb_copy_cache = Dictionaries::new(16, FALSE);
|
||||
TEMPORARY_TEXT(key)
|
||||
WRITE_TO(key, "%p", P);
|
||||
|
@ -58,13 +59,29 @@ inbuild_copy *ExtensionBundleManager::new_copy(text_stream *name, pathname *P, i
|
|||
C = Dictionaries::read_value(eb_copy_cache, key);
|
||||
if (C == NULL) {
|
||||
inbuild_work *work = Works::new_raw(extension_bundle_genre,
|
||||
Str::duplicate(Pathnames::directory_name(P)),
|
||||
Str::duplicate(name),
|
||||
Str::duplicate(Pathnames::directory_name(Pathnames::up(P))));
|
||||
inbuild_edition *edition = Editions::new(work, VersionNumbers::null());
|
||||
C = Copies::new_in_path(edition, P, N);
|
||||
Extensions::scan(C);
|
||||
Dictionaries::create(eb_copy_cache, key);
|
||||
Dictionaries::write_value(eb_copy_cache, key, C);
|
||||
if (VersionNumbers::is_null(apparent_V)) {
|
||||
TEMPORARY_TEXT(error_text)
|
||||
WRITE_TO(error_text,
|
||||
"an extension in directory format must have a directory name ending "
|
||||
"'-vN', giving the version number: for example, 'Advanced Algebra-v2_3_6'");
|
||||
Copies::attach_error(C, CopyErrors::new_T(EXT_BAD_DIRNAME_CE, -1, error_text));
|
||||
DISCARD_TEXT(error_text)
|
||||
} else if (VersionNumbers::ne(apparent_V, C->edition->version)) {
|
||||
TEMPORARY_TEXT(error_text)
|
||||
WRITE_TO(error_text,
|
||||
"the version number '%v' is not the one implied by the directory "
|
||||
"name '%S', which would be '%v'",
|
||||
&(C->edition->version), Pathnames::directory_name(P), &apparent_V);
|
||||
Copies::attach_error(C, CopyErrors::new_T(EXT_BAD_DIRNAME_CE, -1, error_text));
|
||||
DISCARD_TEXT(error_text)
|
||||
}
|
||||
}
|
||||
DISCARD_TEXT(key)
|
||||
return C;
|
||||
|
@ -95,7 +112,13 @@ inbuild_copy *ExtensionBundleManager::claim_folder_as_copy(pathname *P, inbuild_
|
|||
filename *canary = Filenames::in(P, I"extension_metadata.json");
|
||||
if (TextFiles::exists(canary)) {
|
||||
text_stream *name = Str::duplicate(Pathnames::directory_name(P));
|
||||
return ExtensionBundleManager::new_copy(name, P, N);
|
||||
semantic_version_number V = VersionNumbers::null();
|
||||
match_results mr = Regexp::create_mr();
|
||||
if (Regexp::match(&mr, name, L"(%c+)-v([0-9_]+)")) {
|
||||
name = Str::duplicate(mr.exp[0]);
|
||||
V = VersionNumbers::from_text(mr.exp[1]);
|
||||
}
|
||||
return ExtensionBundleManager::new_copy(name, P, N, V);
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -389,7 +389,7 @@ filename *Extensions::main_source_file(inbuild_copy *C) {
|
|||
pathname *P = C->location_if_path;
|
||||
if (P) {
|
||||
TEMPORARY_TEXT(leaf)
|
||||
WRITE_TO(leaf, "%S.i7x", Pathnames::directory_name(P));
|
||||
WRITE_TO(leaf, "%S.i7x", C->edition->work->title);
|
||||
F = Filenames::in(Pathnames::down(P, I"Source"), leaf);
|
||||
DISCARD_TEXT(leaf)
|
||||
}
|
||||
|
|
|
@ -307,6 +307,7 @@ compiler via Delia scripts in |intest|.
|
|||
@e SIGILS_CLSW
|
||||
@e TEST_OUTPUT_CLSW
|
||||
@e SILENCE_CLSW
|
||||
@e CHECK_RESOURCES_CLSW
|
||||
|
||||
@<Register command-line arguments@> =
|
||||
CommandLine::begin_group(INFORM_TESTING_CLSG, I"for testing and debugging inform7");
|
||||
|
@ -322,6 +323,8 @@ compiler via Delia scripts in |intest|.
|
|||
L"display progress percentages", TRUE);
|
||||
CommandLine::declare_boolean_switch(SIGILS_CLSW, L"sigils", 1,
|
||||
L"print Problem message sigils", FALSE);
|
||||
CommandLine::declare_boolean_switch(CHECK_RESOURCES_CLSW, L"resource-checking", 1,
|
||||
L"check that figures, sounds and similar resources exist at compile-time", TRUE);
|
||||
CommandLine::declare_boolean_switch(DIAGNOSTICS_CLSW, L"diagnostics", 2,
|
||||
L"if no problems occur, write diagnostics files to directory X", FALSE);
|
||||
CommandLine::declare_switch(REQUIRE_PROBLEM_CLSW, L"require-problem", 2,
|
||||
|
@ -349,6 +352,7 @@ void Main::switch(int id, int val, text_stream *arg, void *state) {
|
|||
case SIGILS_CLSW: ProblemSigils::echo_sigils(val); break;
|
||||
case REQUIRE_PROBLEM_CLSW: ProblemSigils::require(arg); break;
|
||||
case DIAGNOSTICS_CLSW: diagnostics_path = Pathnames::from_text(arg); break;
|
||||
case CHECK_RESOURCES_CLSW: ResourceFinder::set_mode(val); break;
|
||||
case TEST_OUTPUT_CLSW: InternalTests::set_file(Filenames::from_text(arg)); break;
|
||||
case SILENCE_CLSW: silence_is_golden = TRUE; break;
|
||||
}
|
||||
|
|
|
@ -3,45 +3,46 @@ inform7: a compiler from source text to Inter code
|
|||
Usage: inform7 [OPTIONS]
|
||||
|
||||
for translating Inform source text to Inter:
|
||||
-basic use Basic Inform language
|
||||
-case X make any source links refer to the source in extension example X
|
||||
-census perform an extensions census (default is -no-census)
|
||||
-debug compile with debugging features even on a Release (default is -no-debug)
|
||||
-format=X compile to the format X (default is Inform6/32)
|
||||
-o X use file X as the compiled output (not for use with -project)
|
||||
-project X work within the Inform project X
|
||||
-release compile a version suitable for a Release build (default is -no-release)
|
||||
-rng fix the random number generator of the story file (for testing) (default is -no-rng)
|
||||
-source X use file X as the Inform source text
|
||||
-basic use Basic Inform language
|
||||
-case X make any source links refer to the source in extension example X
|
||||
-census perform an extensions census (default is -no-census)
|
||||
-debug compile with debugging features even on a Release (default is -no-debug)
|
||||
-format=X compile to the format X (default is Inform6/32)
|
||||
-o X use file X as the compiled output (not for use with -project)
|
||||
-project X work within the Inform project X
|
||||
-release compile a version suitable for a Release build (default is -no-release)
|
||||
-rng fix the random number generator of the story file (for testing) (default is -no-rng)
|
||||
-source X use file X as the Inform source text
|
||||
|
||||
for locating resources in the file system:
|
||||
-external X use X as the user's home for installed material such as extensions
|
||||
-internal X use X as the location of built-in material such as the Standard Rules
|
||||
-nest X add the nest at pathname X to the search list
|
||||
-transient X use X for transient data such as the extensions census
|
||||
-external X use X as the user's home for installed material such as extensions
|
||||
-internal X use X as the location of built-in material such as the Standard Rules
|
||||
-nest X add the nest at pathname X to the search list
|
||||
-transient X use X for transient data such as the extensions census
|
||||
|
||||
for tweaking code generation from Inter:
|
||||
-kit X include Inter code from the kit called X
|
||||
-pipeline X specify code-generation pipeline by name (default is "compile")
|
||||
-pipeline-file X specify code-generation pipeline as file X
|
||||
-variable X set pipeline variable X (in form name=value)
|
||||
-kit X include Inter code from the kit called X
|
||||
-pipeline X specify code-generation pipeline by name (default is "compile")
|
||||
-pipeline-file X specify code-generation pipeline as file X
|
||||
-variable X set pipeline variable X (in form name=value)
|
||||
|
||||
for testing and debugging inform7:
|
||||
-no-census-update don't update the extensions census (default is -census-update)
|
||||
-crash-all intentionally crash on Problem messages, for backtracing (default is -no-crash-all)
|
||||
-diagnostics X if no problems occur, write diagnostics files to directory X (default is -no-diagnostics)
|
||||
-no-index don't produce an Index (default is -index)
|
||||
-no-problems don't produce (an HTML) Problems report page (default is -problems)
|
||||
-no-progress don't display progress percentages (default is -progress)
|
||||
-require-problem X return 0 unless exactly this Problem message is generated
|
||||
-sigils print Problem message sigils (default is -no-sigils)
|
||||
-silence practice 'silence is golden': print only Unix-style errors (default is -no-silence)
|
||||
-test-output X write output of internal tests to file X
|
||||
-no-census-update don't update the extensions census (default is -census-update)
|
||||
-crash-all intentionally crash on Problem messages, for backtracing (default is -no-crash-all)
|
||||
-diagnostics X if no problems occur, write diagnostics files to directory X (default is -no-diagnostics)
|
||||
-no-index don't produce an Index (default is -index)
|
||||
-no-problems don't produce (an HTML) Problems report page (default is -problems)
|
||||
-no-progress don't display progress percentages (default is -progress)
|
||||
-require-problem X return 0 unless exactly this Problem message is generated
|
||||
-no-resource-checking don't check that figures, sounds and similar resources exist at compile-time (default is -resource-checking)
|
||||
-sigils print Problem message sigils (default is -no-sigils)
|
||||
-silence practice 'silence is golden': print only Unix-style errors (default is -no-silence)
|
||||
-test-output X write output of internal tests to file X
|
||||
|
||||
-at X specify that this tool is installed at X
|
||||
-crash intentionally crash on internal errors, for backtracing (default is -no-crash)
|
||||
-fixtime pretend the time is 11 a.m. on 28 March 2016 for testing (default is -no-fixtime)
|
||||
-help print this help information
|
||||
-locale X set locales as 'L=E', L being shell or console, E platform, utf-8 or iso-latin1
|
||||
-log X write the debugging log to include diagnostics on X
|
||||
-version print out version number
|
||||
-at X specify that this tool is installed at X
|
||||
-crash intentionally crash on internal errors, for backtracing (default is -no-crash)
|
||||
-fixtime pretend the time is 11 a.m. on 28 March 2016 for testing (default is -no-fixtime)
|
||||
-help print this help information
|
||||
-locale X set locales as 'L=E', L being shell or console, E platform, utf-8 or iso-latin1
|
||||
-log X write the debugging log to include diagnostics on X
|
||||
-version print out version number
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
Total memory consumption was 121432K = 119 MB
|
||||
Total memory consumption was 121434K = 119 MB
|
||||
|
||||
---- was used for 2058107 objects, in 366641 frames in 0 x 800K = 0K = 0 MB:
|
||||
---- was used for 2058109 objects, in 366643 frames in 0 x 800K = 0K = 0 MB:
|
||||
|
||||
33.6% inter_tree_node_array 58 x 8192 = 475136 objects, 41813824 bytes
|
||||
21.0% text_stream_array 4649 x 100 = 464900 objects, 26183168 bytes
|
||||
|
@ -136,7 +136,7 @@ Total memory consumption was 121432K = 119 MB
|
|||
---- value_property_data 84 objects, 4704 bytes
|
||||
---- parsing_pp_data 96 objects, 4608 bytes
|
||||
---- build_script 138 objects, 4416 bytes
|
||||
---- command_line_switch 49 objects, 3920 bytes
|
||||
---- command_line_switch 51 objects, 4080 bytes
|
||||
---- compatibility_specification 80 objects, 3840 bytes
|
||||
---- parse_node_annotation_type 119 objects, 3808 bytes
|
||||
---- submodule_request 85 objects, 3400 bytes
|
||||
|
@ -247,7 +247,7 @@ Total memory consumption was 121432K = 119 MB
|
|||
|
||||
100.0% was used for memory not allocated for objects:
|
||||
|
||||
56.9% text stream storage 70762712 bytes in 482118 claims
|
||||
56.9% text stream storage 70764524 bytes in 482127 claims
|
||||
4.2% dictionary storage 5335040 bytes in 7661 claims
|
||||
---- sorting 1696 bytes in 183 claims
|
||||
5.7% source text 7200000 bytes in 3 claims
|
||||
|
@ -265,5 +265,5 @@ Total memory consumption was 121432K = 119 MB
|
|||
---- code generation workspace for objects 3480 bytes in 19 claims
|
||||
0.2% emitter array storage 280544 bytes in 2001 claims
|
||||
|
||||
-150.-4% was overhead - -187098104 bytes = -182712K = -178 MB
|
||||
-150.-4% was overhead - -187098264 bytes = -182713K = -178 MB
|
||||
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
100.0% in inform7 run
|
||||
70.5% in compilation to Inter
|
||||
49.9% in //Sequence::undertake_queued_tasks//
|
||||
4.8% in //MajorNodes::pre_pass//
|
||||
3.4% in //MajorNodes::pass_1//
|
||||
1.9% in //ImperativeDefinitions::assess_all//
|
||||
1.5% in //RTKindConstructors::compile//
|
||||
70.9% in compilation to Inter
|
||||
50.3% in //Sequence::undertake_queued_tasks//
|
||||
4.9% in //MajorNodes::pre_pass//
|
||||
3.3% in //MajorNodes::pass_1//
|
||||
1.7% in //ImperativeDefinitions::assess_all//
|
||||
1.3% in //RTKindConstructors::compile//
|
||||
1.3% in //RTPhrasebook::compile_entries//
|
||||
1.1% in //Sequence::lint_inter//
|
||||
0.5% in //MajorNodes::pass_2//
|
||||
|
@ -16,10 +16,9 @@
|
|||
0.1% in //InferenceSubjects::emit_all//
|
||||
0.1% in //RTKindConstructors::compile_permissions//
|
||||
0.1% in //Task::make_built_in_kind_constructors//
|
||||
0.1% in //World::stages_II_and_III//
|
||||
2.7% not specifically accounted for
|
||||
26.5% in running Inter pipeline
|
||||
10.7% in step 14/15: generate inform6 -> auto.inf
|
||||
2.8% not specifically accounted for
|
||||
25.8% in running Inter pipeline
|
||||
10.1% in step 14/15: generate inform6 -> auto.inf
|
||||
5.7% in step 5/15: load-binary-kits
|
||||
5.3% in step 6/15: make-synoptic-module
|
||||
1.7% in step 9/15: make-identifiers-unique
|
||||
|
@ -28,6 +27,6 @@
|
|||
0.3% in step 7/15: shorten-wiring
|
||||
0.3% in step 8/15: detect-indirect-calls
|
||||
0.1% in step 11/15: eliminate-redundant-labels
|
||||
1.1% not specifically accounted for
|
||||
2.6% in supervisor
|
||||
0.2% not specifically accounted for
|
||||
0.9% not specifically accounted for
|
||||
2.5% in supervisor
|
||||
0.6% not specifically accounted for
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "BasicInformExtrasKit",
|
||||
"version": "10.2.0-beta+6W18"
|
||||
"version": "10.2.0-beta+6W19"
|
||||
},
|
||||
"kit-details": {
|
||||
"has-priority": 1
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "BasicInformKit",
|
||||
"version": "10.2.0-beta+6W18"
|
||||
"version": "10.2.0-beta+6W19"
|
||||
},
|
||||
"needs": [ {
|
||||
"unless": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "CommandParserKit",
|
||||
"version": "10.2.0-beta+6W18"
|
||||
"version": "10.2.0-beta+6W19"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "EnglishLanguageKit",
|
||||
"version": "10.2.0-beta+6W18"
|
||||
"version": "10.2.0-beta+6W19"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
"is": {
|
||||
"type": "kit",
|
||||
"title": "WorldModelKit",
|
||||
"version": "10.2.0-beta+6W18"
|
||||
"version": "10.2.0-beta+6W19"
|
||||
},
|
||||
"needs": [ {
|
||||
"need": {
|
||||
|
|
|
@ -97,9 +97,9 @@
|
|||
mkdir: $PATH/_Results_Ideal
|
||||
|
||||
if: $CASE PM_Map%c*
|
||||
set: $I7OPTIONS = -format=$FORMAT -no-progress -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-census-update -internal $INTERNAL
|
||||
set: $I7OPTIONS = -format=$FORMAT -no-progress -no-resource-checking -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-census-update -internal $INTERNAL
|
||||
else
|
||||
set: $I7OPTIONS = -format=$FORMAT -no-progress -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-index -internal $INTERNAL
|
||||
set: $I7OPTIONS = -format=$FORMAT -no-progress -no-resource-checking -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-index -internal $INTERNAL
|
||||
endif
|
||||
|
||||
set: $PIPELINE =
|
||||
|
@ -261,9 +261,9 @@
|
|||
mkdir: $PATH/_Results_Ideal
|
||||
|
||||
if: $CASE PM_Map%c*
|
||||
set: $I7OPTIONS = -basic -format=$FORMAT -no-progress -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -internal $INTERNAL
|
||||
set: $I7OPTIONS = -basic -format=$FORMAT -no-progress -no-resource-checking -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -internal $INTERNAL
|
||||
else
|
||||
set: $I7OPTIONS = -basic -format=$FORMAT -no-progress -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-index -internal $INTERNAL
|
||||
set: $I7OPTIONS = -basic -format=$FORMAT -no-progress -no-resource-checking -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-index -internal $INTERNAL
|
||||
endif
|
||||
|
||||
set: $PIPELINE =
|
||||
|
@ -294,7 +294,7 @@
|
|||
mkdir: $PATH/_Textual
|
||||
mkdir: $PATH/_C
|
||||
|
||||
set: $I7OPTIONS = -basic -format=$FORMAT -no-progress -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-index -internal $INTERNAL
|
||||
set: $I7OPTIONS = -basic -format=$FORMAT -no-progress -no-resource-checking -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-index -internal $INTERNAL
|
||||
set: $I7CLIB = inform7/Internal/Miscellany
|
||||
|
||||
set: $I7CONSOLE = $WORK/Example.inform/Build/i7_output.txt
|
||||
|
@ -408,7 +408,7 @@
|
|||
mkdir: $PATH/_Results_Actual
|
||||
mkdir: $PATH/_Results_Ideal
|
||||
|
||||
set: $I7OPTIONS = -basic -format=$FORMAT -no-progress -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-index -internal $INTERNAL
|
||||
set: $I7OPTIONS = -basic -format=$FORMAT -no-progress -no-resource-checking -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-index -internal $INTERNAL
|
||||
|
||||
set: $PIPELINE =
|
||||
|
||||
|
@ -416,7 +416,7 @@
|
|||
mkdir: $PATH/_Textual
|
||||
mkdir: $PATH/_C
|
||||
|
||||
set: $I7OPTIONS = -basic -format=$FORMAT -no-progress -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-index -internal $INTERNAL
|
||||
set: $I7OPTIONS = -basic -format=$FORMAT -no-progress -no-resource-checking -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-index -internal $INTERNAL
|
||||
set: $I7CLIB = inform7/Internal/Miscellany
|
||||
|
||||
set: $I7CONSOLE = $WORK/Example.inform/Build/i7_output.txt
|
||||
|
@ -525,9 +525,9 @@
|
|||
|
||||
set: $PIPELINE =
|
||||
if: $CASE %c*-BIP
|
||||
set: $I7OPTIONS = -basic -format=$FORMAT -no-progress -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-index -internal $INTERNAL
|
||||
set: $I7OPTIONS = -basic -format=$FORMAT -no-progress -no-resource-checking -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-index -internal $INTERNAL
|
||||
else
|
||||
set: $I7OPTIONS = -format=$FORMAT -no-progress -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-index -internal $INTERNAL
|
||||
set: $I7OPTIONS = -format=$FORMAT -no-progress -no-resource-checking -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-index -internal $INTERNAL
|
||||
endif
|
||||
|
||||
set: $A = $PATH/_Results_Actual/$CASE.txt
|
||||
|
@ -580,7 +580,7 @@
|
|||
copy: $WORKSPACE/Samples/Powermac.aiff $WORK/Example.materials/Sounds/Powermac.aiff
|
||||
endif
|
||||
|
||||
set: $I7OPTIONS = -fixtime -format=$FORMAT -no-progress -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-index -internal $INTERNAL -release
|
||||
set: $I7OPTIONS = -fixtime -format=$FORMAT -no-progress -no-resource-checking -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-index -internal $INTERNAL -release
|
||||
|
||||
mkdir: $WORK/Transient
|
||||
step: find $WORK/Transient -mindepth 1 -delete
|
||||
|
@ -625,7 +625,7 @@
|
|||
set: $FORMAT = Inform6/16
|
||||
set: $EXT = z8
|
||||
endif
|
||||
set: $I7OPTIONS = -format=$FORMAT -no-progress -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-index -internal $INTERNAL
|
||||
set: $I7OPTIONS = -format=$FORMAT -no-progress -no-resource-checking -fixtime -rng -sigils -log nothing -external inform7/Tests -transient $WORK/Transient -no-index -internal $INTERNAL
|
||||
|
||||
! Now we extract the source text from whatever file originated the test
|
||||
! case: this is a non-trivial operation when the file is an Extension or
|
||||
|
|
|
@ -387,9 +387,6 @@ though at most one will actually work. This is also where we generate the EPS
|
|||
file of the map, if so requested; a bit anomalously, it's the only file in
|
||||
Materials but outside Release which we write to.
|
||||
|
||||
This is also where the originals (not the released copies) of the Figures
|
||||
and Sounds, if any, live: in their own subfolders.
|
||||
|
||||
=
|
||||
filename *Task::large_cover_art_file(int JPEG) {
|
||||
if (inform7_task == NULL) internal_error("there is no current task");
|
||||
|
@ -401,17 +398,23 @@ filename *Task::epsmap_file(void) {
|
|||
return Filenames::in(inform7_task->materials, I"Inform Map.eps");
|
||||
}
|
||||
|
||||
pathname *Task::figures_path(void) {
|
||||
@ This is also where the originals (not the released copies) of the Figures
|
||||
and Sounds, if any, live: in their own subfolders, or "departments".
|
||||
|
||||
=
|
||||
pathname *Task::resources_path(void) {
|
||||
if (inform7_task == NULL) internal_error("there is no current task");
|
||||
return Pathnames::down(inform7_task->materials, I"Figures");
|
||||
return inform7_task->materials;
|
||||
}
|
||||
pathname *Task::sounds_path(void) {
|
||||
if (inform7_task == NULL) internal_error("there is no current task");
|
||||
return Pathnames::down(inform7_task->materials, I"Sounds");
|
||||
|
||||
text_stream *Task::figures_department(void) {
|
||||
return I"Figures";
|
||||
}
|
||||
pathname *Task::data_path(void) {
|
||||
if (inform7_task == NULL) internal_error("there is no current task");
|
||||
return Pathnames::down(inform7_task->materials, I"Data");
|
||||
text_stream *Task::sounds_department(void) {
|
||||
return I"Sounds";
|
||||
}
|
||||
text_stream *Task::data_department(void) {
|
||||
return I"Data";
|
||||
}
|
||||
|
||||
@ On a release run, Inblorb will populate the Release subfolder of Materials;
|
||||
|
|
|
@ -33,6 +33,16 @@ void SourceProblems::issue_problems_arising(inbuild_copy *C) {
|
|||
"Specifically, %2.");
|
||||
Problems::issue_problem_end();
|
||||
break;
|
||||
case EXT_BAD_DIRNAME_CE:
|
||||
Problems::quote_work(1, CE->copy->found_by->work);
|
||||
Problems::quote_stream(2, CE->details);
|
||||
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(Untestable));
|
||||
Problems::issue_problem_segment(
|
||||
"The extension %1, which your source text makes use of, is stored "
|
||||
"in a directory (which is fine), but does not follow the rules for "
|
||||
"what that directory is called (which is not fine). Specifically, %2.");
|
||||
Problems::issue_problem_end();
|
||||
break;
|
||||
case METADATA_MALFORMED_CE:
|
||||
if (CE->copy->found_by) {
|
||||
Problems::quote_work(1, CE->copy->found_by->work);
|
||||
|
|
|
@ -110,11 +110,15 @@ void Figures::register_figure(wording W, wording FN) {
|
|||
return;
|
||||
}
|
||||
filename *figure_file = NULL;
|
||||
if (wn >= 0) figure_file = Filenames::in(Task::figures_path(), leaf);
|
||||
if (wn >= 0) {
|
||||
figure_file = ResourceFinder::find_resource(Task::figures_department(), leaf, FN);
|
||||
}
|
||||
DISCARD_TEXT(leaf)
|
||||
Figures::figures_create(W, id, figure_file, <<alttext>>);
|
||||
LOGIF(MULTIMEDIA_CREATIONS, "Created figure <%W> = filename '%f' = resource ID %d\n",
|
||||
W, figure_file, id);
|
||||
if ((wn < 0) || (figure_file)) {
|
||||
Figures::figures_create(W, id, figure_file, <<alttext>>);
|
||||
LOGIF(MULTIMEDIA_CREATIONS, "Created figure <%W> = filename '%f' = resource ID %d\n",
|
||||
W, figure_file, id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -71,7 +71,7 @@ instance *InternalFiles::files_create(int format, wording W, wording FN) {
|
|||
TEMPORARY_TEXT(leaf)
|
||||
Word::dequote(Wordings::first_wn(FN));
|
||||
WRITE_TO(leaf, "%N", Wordings::first_wn(FN));
|
||||
ifd->local_filename = Filenames::in(Task::data_path(), leaf);
|
||||
ifd->local_filename = ResourceFinder::find_resource(Task::data_department(), leaf, FN);
|
||||
DISCARD_TEXT(leaf)
|
||||
return I;
|
||||
}
|
||||
|
|
71
inform7/multimedia-module/Chapter 2/Resource Finder.w
Normal file
71
inform7/multimedia-module/Chapter 2/Resource Finder.w
Normal file
|
@ -0,0 +1,71 @@
|
|||
[ResourceFinder::] Resource Finder.
|
||||
|
||||
To find resources such as sound and image files.
|
||||
|
||||
@h Resource finder.
|
||||
This simple function is shared by the code for figures, sound effects and
|
||||
internal data files. When Inform reads a sentence such as:
|
||||
= (text as Inform 7)
|
||||
Sound of Organ is the file "Passacaglia.mid".
|
||||
=
|
||||
it looks for the file first in the |Sounds| folder of the materials for the
|
||||
project, and then, if it isn't there, in the |Sounds| folder of the materials
|
||||
for the extension in which the sentence occurs (if it occurs in an extension).
|
||||
Here |"Sounds"| is what we will call the department name for sound effects.
|
||||
|
||||
This code was introduced as part of the implementation of IE-0001, and for
|
||||
the first time throws problem messages is named resources do not exist.
|
||||
|
||||
=
|
||||
int check_resources_are_present = TRUE;
|
||||
|
||||
void ResourceFinder::set_mode(int val) {
|
||||
check_resources_are_present = val; /* set by |-resource-checking| at command line */
|
||||
}
|
||||
|
||||
filename *ResourceFinder::find_resource(text_stream *department, text_stream *leaf, wording W) {
|
||||
inform_extension *E = NULL;
|
||||
if (Wordings::nonempty(W))
|
||||
E = Extensions::corresponding_to(Lexer::file_of_origin(Wordings::first_wn(W)));
|
||||
|
||||
pathname *P1 = Pathnames::down(Task::resources_path(), department);
|
||||
pathname *P2 = E?(Pathnames::down(Extensions::materials_path(E), department)):NULL;
|
||||
if (P1) {
|
||||
filename *F = Filenames::in(P1, leaf);
|
||||
FILE *HANDLE = Filenames::fopen(F, "rb");
|
||||
if (HANDLE) {
|
||||
fclose(HANDLE);
|
||||
return F;
|
||||
}
|
||||
}
|
||||
if (P2) {
|
||||
filename *F = Filenames::in(P2, leaf);
|
||||
FILE *HANDLE = Filenames::fopen(F, "rb");
|
||||
if (HANDLE) {
|
||||
fclose(HANDLE);
|
||||
return F;
|
||||
}
|
||||
}
|
||||
|
||||
if (check_resources_are_present == FALSE) return Filenames::in(P1, leaf);
|
||||
|
||||
LOG("Tried in %p\n", P1);
|
||||
if (P2) LOG("And also in %p\n", P2);
|
||||
|
||||
Problems::quote_source(1, current_sentence);
|
||||
Problems::quote_wording(2, W);
|
||||
Problems::quote_stream(3, department);
|
||||
StandardProblems::handmade_problem(Task::syntax_tree(), _p_(Untestable));
|
||||
Problems::issue_problem_segment(
|
||||
"You wrote %1, which means I am looking for a file called %2, but I'm "
|
||||
"unable to find it. ");
|
||||
if (P2)
|
||||
Problems::issue_problem_segment(
|
||||
"The file should either be in the '%3' subfolder of the materials folder, "
|
||||
"or in the 'Materials/%3' subfolder of this extension.");
|
||||
else
|
||||
Problems::issue_problem_segment(
|
||||
"The file should be in the '%3' subfolder of the materials folder.");
|
||||
Problems::issue_problem_end();
|
||||
return NULL;
|
||||
}
|
|
@ -102,11 +102,13 @@ void Sounds::register_sound(wording W, wording FN) {
|
|||
"because it is either empty or contains only spaces.");
|
||||
return;
|
||||
}
|
||||
filename *sound_file = Filenames::in(Task::sounds_path(), leaf);
|
||||
filename *sound_file = ResourceFinder::find_resource(Task::sounds_department(), leaf, FN);
|
||||
DISCARD_TEXT(leaf)
|
||||
Sounds::sounds_create(W, id, sound_file, <<alttext>>);
|
||||
LOGIF(MULTIMEDIA_CREATIONS,
|
||||
"Created sound effect <%W> = filename '%N' = resource ID %d\n", W, wn, id);
|
||||
if (sound_file) {
|
||||
Sounds::sounds_create(W, id, sound_file, <<alttext>>);
|
||||
LOGIF(MULTIMEDIA_CREATIONS,
|
||||
"Created sound effect <%W> = filename '%N' = resource ID %d\n", W, wn, id);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -11,6 +11,7 @@ Chapter 1: Starting Up
|
|||
Multimedia Module
|
||||
|
||||
Chapter 2: Multimedia Features
|
||||
Resource Finder
|
||||
Figures
|
||||
Sound Effects
|
||||
External Files
|
||||
|
|
|
@ -233,15 +233,15 @@ to match this width, preserving the aspect ratio.
|
|||
WRITE_TO(description, "<br>");
|
||||
TEMPORARY_TEXT(sample)
|
||||
WRITE_TO(sample, "%d.%01dkHz", pSampleRate/1000, (pSampleRate%1000)/100);
|
||||
Localisation::roman_t(OUT, LD, I"Index.Elements.Fi.Sampled", sample);
|
||||
Localisation::roman_t(description, LD, I"Index.Elements.Fi.Sampled", sample);
|
||||
DISCARD_TEXT(sample)
|
||||
WRITE_TO(description, " ");
|
||||
if (pChannels == 1) Localisation::roman(OUT, LD, I"Index.Elements.Fi.Mono");
|
||||
else Localisation::roman(OUT, LD, I"Index.Elements.Fi.Stereo");
|
||||
else Localisation::roman(description, LD, I"Index.Elements.Fi.Stereo");
|
||||
WRITE_TO(description, " (");
|
||||
TEMPORARY_TEXT(bitrate)
|
||||
WRITE_TO(bitrate, "%d.%01d", pBitsPerSecond/1000, (pSampleRate%1000)/100);
|
||||
Localisation::roman_t(OUT, LD, I"Index.Elements.Fi.BitRate", bitrate);
|
||||
Localisation::roman_t(description, LD, I"Index.Elements.Fi.BitRate", bitrate);
|
||||
DISCARD_TEXT(bitrate)
|
||||
WRITE_TO(description, ")");
|
||||
|
||||
|
|
Loading…
Reference in a new issue