mirror of
https://github.com/ganelson/inform.git
synced 2024-06-26 04:00:43 +03:00
Improved Genre API
This commit is contained in:
parent
b254a8d41f
commit
47f29c9e86
|
@ -123,30 +123,35 @@ directories holding a set of files.
|
|||
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">>edition</span><span class="plain">-</span><span class="element">>work</span><span class="plain">-</span><span class="element">>genre</span><span class="plain">, </span><span class="constant">GENRE_GO_OPERATIONAL_MTID</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Copies::scan</span><span class="plain">(</span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">) {</span>
|
||||
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">>edition</span><span class="plain">-</span><span class="element">>work</span><span class="plain">-</span><span class="element">>genre</span><span class="plain">, </span><span class="constant">GENRE_SCAN_COPY_MTID</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Copies::build</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">build_methodology</span><span class="plain"> *</span><span class="identifier">BM</span><span class="plain">) {</span>
|
||||
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">>edition</span><span class="plain">-</span><span class="element">>work</span><span class="plain">-</span><span class="element">>genre</span><span class="plain">, </span><span class="constant">GENRE_BUILD_COPY_MTID</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">BM</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
<span class="reserved">build_vertex</span><span class="plain"> *</span><span class="identifier">V</span><span class="plain"> = </span><span class="identifier">C</span><span class="plain">-</span><span class="element">>vertex</span><span class="plain">;</span>
|
||||
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">>edition</span><span class="plain">-</span><span class="element">>work</span><span class="plain">-</span><span class="element">>genre</span><span class="plain">, </span><span class="constant">GENRE_BUILDING_SOON_MTID</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">, &</span><span class="identifier">V</span><span class="plain">);</span>
|
||||
<span class="functiontext">Graphs::build</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">V</span><span class="plain">, </span><span class="identifier">BM</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Copies::rebuild</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">build_methodology</span><span class="plain"> *</span><span class="identifier">BM</span><span class="plain">) {</span>
|
||||
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">>edition</span><span class="plain">-</span><span class="element">>work</span><span class="plain">-</span><span class="element">>genre</span><span class="plain">, </span><span class="constant">GENRE_BUILD_COPY_MTID</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">BM</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
<span class="reserved">build_vertex</span><span class="plain"> *</span><span class="identifier">V</span><span class="plain"> = </span><span class="identifier">C</span><span class="plain">-</span><span class="element">>vertex</span><span class="plain">;</span>
|
||||
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">>edition</span><span class="plain">-</span><span class="element">>work</span><span class="plain">-</span><span class="element">>genre</span><span class="plain">, </span><span class="constant">GENRE_BUILDING_SOON_MTID</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">, &</span><span class="identifier">V</span><span class="plain">);</span>
|
||||
<span class="functiontext">Graphs::rebuild</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">V</span><span class="plain">, </span><span class="identifier">BM</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Copies::show_graph</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">) {</span>
|
||||
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">>edition</span><span class="plain">-</span><span class="element">>work</span><span class="plain">-</span><span class="element">>genre</span><span class="plain">, </span><span class="constant">GENRE_BUILD_COPY_MTID</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="reserved">build_vertex</span><span class="plain"> *</span><span class="identifier">V</span><span class="plain"> = </span><span class="identifier">C</span><span class="plain">-</span><span class="element">>vertex</span><span class="plain">;</span>
|
||||
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">>edition</span><span class="plain">-</span><span class="element">>work</span><span class="plain">-</span><span class="element">>genre</span><span class="plain">, </span><span class="constant">GENRE_BUILDING_SOON_MTID</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">, &</span><span class="identifier">V</span><span class="plain">);</span>
|
||||
<span class="functiontext">Graphs::describe</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">V</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Copies::show_needs</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">uses_only</span><span class="plain">) {</span>
|
||||
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">>edition</span><span class="plain">-</span><span class="element">>work</span><span class="plain">-</span><span class="element">>genre</span><span class="plain">, </span><span class="constant">GENRE_BUILD_COPY_MTID</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
<span class="reserved">build_vertex</span><span class="plain"> *</span><span class="identifier">V</span><span class="plain"> = </span><span class="identifier">C</span><span class="plain">-</span><span class="element">>vertex</span><span class="plain">;</span>
|
||||
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">>edition</span><span class="plain">-</span><span class="element">>work</span><span class="plain">-</span><span class="element">>genre</span><span class="plain">, </span><span class="constant">GENRE_BUILDING_SOON_MTID</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">, &</span><span class="identifier">V</span><span class="plain">);</span>
|
||||
<span class="functiontext">Graphs::show_needs</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-</span><span class="element">>vertex</span><span class="plain">, </span><span class="identifier">uses_only</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Copies::show_missing</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">uses_only</span><span class="plain">) {</span>
|
||||
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">>edition</span><span class="plain">-</span><span class="element">>work</span><span class="plain">-</span><span class="element">>genre</span><span class="plain">, </span><span class="constant">GENRE_BUILD_COPY_MTID</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
<span class="reserved">build_vertex</span><span class="plain"> *</span><span class="identifier">V</span><span class="plain"> = </span><span class="identifier">C</span><span class="plain">-</span><span class="element">>vertex</span><span class="plain">;</span>
|
||||
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">>edition</span><span class="plain">-</span><span class="element">>work</span><span class="plain">-</span><span class="element">>genre</span><span class="plain">, </span><span class="constant">GENRE_BUILDING_SOON_MTID</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">, &</span><span class="identifier">V</span><span class="plain">);</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">N</span><span class="plain"> = </span><span class="functiontext">Graphs::show_missing</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-</span><span class="element">>vertex</span><span class="plain">, </span><span class="identifier">uses_only</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain"> == 0) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"Nothing is missing\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Copies::archive</span><span class="plain">(</span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">inbuild_nest</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">, </span><span class="reserved">build_methodology</span><span class="plain"> *</span><span class="identifier">BM</span><span class="plain">) {</span>
|
||||
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">>edition</span><span class="plain">-</span><span class="element">>work</span><span class="plain">-</span><span class="element">>genre</span><span class="plain">, </span><span class="constant">GENRE_BUILD_COPY_MTID</span><span class="plain">, </span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
<span class="reserved">build_vertex</span><span class="plain"> *</span><span class="identifier">V</span><span class="plain"> = </span><span class="identifier">C</span><span class="plain">-</span><span class="element">>vertex</span><span class="plain">;</span>
|
||||
<span class="identifier">VMETHOD_CALL</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">>edition</span><span class="plain">-</span><span class="element">>work</span><span class="plain">-</span><span class="element">>genre</span><span class="plain">, </span><span class="constant">GENRE_BUILDING_SOON_MTID</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">, &</span><span class="identifier">V</span><span class="plain">);</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">NM</span><span class="plain"> = </span><span class="functiontext">Graphs::show_missing</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-</span><span class="element">>vertex</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">NM</span><span class="plain"> > 0) </span><span class="identifier">WRITE</span><span class="plain">(</span><span class="string">"Because there are missing resources, -archive is cancelled\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">N</span><span class="plain">) </span><span class="functiontext">Graphs::archive</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-</span><span class="element">>vertex</span><span class="plain">, </span><span class="identifier">N</span><span class="plain">, </span><span class="identifier">BM</span><span class="plain">);</span>
|
||||
|
@ -231,8 +236,6 @@ directories holding a set of files.
|
|||
|
||||
<p class="endnote">The function Copies::go_operational is used in 1/ic (<a href="1-ic.html#SP11">§11</a>).</p>
|
||||
|
||||
<p class="endnote">The function Copies::scan is used in 4/km (<a href="4-km.html#SP3">§3</a>), 4/em (<a href="4-em.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The function Copies::build appears nowhere else.</p>
|
||||
|
||||
<p class="endnote">The function Copies::rebuild appears nowhere else.</p>
|
||||
|
|
|
@ -59,10 +59,20 @@
|
|||
<!--Weave of '2/gnr' generated by 7-->
|
||||
<ul class="crumbs"><li><a href="../webs.html">Source</a></li><li><a href="../compiler.html">Compiler Modules</a></li><li><a href="index.html">inbuild</a></li><li><a href="index.html#2">Chapter 2: Conceptual Framework</a></li><li><b>Genres</b></li></ul><p class="purpose">The different sorts of work managed by inbuild.</p>
|
||||
|
||||
<ul class="toc"><li><a href="#SP1">§1. Genres</a></li></ul><hr class="tocbar">
|
||||
<ul class="toc"><li><a href="#SP1">§1. Genres</a></li><li><a href="#SP3">§3. Method functions</a></li></ul><hr class="tocbar">
|
||||
|
||||
<p class="inwebparagraph"><a id="SP1"></a><b>§1. Genres. </b>For example, "kit" and "extension" will both be both genres. There will be
|
||||
few of these.
|
||||
<p class="inwebparagraph"><a id="SP1"></a><b>§1. Genres. </b>Each different genre of work managed by Inbuild is represented by an instance
|
||||
of the following structure. (At present, then, there are exactly seven
|
||||
instances of it: nothing the user can do at the command line can change
|
||||
that total.) A work unambiguously specifies what genre it has by means
|
||||
of a non-null pointer to <code class="display"><span class="extract">inbuild_genre</span></code>. Moreover, the rules for how Inbuild
|
||||
manages works of this genre are expressed by methods attached to the structure.
|
||||
For example, to copy a work, Inbuild calls the <code class="display"><span class="extract">GENRE_COPY_TO_NEST_MTID</span></code>
|
||||
method attached to its <code class="display"><span class="extract">inbuild_genre</span></code>.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph">Each genre has its own section of code: for example, <code class="display"><span class="extract">Kit Manager</span></code> defines
|
||||
the instance <code class="display"><span class="extract">kit_genre</span></code> and provides its method functions.
|
||||
</p>
|
||||
|
||||
|
||||
|
@ -75,11 +85,7 @@ few of these.
|
|||
<span class="plain">} </span><span class="reserved">inbuild_genre</span><span class="plain">;</span>
|
||||
|
||||
<span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="functiontext">Genres::new</span><span class="plain">(</span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">nested</span><span class="plain">) {</span>
|
||||
<span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">;</span>
|
||||
<span class="identifier">LOOP_OVER</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">, </span><span class="reserved">inbuild_genre</span><span class="plain">)</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Str::eq</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">-</span><span class="element">>genre_name</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">))</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">gen</span><span class="plain">;</span>
|
||||
<span class="identifier">gen</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inbuild_genre</span><span class="plain">);</span>
|
||||
<span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inbuild_genre</span><span class="plain">);</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>genre_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">);</span>
|
||||
<span class="identifier">gen</span><span class="plain">-</span><span class="element">>stored_in_nests</span><span class="plain"> = </span><span class="identifier">nested</span><span class="plain">;</span>
|
||||
<span class="identifier">ENABLE_METHOD_CALLS</span><span class="plain">(</span><span class="identifier">gen</span><span class="plain">);</span>
|
||||
|
@ -90,11 +96,6 @@ few of these.
|
|||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">G</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">I</span><span class="string">"(none)"</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">G</span><span class="plain">-</span><span class="element">>genre_name</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Genres::stored_in_nests</span><span class="plain">(</span><span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">G</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">G</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">G</span><span class="plain">-</span><span class="element">>stored_in_nests</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
@ -103,45 +104,169 @@ few of these.
|
|||
|
||||
<p class="endnote">The function Genres::name is used in 2/cps (<a href="2-cps.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Genres::stored_in_nests is used in 3/bg (<a href="3-bg.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The structure inbuild_genre is accessed in 2/rqr, 3/bg and here.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b></p>
|
||||
<p class="inwebparagraph"><a id="SP2"></a><b>§2. </b>Some genres of work, such as kits and extensions, can be stored in nests;
|
||||
others, such as Inform projects, cannot. Whether a copy can be stored in a
|
||||
nest depends only on its genre.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">Genres::stored_in_nests</span><span class="plain">(</span><span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">G</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">G</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">FALSE</span><span class="plain">;</span>
|
||||
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">G</span><span class="plain">-</span><span class="element">>stored_in_nests</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Genres::stored_in_nests is used in 3/bg (<a href="3-bg.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP3"></a><b>§3. Method functions. </b>And here are the method functions which a genre can, optionally, provide.
|
||||
All of these act on a given work, or a given copy of a work, having the
|
||||
genre in question.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph">First, this writes text sufficient to identify a work: e.g., "Locksmith
|
||||
by Emily Short".
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="definitions">
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">GENRE_WRITE_WORK_MTID</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">GENRE_CLAIM_AS_COPY_MTID</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">GENRE_SCAN_COPY_MTID</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">GENRE_SEARCH_NEST_FOR_MTID</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">GENRE_COPY_TO_NEST_MTID</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">GENRE_GO_OPERATIONAL_MTID</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">GENRE_READ_SOURCE_TEXT_FOR_MTID</span>
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">GENRE_BUILD_COPY_MTID</span>
|
||||
</pre>
|
||||
|
||||
<pre class="display">
|
||||
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">GENRE_WRITE_WORK_MTID</span><span class="plain">,</span>
|
||||
<span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">inbuild_work</span><span class="plain"> *</span><span class="identifier">work</span><span class="plain">)</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP4"></a><b>§4. </b>This looks at a textual file locator, which might be a pathname or a
|
||||
filename, to see if it might refer to a copy of a work of the given genre.
|
||||
If it does, an <code class="display"><span class="extract">inbuild_copy</span></code> is created, and the pointer <code class="display"><span class="extract">*C</span></code> is set to
|
||||
point to it. If not, no error is issued, and <code class="display"><span class="extract">*C</span></code> is left unchanged.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph">Errors can, however, be produced if Inbuild is pretty sure that the object
|
||||
in the file system is intended to be such a copy, but is damaged in some way:
|
||||
an extension with a malformed titling line, for example. Such errors are
|
||||
attached to the copy for later issuing.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="definitions">
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">GENRE_CLAIM_AS_COPY_MTID</span>
|
||||
</pre>
|
||||
|
||||
<pre class="display">
|
||||
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">GENRE_CLAIM_AS_COPY_MTID</span><span class="plain">,</span>
|
||||
<span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> **</span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">arg</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">ext</span><span class="plain">,</span>
|
||||
<span class="reserved">int</span><span class="plain"> </span><span class="identifier">directory_status</span><span class="plain">)</span>
|
||||
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">GENRE_SCAN_COPY_MTID</span><span class="plain">,</span>
|
||||
<span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">)</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP5"></a><b>§5. </b>This searches the nest <code class="display"><span class="extract">N</span></code> for anything which (a) looks like a copy of a
|
||||
work of our genre, and (b) meets the given requirements. If a genre does
|
||||
not provide this method, then nothing of that genre can ever appear in
|
||||
<code class="display"><span class="extract">-matching</span></code> search results.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="definitions">
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">GENRE_SEARCH_NEST_FOR_MTID</span>
|
||||
</pre>
|
||||
|
||||
<pre class="display">
|
||||
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">GENRE_SEARCH_NEST_FOR_MTID</span><span class="plain">,</span>
|
||||
<span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="reserved">inbuild_nest</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">, </span><span class="reserved">inbuild_requirement</span><span class="plain"> *</span><span class="identifier">req</span><span class="plain">,</span>
|
||||
<span class="identifier">linked_list</span><span class="plain"> *</span><span class="identifier">search_results</span><span class="plain">)</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP6"></a><b>§6. </b>Some genres of work involve Inform source text — Inform projects and
|
||||
extensions, for example. Reading in source text is fairly fast, but it's not
|
||||
an instant process, and we don't automatically perform it. (When an extension
|
||||
is scanned for metadata during claiming, only the opening line is looked at.)
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph">This method should exist only for such genres, and it should read the source
|
||||
text. It will never be called twice on the same copy.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="definitions">
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">GENRE_READ_SOURCE_TEXT_FOR_MTID</span>
|
||||
</pre>
|
||||
|
||||
<pre class="display">
|
||||
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">GENRE_READ_SOURCE_TEXT_FOR_MTID</span><span class="plain">,</span>
|
||||
<span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">)</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP7"></a><b>§7. </b>At the Going Operational phase of Inbuild, each copy is offered the chance
|
||||
to finalise its internal representation. For example, this may be when its
|
||||
build graph is constructed, because we can now know for sure that there are
|
||||
no further unsuspected dependencies.
|
||||
</p>
|
||||
|
||||
<p class="inwebparagraph">This method is optional, and is called exactly once on every copy (whose genre
|
||||
provides it) which has been claimed by Inbuild.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="definitions">
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">GENRE_GO_OPERATIONAL_MTID</span>
|
||||
</pre>
|
||||
|
||||
<pre class="display">
|
||||
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">GENRE_GO_OPERATIONAL_MTID</span><span class="plain">,</span>
|
||||
<span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">)</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP8"></a><b>§8. </b>This method is called when a copy is about to be built or have its graph
|
||||
described, for example by <code class="display"><span class="extract">-graph</span></code>, <code class="display"><span class="extract">-build</span></code> and <code class="display"><span class="extract">-rebuild</span></code>. Nothing actually
|
||||
needs to be done, but if any work is needed before building can take place,
|
||||
now's the time; and the vertex to build from can be altered by setting <code class="display"><span class="extract">*V</span></code>.
|
||||
(This is used to create upstream targets for Inform projects, such as the
|
||||
blorbed release version. It affects <code class="display"><span class="extract">-graph</span></code>, <code class="display"><span class="extract">-build</span></code> and <code class="display"><span class="extract">-rebuild</span></code> but
|
||||
is ignored for other inspection options such as <code class="display"><span class="extract">-use-missing</span></code>.)
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="definitions">
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">GENRE_BUILDING_SOON_MTID</span>
|
||||
</pre>
|
||||
|
||||
<pre class="display">
|
||||
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">GENRE_BUILDING_SOON_MTID</span><span class="plain">,</span>
|
||||
<span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">build_vertex</span><span class="plain"> **</span><span class="identifier">V</span><span class="plain">)</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP9"></a><b>§9. </b>This duplicates, or syncs, a copy <code class="display"><span class="extract">C</span></code> of a work in our genre, placing it
|
||||
at a canonical location inside the given nest <code class="display"><span class="extract">N</span></code>. In effect, it implements
|
||||
the Inbuild command-line options <code class="display"><span class="extract">-copy-to N</span></code> and <code class="display"><span class="extract">-sync-to N</span></code>.
|
||||
</p>
|
||||
|
||||
|
||||
<pre class="definitions">
|
||||
<span class="definitionkeyword">enum</span> <span class="constant">GENRE_COPY_TO_NEST_MTID</span>
|
||||
</pre>
|
||||
|
||||
<pre class="display">
|
||||
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">GENRE_COPY_TO_NEST_MTID</span><span class="plain">,</span>
|
||||
<span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">inbuild_nest</span><span class="plain"> *</span><span class="identifier">N</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">syncing</span><span class="plain">,</span>
|
||||
<span class="reserved">build_methodology</span><span class="plain"> *</span><span class="identifier">meth</span><span class="plain">)</span>
|
||||
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">GENRE_GO_OPERATIONAL_MTID</span><span class="plain">,</span>
|
||||
<span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">)</span>
|
||||
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">GENRE_READ_SOURCE_TEXT_FOR_MTID</span><span class="plain">,</span>
|
||||
<span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">)</span>
|
||||
<span class="identifier">VMETHOD_TYPE</span><span class="plain">(</span><span class="constant">GENRE_BUILD_COPY_MTID</span><span class="plain">,</span>
|
||||
<span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">,</span>
|
||||
<span class="reserved">build_methodology</span><span class="plain"> *</span><span class="identifier">BM</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">build</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">rebuild</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">describe_only</span><span class="plain">)</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
|
|
@ -369,7 +369,7 @@ a different file inside the copy.
|
|||
|
||||
<p class="endnote">The function Graphs::need_this_to_use is used in 5/kts (<a href="5-kts.html#SP2">§2</a>), 5/ps (<a href="5-ps.html#SP3">§3</a>), 6/inc (<a href="6-inc.html#SP1_1">§1.1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Graphs::describe is used in <a href="#SP2">§2</a>, 4/km (<a href="4-km.html#SP7">§7</a>), 4/em (<a href="4-em.html#SP9">§9</a>), 4/pbm (<a href="4-pbm.html#SP6">§6</a>), 4/pfm (<a href="4-pfm.html#SP6">§6</a>).</p>
|
||||
<p class="endnote">The function Graphs::describe is used in <a href="#SP2">§2</a>, 2/cps (<a href="2-cps.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Graphs::describe_r appears nowhere else.</p>
|
||||
|
||||
|
@ -453,9 +453,9 @@ a different file inside the copy.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Graphs::build is used in 4/km (<a href="4-km.html#SP7">§7</a>), 4/em (<a href="4-em.html#SP9">§9</a>), 4/pbm (<a href="4-pbm.html#SP6">§6</a>), 4/pfm (<a href="4-pfm.html#SP6">§6</a>).</p>
|
||||
<p class="endnote">The function Graphs::build is used in 2/cps (<a href="2-cps.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Graphs::rebuild is used in 4/km (<a href="4-km.html#SP7">§7</a>), 4/em (<a href="4-em.html#SP9">§9</a>), 4/pbm (<a href="4-pbm.html#SP6">§6</a>), 4/pfm (<a href="4-pfm.html#SP6">§6</a>).</p>
|
||||
<p class="endnote">The function Graphs::rebuild is used in 2/cps (<a href="2-cps.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function Graphs::build_r appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -87,11 +87,10 @@ length to one character less than the following constants:
|
|||
<span class="identifier">extension_genre</span><span class="plain"> = </span><span class="functiontext">Genres::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"extension"</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">extension_genre</span><span class="plain">, </span><span class="constant">GENRE_WRITE_WORK_MTID</span><span class="plain">, </span><span class="functiontext">ExtensionManager::write_work</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">extension_genre</span><span class="plain">, </span><span class="constant">GENRE_CLAIM_AS_COPY_MTID</span><span class="plain">, </span><span class="functiontext">ExtensionManager::claim_as_copy</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">extension_genre</span><span class="plain">, </span><span class="constant">GENRE_SCAN_COPY_MTID</span><span class="plain">, </span><span class="functiontext">Extensions::scan</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">extension_genre</span><span class="plain">, </span><span class="constant">GENRE_SEARCH_NEST_FOR_MTID</span><span class="plain">, </span><span class="functiontext">ExtensionManager::search_nest_for</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">extension_genre</span><span class="plain">, </span><span class="constant">GENRE_COPY_TO_NEST_MTID</span><span class="plain">, </span><span class="functiontext">ExtensionManager::copy_to_nest</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">extension_genre</span><span class="plain">, </span><span class="constant">GENRE_READ_SOURCE_TEXT_FOR_MTID</span><span class="plain">, </span><span class="functiontext">ExtensionManager::read_source_text_for</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">extension_genre</span><span class="plain">, </span><span class="constant">GENRE_BUILD_COPY_MTID</span><span class="plain">, </span><span class="functiontext">ExtensionManager::build</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">extension_genre</span><span class="plain">, </span><span class="constant">GENRE_BUILDING_SOON_MTID</span><span class="plain">, </span><span class="functiontext">ExtensionManager::building_soon</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">ExtensionManager::write_work</span><span class="plain">(</span><span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">inbuild_work</span><span class="plain"> *</span><span class="identifier">work</span><span class="plain">) {</span>
|
||||
|
@ -145,7 +144,7 @@ which stores data about extensions used by the Inform compiler.
|
|||
<span class="identifier">C</span><span class="plain"> = </span><span class="functiontext">Copies::new_in_file</span><span class="plain">(</span>
|
||||
<span class="functiontext">Editions::new</span><span class="plain">(</span><span class="functiontext">Works::new</span><span class="plain">(</span><span class="identifier">extension_genre</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Untitled"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Anonymous"</span><span class="plain">),</span>
|
||||
<span class="identifier">VersionNumbers::null</span><span class="plain">()), </span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">NULL_GENERAL_POINTER</span><span class="plain">);</span>
|
||||
<span class="functiontext">Copies::scan</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">);</span>
|
||||
<span class="functiontext">Extensions::scan</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Works::is_standard_rules</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">-</span><span class="element">>edition</span><span class="plain">-</span><span class="element">>work</span><span class="plain">))</span>
|
||||
<span class="functiontext">Extensions::make_standard</span><span class="plain">(</span><span class="functiontext">ExtensionManager::from_copy</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">));</span>
|
||||
<span class="identifier">Dictionaries::create</span><span class="plain">(</span><span class="identifier">ext_copy_cache</span><span class="plain">, </span><span class="identifier">key</span><span class="plain">);</span>
|
||||
|
@ -327,12 +326,9 @@ the current VM settings.
|
|||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">ExtensionManager::build</span><span class="plain">(</span><span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">,</span>
|
||||
<span class="reserved">build_methodology</span><span class="plain"> *</span><span class="identifier">BM</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">build</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">rebuild</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">describe_only</span><span class="plain">) {</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">ExtensionManager::building_soon</span><span class="plain">(</span><span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">build_vertex</span><span class="plain"> **</span><span class="identifier">V</span><span class="plain">) {</span>
|
||||
<span class="functiontext">ExtensionManager::ensure_graphed</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">);</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">describe_only</span><span class="plain">) </span><span class="functiontext">Graphs::describe</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-</span><span class="element">>vertex</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">rebuild</span><span class="plain">) </span><span class="functiontext">Graphs::rebuild</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-</span><span class="element">>vertex</span><span class="plain">, </span><span class="identifier">BM</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">build</span><span class="plain">) </span><span class="functiontext">Graphs::build</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-</span><span class="element">>vertex</span><span class="plain">, </span><span class="identifier">BM</span><span class="plain">);</span>
|
||||
<span class="plain">*</span><span class="identifier">V</span><span class="plain"> = </span><span class="identifier">C</span><span class="plain">-</span><span class="element">>vertex</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">ExtensionManager::ensure_graphed</span><span class="plain">(</span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">) {</span>
|
||||
|
@ -350,7 +346,7 @@ the current VM settings.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function ExtensionManager::build is used in <a href="#SP3">§3</a>.</p>
|
||||
<p class="endnote">The function ExtensionManager::building_soon is used in <a href="#SP3">§3</a>.</p>
|
||||
|
||||
<p class="endnote">The function ExtensionManager::ensure_graphed appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -70,11 +70,10 @@
|
|||
<span class="identifier">kit_genre</span><span class="plain"> = </span><span class="functiontext">Genres::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"kit"</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">kit_genre</span><span class="plain">, </span><span class="constant">GENRE_WRITE_WORK_MTID</span><span class="plain">, </span><span class="functiontext">KitManager::write_work</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">kit_genre</span><span class="plain">, </span><span class="constant">GENRE_CLAIM_AS_COPY_MTID</span><span class="plain">, </span><span class="functiontext">KitManager::claim_as_copy</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">kit_genre</span><span class="plain">, </span><span class="constant">GENRE_SCAN_COPY_MTID</span><span class="plain">, </span><span class="functiontext">Kits::scan</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">kit_genre</span><span class="plain">, </span><span class="constant">GENRE_SEARCH_NEST_FOR_MTID</span><span class="plain">, </span><span class="functiontext">KitManager::search_nest_for</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">kit_genre</span><span class="plain">, </span><span class="constant">GENRE_COPY_TO_NEST_MTID</span><span class="plain">, </span><span class="functiontext">KitManager::copy_to_nest</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">kit_genre</span><span class="plain">, </span><span class="constant">GENRE_GO_OPERATIONAL_MTID</span><span class="plain">, </span><span class="functiontext">KitManager::go_operational</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">kit_genre</span><span class="plain">, </span><span class="constant">GENRE_BUILD_COPY_MTID</span><span class="plain">, </span><span class="functiontext">KitManager::build</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">kit_genre</span><span class="plain">, </span><span class="constant">GENRE_BUILDING_SOON_MTID</span><span class="plain">, </span><span class="functiontext">KitManager::building_soon</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">KitManager::write_work</span><span class="plain">(</span><span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">inbuild_work</span><span class="plain"> *</span><span class="identifier">work</span><span class="plain">) {</span>
|
||||
|
@ -128,7 +127,7 @@ which stores data about extensions used by the Inform compiler.
|
|||
<span class="reserved">inbuild_work</span><span class="plain"> *</span><span class="identifier">work</span><span class="plain"> = </span><span class="functiontext">Works::new_raw</span><span class="plain">(</span><span class="identifier">kit_genre</span><span class="plain">, </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">), </span><span class="identifier">NULL</span><span class="plain">);</span>
|
||||
<span class="reserved">inbuild_edition</span><span class="plain"> *</span><span class="identifier">edition</span><span class="plain"> = </span><span class="functiontext">Editions::new</span><span class="plain">(</span><span class="identifier">work</span><span class="plain">, </span><span class="identifier">VersionNumbers::null</span><span class="plain">());</span>
|
||||
<span class="identifier">C</span><span class="plain"> = </span><span class="functiontext">Copies::new_in_path</span><span class="plain">(</span><span class="identifier">edition</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">NULL_GENERAL_POINTER</span><span class="plain">);</span>
|
||||
<span class="functiontext">Copies::scan</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">);</span>
|
||||
<span class="functiontext">Kits::scan</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">);</span>
|
||||
<span class="identifier">Dictionaries::create</span><span class="plain">(</span><span class="identifier">kit_copy_cache</span><span class="plain">, </span><span class="identifier">key</span><span class="plain">);</span>
|
||||
<span class="identifier">Dictionaries::write_value</span><span class="plain">(</span><span class="identifier">kit_copy_cache</span><span class="plain">, </span><span class="identifier">key</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
@ -275,11 +274,8 @@ we need to <code class="display"><span class="extract">rsync</span></code> it.
|
|||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">KitManager::build</span><span class="plain">(</span><span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">,</span>
|
||||
<span class="reserved">build_methodology</span><span class="plain"> *</span><span class="identifier">BM</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">build</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">rebuild</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">describe_only</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">describe_only</span><span class="plain">) </span><span class="functiontext">Graphs::describe</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-</span><span class="element">>vertex</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">rebuild</span><span class="plain">) </span><span class="functiontext">Graphs::rebuild</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-</span><span class="element">>vertex</span><span class="plain">, </span><span class="identifier">BM</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">build</span><span class="plain">) </span><span class="functiontext">Graphs::build</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">C</span><span class="plain">-</span><span class="element">>vertex</span><span class="plain">, </span><span class="identifier">BM</span><span class="plain">);</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">KitManager::building_soon</span><span class="plain">(</span><span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">build_vertex</span><span class="plain"> **</span><span class="identifier">V</span><span class="plain">) {</span>
|
||||
<span class="plain">*</span><span class="identifier">V</span><span class="plain"> = </span><span class="identifier">C</span><span class="plain">-</span><span class="element">>vertex</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">KitManager::build_vertex</span><span class="plain">(</span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">) {</span>
|
||||
|
@ -310,7 +306,7 @@ we need to <code class="display"><span class="extract">rsync</span></code> it.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function KitManager::build is used in <a href="#SP1">§1</a>.</p>
|
||||
<p class="endnote">The function KitManager::building_soon is used in <a href="#SP1">§1</a>.</p>
|
||||
|
||||
<p class="endnote">The function KitManager::build_vertex is used in <a href="#SP4">§4</a>, 5/kts (<a href="5-kts.html#SP1">§1</a>).</p>
|
||||
|
||||
|
|
|
@ -74,7 +74,7 @@
|
|||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">project_bundle_genre</span><span class="plain">, </span><span class="constant">GENRE_COPY_TO_NEST_MTID</span><span class="plain">, </span><span class="functiontext">ProjectBundleManager::copy_to_nest</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">project_bundle_genre</span><span class="plain">, </span><span class="constant">GENRE_GO_OPERATIONAL_MTID</span><span class="plain">, </span><span class="functiontext">ProjectBundleManager::go_operational</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">project_bundle_genre</span><span class="plain">, </span><span class="constant">GENRE_READ_SOURCE_TEXT_FOR_MTID</span><span class="plain">, </span><span class="functiontext">ProjectBundleManager::read_source_text_for</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">project_bundle_genre</span><span class="plain">, </span><span class="constant">GENRE_BUILD_COPY_MTID</span><span class="plain">, </span><span class="functiontext">ProjectBundleManager::build</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">project_bundle_genre</span><span class="plain">, </span><span class="constant">GENRE_BUILDING_SOON_MTID</span><span class="plain">, </span><span class="functiontext">ProjectBundleManager::building_soon</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">ProjectBundleManager::write_work</span><span class="plain">(</span><span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">inbuild_work</span><span class="plain"> *</span><span class="identifier">work</span><span class="plain">) {</span>
|
||||
|
@ -112,7 +112,7 @@ which stores data about extensions used by the Inform compiler.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function ProjectBundleManager::from_copy is used in <a href="#SP6">§6</a>, <a href="#SP8">§8</a>, <a href="#SP9">§9</a>, 1/ic (<a href="1-ic.html#SP19">§19</a>), 3/is2 (<a href="3-is2.html#SP1">§1</a>), 3/is3 (<a href="3-is3.html#SP1">§1</a>), 3/is4 (<a href="3-is4.html#SP1">§1</a>), 4/pfm (<a href="4-pfm.html#SP6">§6</a>, <a href="4-pfm.html#SP9">§9</a>).</p>
|
||||
<p class="endnote">The function ProjectBundleManager::from_copy is used in <a href="#SP6">§6</a>, <a href="#SP8">§8</a>, <a href="#SP9">§9</a>, 1/ic (<a href="1-ic.html#SP19">§19</a>), 3/is2 (<a href="3-is2.html#SP1">§1</a>), 3/is3 (<a href="3-is3.html#SP1">§1</a>), 3/is4 (<a href="3-is4.html#SP1">§1</a>), 4/pfm (<a href="4-pfm.html#SP9">§9</a>).</p>
|
||||
|
||||
<p class="endnote">The function ProjectBundleManager::new_copy is used in <a href="#SP3">§3</a>.</p>
|
||||
|
||||
|
@ -187,19 +187,15 @@ projects lived there.
|
|||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">ProjectBundleManager::build</span><span class="plain">(</span><span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">,</span>
|
||||
<span class="reserved">build_methodology</span><span class="plain"> *</span><span class="identifier">BM</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">build</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">rebuild</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">describe_only</span><span class="plain">) {</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">ProjectBundleManager::building_soon</span><span class="plain">(</span><span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">build_vertex</span><span class="plain"> **</span><span class="identifier">V</span><span class="plain">) {</span>
|
||||
<span class="reserved">inform_project</span><span class="plain"> *</span><span class="identifier">project</span><span class="plain"> = </span><span class="functiontext">ProjectBundleManager::from_copy</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">);</span>
|
||||
<span class="reserved">build_vertex</span><span class="plain"> *</span><span class="identifier">V</span><span class="plain"> = </span><span class="identifier">project</span><span class="plain">-</span><span class="element">>chosen_build_target</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">describe_only</span><span class="plain">) </span><span class="functiontext">Graphs::describe</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">V</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">rebuild</span><span class="plain">) </span><span class="functiontext">Graphs::rebuild</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">V</span><span class="plain">, </span><span class="identifier">BM</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">build</span><span class="plain">) </span><span class="functiontext">Graphs::build</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">V</span><span class="plain">, </span><span class="identifier">BM</span><span class="plain">);</span>
|
||||
<span class="plain">*</span><span class="identifier">V</span><span class="plain"> = </span><span class="identifier">project</span><span class="plain">-</span><span class="element">>chosen_build_target</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function ProjectBundleManager::build is used in <a href="#SP1">§1</a>.</p>
|
||||
<p class="endnote">The function ProjectBundleManager::building_soon is used in <a href="#SP1">§1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP7"></a><b>§7. </b>The build graph for a project will need further thought...
|
||||
</p>
|
||||
|
|
|
@ -74,7 +74,7 @@
|
|||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">project_file_genre</span><span class="plain">, </span><span class="constant">GENRE_COPY_TO_NEST_MTID</span><span class="plain">, </span><span class="functiontext">ProjectFileManager::copy_to_nest</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">project_file_genre</span><span class="plain">, </span><span class="constant">GENRE_GO_OPERATIONAL_MTID</span><span class="plain">, </span><span class="functiontext">ProjectFileManager::go_operational</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">project_file_genre</span><span class="plain">, </span><span class="constant">GENRE_READ_SOURCE_TEXT_FOR_MTID</span><span class="plain">, </span><span class="functiontext">ProjectFileManager::read_source_text_for</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">project_file_genre</span><span class="plain">, </span><span class="constant">GENRE_BUILD_COPY_MTID</span><span class="plain">, </span><span class="functiontext">ProjectFileManager::build</span><span class="plain">);</span>
|
||||
<span class="identifier">METHOD_ADD</span><span class="plain">(</span><span class="identifier">project_file_genre</span><span class="plain">, </span><span class="constant">GENRE_BUILDING_SOON_MTID</span><span class="plain">, </span><span class="functiontext">ProjectFileManager::building_soon</span><span class="plain">);</span>
|
||||
<span class="plain">}</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">ProjectFileManager::write_work</span><span class="plain">(</span><span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">OUTPUT_STREAM</span><span class="plain">, </span><span class="reserved">inbuild_work</span><span class="plain"> *</span><span class="identifier">work</span><span class="plain">) {</span>
|
||||
|
@ -112,7 +112,7 @@ which stores data about extensions used by the Inform compiler.
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function ProjectFileManager::from_copy is used in <a href="#SP8">§8</a>, 1/ic (<a href="1-ic.html#SP19">§19</a>), 3/is2 (<a href="3-is2.html#SP1">§1</a>), 3/is3 (<a href="3-is3.html#SP1">§1</a>), 3/is4 (<a href="3-is4.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function ProjectFileManager::from_copy is used in <a href="#SP6">§6</a>, <a href="#SP8">§8</a>, 1/ic (<a href="1-ic.html#SP19">§19</a>), 3/is2 (<a href="3-is2.html#SP1">§1</a>), 3/is3 (<a href="3-is3.html#SP1">§1</a>), 3/is4 (<a href="3-is4.html#SP1">§1</a>).</p>
|
||||
|
||||
<p class="endnote">The function ProjectFileManager::new_copy is used in <a href="#SP3">§3</a>.</p>
|
||||
|
||||
|
@ -190,19 +190,15 @@ projects lived there.
|
|||
|
||||
|
||||
<pre class="display">
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">ProjectFileManager::build</span><span class="plain">(</span><span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">OUT</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">,</span>
|
||||
<span class="reserved">build_methodology</span><span class="plain"> *</span><span class="identifier">BM</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">build</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">rebuild</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">describe_only</span><span class="plain">) {</span>
|
||||
<span class="reserved">inform_project</span><span class="plain"> *</span><span class="identifier">project</span><span class="plain"> = </span><span class="functiontext">ProjectBundleManager::from_copy</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">);</span>
|
||||
<span class="reserved">build_vertex</span><span class="plain"> *</span><span class="identifier">V</span><span class="plain"> = </span><span class="identifier">project</span><span class="plain">-</span><span class="element">>chosen_build_target</span><span class="plain">;</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">describe_only</span><span class="plain">) </span><span class="functiontext">Graphs::describe</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">V</span><span class="plain">, </span><span class="identifier">TRUE</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">rebuild</span><span class="plain">) </span><span class="functiontext">Graphs::rebuild</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">V</span><span class="plain">, </span><span class="identifier">BM</span><span class="plain">);</span>
|
||||
<span class="reserved">else</span><span class="plain"> </span><span class="reserved">if</span><span class="plain"> (</span><span class="identifier">build</span><span class="plain">) </span><span class="functiontext">Graphs::build</span><span class="plain">(</span><span class="identifier">OUT</span><span class="plain">, </span><span class="identifier">V</span><span class="plain">, </span><span class="identifier">BM</span><span class="plain">);</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">ProjectFileManager::building_soon</span><span class="plain">(</span><span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">gen</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">, </span><span class="reserved">build_vertex</span><span class="plain"> **</span><span class="identifier">V</span><span class="plain">) {</span>
|
||||
<span class="reserved">inform_project</span><span class="plain"> *</span><span class="identifier">project</span><span class="plain"> = </span><span class="functiontext">ProjectFileManager::from_copy</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">);</span>
|
||||
<span class="plain">*</span><span class="identifier">V</span><span class="plain"> = </span><span class="identifier">project</span><span class="plain">-</span><span class="element">>chosen_build_target</span><span class="plain">;</span>
|
||||
<span class="plain">}</span>
|
||||
</pre>
|
||||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function ProjectFileManager::build is used in <a href="#SP1">§1</a>.</p>
|
||||
<p class="endnote">The function ProjectFileManager::building_soon is used in <a href="#SP1">§1</a>.</p>
|
||||
|
||||
<p class="inwebparagraph"><a id="SP7"></a><b>§7. </b>The build graph for a project will need further thought...
|
||||
</p>
|
||||
|
|
|
@ -80,7 +80,7 @@
|
|||
<span class="identifier">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain">} </span><span class="reserved">inform_extension</span><span class="plain">;</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Extensions::scan</span><span class="plain">(</span><span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">G</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">) {</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Extensions::scan</span><span class="plain">(</span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">) {</span>
|
||||
<span class="reserved">inform_extension</span><span class="plain"> *</span><span class="identifier">E</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inform_extension</span><span class="plain">);</span>
|
||||
<span class="identifier">E</span><span class="plain">-</span><span class="element">>as_copy</span><span class="plain"> = </span><span class="identifier">C</span><span class="plain">;</span>
|
||||
<span class="functiontext">Copies::set_content</span><span class="plain">(</span><span class="identifier">C</span><span class="plain">, </span><span class="identifier">STORE_POINTER_inform_extension</span><span class="plain">(</span><span class="identifier">E</span><span class="plain">));</span>
|
||||
|
@ -131,7 +131,7 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Extensions::scan is used in 4/em (<a href="4-em.html#SP3">§3</a>).</p>
|
||||
<p class="endnote">The function Extensions::scan is used in 4/em (<a href="4-em.html#SP5">§5</a>).</p>
|
||||
|
||||
<p class="endnote">The structure inform_extension is accessed in 1/ic, 3/is2, 3/is3, 4/em, 4/lm, 4/pbm, 4/pfm, 4/tm, 4/pm, 5/kts, 5/ed, 5/ed2, 5/ts, 5/ps, 5/ls, 5/ps2, 6/hdn, 6/inc and here.</p>
|
||||
|
||||
|
|
|
@ -93,7 +93,7 @@
|
|||
<span class="identifier">MEMORY_MANAGEMENT</span>
|
||||
<span class="plain">} </span><span class="reserved">element_activation</span><span class="plain">;</span>
|
||||
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Kits::scan</span><span class="plain">(</span><span class="reserved">inbuild_genre</span><span class="plain"> *</span><span class="identifier">G</span><span class="plain">, </span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">) {</span>
|
||||
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Kits::scan</span><span class="plain">(</span><span class="reserved">inbuild_copy</span><span class="plain"> *</span><span class="identifier">C</span><span class="plain">) {</span>
|
||||
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">C</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no copy to scan"</span><span class="plain">);</span>
|
||||
|
||||
<span class="reserved">inform_kit</span><span class="plain"> *</span><span class="identifier">K</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inform_kit</span><span class="plain">);</span>
|
||||
|
@ -258,7 +258,7 @@
|
|||
|
||||
<p class="inwebparagraph"></p>
|
||||
|
||||
<p class="endnote">The function Kits::scan is used in 4/km (<a href="4-km.html#SP1">§1</a>).</p>
|
||||
<p class="endnote">The function Kits::scan is used in 4/km (<a href="4-km.html#SP3">§3</a>).</p>
|
||||
|
||||
<p class="endnote">The function Kits::read_metadata appears nowhere else.</p>
|
||||
|
||||
|
|
|
@ -63,30 +63,35 @@ void Copies::go_operational(inbuild_copy *C) {
|
|||
VMETHOD_CALL(C->edition->work->genre, GENRE_GO_OPERATIONAL_MTID, C);
|
||||
}
|
||||
|
||||
void Copies::scan(inbuild_copy *C) {
|
||||
VMETHOD_CALL(C->edition->work->genre, GENRE_SCAN_COPY_MTID, C);
|
||||
}
|
||||
|
||||
void Copies::build(OUTPUT_STREAM, inbuild_copy *C, build_methodology *BM) {
|
||||
VMETHOD_CALL(C->edition->work->genre, GENRE_BUILD_COPY_MTID, OUT, C, BM, TRUE, FALSE, FALSE);
|
||||
build_vertex *V = C->vertex;
|
||||
VMETHOD_CALL(C->edition->work->genre, GENRE_BUILDING_SOON_MTID, C, &V);
|
||||
Graphs::build(OUT, V, BM);
|
||||
}
|
||||
void Copies::rebuild(OUTPUT_STREAM, inbuild_copy *C, build_methodology *BM) {
|
||||
VMETHOD_CALL(C->edition->work->genre, GENRE_BUILD_COPY_MTID, OUT, C, BM, FALSE, TRUE, FALSE);
|
||||
build_vertex *V = C->vertex;
|
||||
VMETHOD_CALL(C->edition->work->genre, GENRE_BUILDING_SOON_MTID, C, &V);
|
||||
Graphs::rebuild(OUT, V, BM);
|
||||
}
|
||||
void Copies::show_graph(OUTPUT_STREAM, inbuild_copy *C) {
|
||||
VMETHOD_CALL(C->edition->work->genre, GENRE_BUILD_COPY_MTID, OUT, C, NULL, FALSE, FALSE, TRUE);
|
||||
build_vertex *V = C->vertex;
|
||||
VMETHOD_CALL(C->edition->work->genre, GENRE_BUILDING_SOON_MTID, C, &V);
|
||||
Graphs::describe(OUT, V, TRUE);
|
||||
}
|
||||
void Copies::show_needs(OUTPUT_STREAM, inbuild_copy *C, int uses_only) {
|
||||
VMETHOD_CALL(C->edition->work->genre, GENRE_BUILD_COPY_MTID, OUT, C, NULL, FALSE, FALSE, FALSE);
|
||||
build_vertex *V = C->vertex;
|
||||
VMETHOD_CALL(C->edition->work->genre, GENRE_BUILDING_SOON_MTID, C, &V);
|
||||
Graphs::show_needs(OUT, C->vertex, uses_only);
|
||||
}
|
||||
void Copies::show_missing(OUTPUT_STREAM, inbuild_copy *C, int uses_only) {
|
||||
VMETHOD_CALL(C->edition->work->genre, GENRE_BUILD_COPY_MTID, OUT, C, NULL, FALSE, FALSE, FALSE);
|
||||
build_vertex *V = C->vertex;
|
||||
VMETHOD_CALL(C->edition->work->genre, GENRE_BUILDING_SOON_MTID, C, &V);
|
||||
int N = Graphs::show_missing(OUT, C->vertex, uses_only);
|
||||
if (N == 0) WRITE("Nothing is missing\n");
|
||||
}
|
||||
void Copies::archive(OUTPUT_STREAM, inbuild_copy *C, inbuild_nest *N, build_methodology *BM) {
|
||||
VMETHOD_CALL(C->edition->work->genre, GENRE_BUILD_COPY_MTID, OUT, C, NULL, FALSE, FALSE, FALSE);
|
||||
build_vertex *V = C->vertex;
|
||||
VMETHOD_CALL(C->edition->work->genre, GENRE_BUILDING_SOON_MTID, C, &V);
|
||||
int NM = Graphs::show_missing(OUT, C->vertex, FALSE);
|
||||
if (NM > 0) WRITE("Because there are missing resources, -archive is cancelled\n");
|
||||
else if (N) Graphs::archive(OUT, C->vertex, N, BM);
|
||||
|
|
|
@ -3,8 +3,17 @@
|
|||
The different sorts of work managed by inbuild.
|
||||
|
||||
@h Genres.
|
||||
For example, "kit" and "extension" will both be both genres. There will be
|
||||
few of these.
|
||||
Each different genre of work managed by Inbuild is represented by an instance
|
||||
of the following structure. (At present, then, there are exactly seven
|
||||
instances of it: nothing the user can do at the command line can change
|
||||
that total.) A work unambiguously specifies what genre it has by means
|
||||
of a non-null pointer to |inbuild_genre|. Moreover, the rules for how Inbuild
|
||||
manages works of this genre are expressed by methods attached to the structure.
|
||||
For example, to copy a work, Inbuild calls the |GENRE_COPY_TO_NEST_MTID|
|
||||
method attached to its |inbuild_genre|.
|
||||
|
||||
Each genre has its own section of code: for example, |Kit Manager| defines
|
||||
the instance |kit_genre| and provides its method functions.
|
||||
|
||||
=
|
||||
typedef struct inbuild_genre {
|
||||
|
@ -15,11 +24,7 @@ typedef struct inbuild_genre {
|
|||
} inbuild_genre;
|
||||
|
||||
inbuild_genre *Genres::new(text_stream *name, int nested) {
|
||||
inbuild_genre *gen;
|
||||
LOOP_OVER(gen, inbuild_genre)
|
||||
if (Str::eq(gen->genre_name, name))
|
||||
return gen;
|
||||
gen = CREATE(inbuild_genre);
|
||||
inbuild_genre *gen = CREATE(inbuild_genre);
|
||||
gen->genre_name = Str::duplicate(name);
|
||||
gen->stored_in_nests = nested;
|
||||
ENABLE_METHOD_CALLS(gen);
|
||||
|
@ -31,40 +36,108 @@ text_stream *Genres::name(inbuild_genre *G) {
|
|||
return G->genre_name;
|
||||
}
|
||||
|
||||
@ Some genres of work, such as kits and extensions, can be stored in nests;
|
||||
others, such as Inform projects, cannot. Whether a copy can be stored in a
|
||||
nest depends only on its genre.
|
||||
|
||||
=
|
||||
int Genres::stored_in_nests(inbuild_genre *G) {
|
||||
if (G == NULL) return FALSE;
|
||||
return G->stored_in_nests;
|
||||
}
|
||||
|
||||
@
|
||||
@h Method functions.
|
||||
And here are the method functions which a genre can, optionally, provide.
|
||||
All of these act on a given work, or a given copy of a work, having the
|
||||
genre in question.
|
||||
|
||||
First, this writes text sufficient to identify a work: e.g., "Locksmith
|
||||
by Emily Short".
|
||||
|
||||
@e GENRE_WRITE_WORK_MTID
|
||||
@e GENRE_CLAIM_AS_COPY_MTID
|
||||
@e GENRE_SCAN_COPY_MTID
|
||||
@e GENRE_SEARCH_NEST_FOR_MTID
|
||||
@e GENRE_COPY_TO_NEST_MTID
|
||||
@e GENRE_GO_OPERATIONAL_MTID
|
||||
@e GENRE_READ_SOURCE_TEXT_FOR_MTID
|
||||
@e GENRE_BUILD_COPY_MTID
|
||||
|
||||
=
|
||||
VMETHOD_TYPE(GENRE_WRITE_WORK_MTID,
|
||||
inbuild_genre *gen, text_stream *OUT, inbuild_work *work)
|
||||
|
||||
@ This looks at a textual file locator, which might be a pathname or a
|
||||
filename, to see if it might refer to a copy of a work of the given genre.
|
||||
If it does, an |inbuild_copy| is created, and the pointer |*C| is set to
|
||||
point to it. If not, no error is issued, and |*C| is left unchanged.
|
||||
|
||||
Errors can, however, be produced if Inbuild is pretty sure that the object
|
||||
in the file system is intended to be such a copy, but is damaged in some way:
|
||||
an extension with a malformed titling line, for example. Such errors are
|
||||
attached to the copy for later issuing.
|
||||
|
||||
@e GENRE_CLAIM_AS_COPY_MTID
|
||||
|
||||
=
|
||||
VMETHOD_TYPE(GENRE_CLAIM_AS_COPY_MTID,
|
||||
inbuild_genre *gen, inbuild_copy **C, text_stream *arg, text_stream *ext,
|
||||
int directory_status)
|
||||
VMETHOD_TYPE(GENRE_SCAN_COPY_MTID,
|
||||
inbuild_genre *gen, inbuild_copy *C)
|
||||
|
||||
@ This searches the nest |N| for anything which (a) looks like a copy of a
|
||||
work of our genre, and (b) meets the given requirements. If a genre does
|
||||
not provide this method, then nothing of that genre can ever appear in
|
||||
|-matching| search results.
|
||||
|
||||
@e GENRE_SEARCH_NEST_FOR_MTID
|
||||
|
||||
=
|
||||
VMETHOD_TYPE(GENRE_SEARCH_NEST_FOR_MTID,
|
||||
inbuild_genre *gen, inbuild_nest *N, inbuild_requirement *req,
|
||||
linked_list *search_results)
|
||||
|
||||
@ Some genres of work involve Inform source text -- Inform projects and
|
||||
extensions, for example. Reading in source text is fairly fast, but it's not
|
||||
an instant process, and we don't automatically perform it. (When an extension
|
||||
is scanned for metadata during claiming, only the opening line is looked at.)
|
||||
|
||||
This method should exist only for such genres, and it should read the source
|
||||
text. It will never be called twice on the same copy.
|
||||
|
||||
@e GENRE_READ_SOURCE_TEXT_FOR_MTID
|
||||
|
||||
=
|
||||
VMETHOD_TYPE(GENRE_READ_SOURCE_TEXT_FOR_MTID,
|
||||
inbuild_genre *gen, inbuild_copy *C)
|
||||
|
||||
@ At the Going Operational phase of Inbuild, each copy is offered the chance
|
||||
to finalise its internal representation. For example, this may be when its
|
||||
build graph is constructed, because we can now know for sure that there are
|
||||
no further unsuspected dependencies.
|
||||
|
||||
This method is optional, and is called exactly once on every copy (whose genre
|
||||
provides it) which has been claimed by Inbuild.
|
||||
|
||||
@e GENRE_GO_OPERATIONAL_MTID
|
||||
|
||||
=
|
||||
VMETHOD_TYPE(GENRE_GO_OPERATIONAL_MTID,
|
||||
inbuild_genre *gen, inbuild_copy *C)
|
||||
|
||||
@ This method is called when a copy is about to be built or have its graph
|
||||
described, for example by |-graph|, |-build| and |-rebuild|. Nothing actually
|
||||
needs to be done, but if any work is needed before building can take place,
|
||||
now's the time; and the vertex to build from can be altered by setting |*V|.
|
||||
(This is used to create upstream targets for Inform projects, such as the
|
||||
blorbed release version. It affects |-graph|, |-build| and |-rebuild| but
|
||||
is ignored for other inspection options such as |-use-missing|.)
|
||||
|
||||
@e GENRE_BUILDING_SOON_MTID
|
||||
|
||||
=
|
||||
VMETHOD_TYPE(GENRE_BUILDING_SOON_MTID,
|
||||
inbuild_genre *gen, inbuild_copy *C, build_vertex **V)
|
||||
|
||||
@ This duplicates, or syncs, a copy |C| of a work in our genre, placing it
|
||||
at a canonical location inside the given nest |N|. In effect, it implements
|
||||
the Inbuild command-line options |-copy-to N| and |-sync-to N|.
|
||||
|
||||
@e GENRE_COPY_TO_NEST_MTID
|
||||
|
||||
=
|
||||
VMETHOD_TYPE(GENRE_COPY_TO_NEST_MTID,
|
||||
inbuild_genre *gen, inbuild_copy *C, inbuild_nest *N, int syncing,
|
||||
build_methodology *meth)
|
||||
VMETHOD_TYPE(GENRE_GO_OPERATIONAL_MTID,
|
||||
inbuild_genre *gen, inbuild_copy *C)
|
||||
VMETHOD_TYPE(GENRE_READ_SOURCE_TEXT_FOR_MTID,
|
||||
inbuild_genre *gen, inbuild_copy *C)
|
||||
VMETHOD_TYPE(GENRE_BUILD_COPY_MTID,
|
||||
inbuild_genre *gen, text_stream *OUT, inbuild_copy *C,
|
||||
build_methodology *BM, int build, int rebuild, int describe_only)
|
||||
|
|
|
@ -18,11 +18,10 @@ void ExtensionManager::start(void) {
|
|||
extension_genre = Genres::new(I"extension", TRUE);
|
||||
METHOD_ADD(extension_genre, GENRE_WRITE_WORK_MTID, ExtensionManager::write_work);
|
||||
METHOD_ADD(extension_genre, GENRE_CLAIM_AS_COPY_MTID, ExtensionManager::claim_as_copy);
|
||||
METHOD_ADD(extension_genre, GENRE_SCAN_COPY_MTID, Extensions::scan);
|
||||
METHOD_ADD(extension_genre, GENRE_SEARCH_NEST_FOR_MTID, ExtensionManager::search_nest_for);
|
||||
METHOD_ADD(extension_genre, GENRE_COPY_TO_NEST_MTID, ExtensionManager::copy_to_nest);
|
||||
METHOD_ADD(extension_genre, GENRE_READ_SOURCE_TEXT_FOR_MTID, ExtensionManager::read_source_text_for);
|
||||
METHOD_ADD(extension_genre, GENRE_BUILD_COPY_MTID, ExtensionManager::build);
|
||||
METHOD_ADD(extension_genre, GENRE_BUILDING_SOON_MTID, ExtensionManager::building_soon);
|
||||
}
|
||||
|
||||
void ExtensionManager::write_work(inbuild_genre *gen, OUTPUT_STREAM, inbuild_work *work) {
|
||||
|
@ -60,7 +59,7 @@ inbuild_copy *ExtensionManager::new_copy(filename *F) {
|
|||
C = Copies::new_in_file(
|
||||
Editions::new(Works::new(extension_genre, I"Untitled", I"Anonymous"),
|
||||
VersionNumbers::null()), F, NULL_GENERAL_POINTER);
|
||||
Copies::scan(C);
|
||||
Extensions::scan(C);
|
||||
if (Works::is_standard_rules(C->edition->work))
|
||||
Extensions::make_standard(ExtensionManager::from_copy(C));
|
||||
Dictionaries::create(ext_copy_cache, key);
|
||||
|
@ -206,12 +205,9 @@ be read in as source text; and some of those might not be compatible with
|
|||
the current VM settings.
|
||||
|
||||
=
|
||||
void ExtensionManager::build(inbuild_genre *gen, text_stream *OUT, inbuild_copy *C,
|
||||
build_methodology *BM, int build, int rebuild, int describe_only) {
|
||||
void ExtensionManager::building_soon(inbuild_genre *gen, inbuild_copy *C, build_vertex **V) {
|
||||
ExtensionManager::ensure_graphed(C);
|
||||
if (describe_only) Graphs::describe(OUT, C->vertex, TRUE);
|
||||
else if (rebuild) Graphs::rebuild(OUT, C->vertex, BM);
|
||||
else if (build) Graphs::build(OUT, C->vertex, BM);
|
||||
*V = C->vertex;
|
||||
}
|
||||
|
||||
void ExtensionManager::ensure_graphed(inbuild_copy *C) {
|
||||
|
|
|
@ -10,11 +10,10 @@ void KitManager::start(void) {
|
|||
kit_genre = Genres::new(I"kit", TRUE);
|
||||
METHOD_ADD(kit_genre, GENRE_WRITE_WORK_MTID, KitManager::write_work);
|
||||
METHOD_ADD(kit_genre, GENRE_CLAIM_AS_COPY_MTID, KitManager::claim_as_copy);
|
||||
METHOD_ADD(kit_genre, GENRE_SCAN_COPY_MTID, Kits::scan);
|
||||
METHOD_ADD(kit_genre, GENRE_SEARCH_NEST_FOR_MTID, KitManager::search_nest_for);
|
||||
METHOD_ADD(kit_genre, GENRE_COPY_TO_NEST_MTID, KitManager::copy_to_nest);
|
||||
METHOD_ADD(kit_genre, GENRE_GO_OPERATIONAL_MTID, KitManager::go_operational);
|
||||
METHOD_ADD(kit_genre, GENRE_BUILD_COPY_MTID, KitManager::build);
|
||||
METHOD_ADD(kit_genre, GENRE_BUILDING_SOON_MTID, KitManager::building_soon);
|
||||
}
|
||||
|
||||
void KitManager::write_work(inbuild_genre *gen, OUTPUT_STREAM, inbuild_work *work) {
|
||||
|
@ -52,7 +51,7 @@ inbuild_copy *KitManager::new_copy(text_stream *name, pathname *P) {
|
|||
inbuild_work *work = Works::new_raw(kit_genre, Str::duplicate(name), NULL);
|
||||
inbuild_edition *edition = Editions::new(work, VersionNumbers::null());
|
||||
C = Copies::new_in_path(edition, P, NULL_GENERAL_POINTER);
|
||||
Copies::scan(C);
|
||||
Kits::scan(C);
|
||||
Dictionaries::create(kit_copy_cache, key);
|
||||
Dictionaries::write_value(kit_copy_cache, key, C);
|
||||
}
|
||||
|
@ -168,11 +167,8 @@ void KitManager::copy_to_nest(inbuild_genre *gen, inbuild_copy *C, inbuild_nest
|
|||
@h Build graph.
|
||||
|
||||
=
|
||||
void KitManager::build(inbuild_genre *gen, text_stream *OUT, inbuild_copy *C,
|
||||
build_methodology *BM, int build, int rebuild, int describe_only) {
|
||||
if (describe_only) Graphs::describe(OUT, C->vertex, TRUE);
|
||||
else if (rebuild) Graphs::rebuild(OUT, C->vertex, BM);
|
||||
else if (build) Graphs::build(OUT, C->vertex, BM);
|
||||
void KitManager::building_soon(inbuild_genre *gen, inbuild_copy *C, build_vertex **V) {
|
||||
*V = C->vertex;
|
||||
}
|
||||
|
||||
void KitManager::build_vertex(inbuild_copy *C) {
|
||||
|
|
|
@ -14,7 +14,7 @@ void ProjectBundleManager::start(void) {
|
|||
METHOD_ADD(project_bundle_genre, GENRE_COPY_TO_NEST_MTID, ProjectBundleManager::copy_to_nest);
|
||||
METHOD_ADD(project_bundle_genre, GENRE_GO_OPERATIONAL_MTID, ProjectBundleManager::go_operational);
|
||||
METHOD_ADD(project_bundle_genre, GENRE_READ_SOURCE_TEXT_FOR_MTID, ProjectBundleManager::read_source_text_for);
|
||||
METHOD_ADD(project_bundle_genre, GENRE_BUILD_COPY_MTID, ProjectBundleManager::build);
|
||||
METHOD_ADD(project_bundle_genre, GENRE_BUILDING_SOON_MTID, ProjectBundleManager::building_soon);
|
||||
}
|
||||
|
||||
void ProjectBundleManager::write_work(inbuild_genre *gen, OUTPUT_STREAM, inbuild_work *work) {
|
||||
|
@ -89,13 +89,9 @@ void ProjectBundleManager::copy_to_nest(inbuild_genre *gen, inbuild_copy *C, inb
|
|||
@h Build graph.
|
||||
|
||||
=
|
||||
void ProjectBundleManager::build(inbuild_genre *gen, text_stream *OUT, inbuild_copy *C,
|
||||
build_methodology *BM, int build, int rebuild, int describe_only) {
|
||||
void ProjectBundleManager::building_soon(inbuild_genre *gen, inbuild_copy *C, build_vertex **V) {
|
||||
inform_project *project = ProjectBundleManager::from_copy(C);
|
||||
build_vertex *V = project->chosen_build_target;
|
||||
if (describe_only) Graphs::describe(OUT, V, TRUE);
|
||||
else if (rebuild) Graphs::rebuild(OUT, V, BM);
|
||||
else if (build) Graphs::build(OUT, V, BM);
|
||||
*V = project->chosen_build_target;
|
||||
}
|
||||
|
||||
@ The build graph for a project will need further thought...
|
||||
|
|
|
@ -14,7 +14,7 @@ void ProjectFileManager::start(void) {
|
|||
METHOD_ADD(project_file_genre, GENRE_COPY_TO_NEST_MTID, ProjectFileManager::copy_to_nest);
|
||||
METHOD_ADD(project_file_genre, GENRE_GO_OPERATIONAL_MTID, ProjectFileManager::go_operational);
|
||||
METHOD_ADD(project_file_genre, GENRE_READ_SOURCE_TEXT_FOR_MTID, ProjectFileManager::read_source_text_for);
|
||||
METHOD_ADD(project_file_genre, GENRE_BUILD_COPY_MTID, ProjectFileManager::build);
|
||||
METHOD_ADD(project_file_genre, GENRE_BUILDING_SOON_MTID, ProjectFileManager::building_soon);
|
||||
}
|
||||
|
||||
void ProjectFileManager::write_work(inbuild_genre *gen, OUTPUT_STREAM, inbuild_work *work) {
|
||||
|
@ -92,13 +92,9 @@ void ProjectFileManager::copy_to_nest(inbuild_genre *gen, inbuild_copy *C, inbui
|
|||
@h Build graph.
|
||||
|
||||
=
|
||||
void ProjectFileManager::build(inbuild_genre *gen, text_stream *OUT, inbuild_copy *C,
|
||||
build_methodology *BM, int build, int rebuild, int describe_only) {
|
||||
inform_project *project = ProjectBundleManager::from_copy(C);
|
||||
build_vertex *V = project->chosen_build_target;
|
||||
if (describe_only) Graphs::describe(OUT, V, TRUE);
|
||||
else if (rebuild) Graphs::rebuild(OUT, V, BM);
|
||||
else if (build) Graphs::build(OUT, V, BM);
|
||||
void ProjectFileManager::building_soon(inbuild_genre *gen, inbuild_copy *C, build_vertex **V) {
|
||||
inform_project *project = ProjectFileManager::from_copy(C);
|
||||
*V = project->chosen_build_target;
|
||||
}
|
||||
|
||||
@ The build graph for a project will need further thought...
|
||||
|
|
|
@ -22,7 +22,7 @@ typedef struct inform_extension {
|
|||
MEMORY_MANAGEMENT
|
||||
} inform_extension;
|
||||
|
||||
void Extensions::scan(inbuild_genre *G, inbuild_copy *C) {
|
||||
void Extensions::scan(inbuild_copy *C) {
|
||||
inform_extension *E = CREATE(inform_extension);
|
||||
E->as_copy = C;
|
||||
Copies::set_content(C, STORE_POINTER_inform_extension(E));
|
||||
|
|
|
@ -33,7 +33,7 @@ typedef struct element_activation {
|
|||
MEMORY_MANAGEMENT
|
||||
} element_activation;
|
||||
|
||||
void Kits::scan(inbuild_genre *G, inbuild_copy *C) {
|
||||
void Kits::scan(inbuild_copy *C) {
|
||||
if (C == NULL) internal_error("no copy to scan");
|
||||
|
||||
inform_kit *K = CREATE(inform_kit);
|
||||
|
|
Loading…
Reference in a new issue