1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-06-17 07:40:47 +03:00

Skeleton of inbuild

This commit is contained in:
Graham Nelson 2020-01-27 22:51:46 +00:00
parent 32baefc39d
commit 1f2cf3cc2d
24 changed files with 645 additions and 34 deletions

View file

@ -100,6 +100,7 @@ This repository is where development is done on the following executables:
* its modules [★ words](docs/words-module/index.html), [★ inflections](docs/inflections-module/index.html), [★ syntax](docs/syntax-module/index.html), [★ problems](docs/problems-module/index.html), [★ linguistics](docs/linguistics-module/index.html), [★ kinds](docs/kinds-module/index.html), [★ core](docs/core-module/index.html), [★ if](docs/if-module/index.html), [★ multimedia](docs/multimedia-module/index.html), [★ index](docs/index-module/index.html)
* their unit test executables [★ words-test](docs/words-test/index.html), [★ inflections-test](docs/inflections-test/index.html), [★ syntax-test](docs/syntax-test/index.html), [★ problems-test](docs/problems-test/index.html), [★ linguistics-test](docs/linguistics-test/index.html), [★ kinds-test](docs/kinds-test/index.html)
* inblorb - The packaging stage of the Inform 7 system, which releases a story file in the blorbed format. - __version 4 'Duralumin'__ - [★ Web](docs/inblorb/index.html) - [▶ Documentation](docs/inblorb/P-ui.html)
* inbuild - A simple build and package manager for the Inform tools. - __version 1 'Avignon'__ - [★ Web](docs/inbuild/index.html) - [▶ Documentation](docs/inbuild/P-ui.html)
* indoc - The documentation-formatter for the Inform 7 system. - __version 4 'Didache'__ - [★ Web](docs/indoc/index.html) - [▶ Documentation](docs/indoc/P-iti.html)
* inpolicy - A lint-like tool to check up on various policies used in Inform source code. - __version 1 'Plan A'__ - [★ Web](docs/inpolicy/index.html) - [▶ Documentation](docs/inpolicy/P-ui.html)
* inrtps - A generator of HTML pages to show for run-time problem messages in Inform. - __version 2 'Benefactive'__ - [★ Web](docs/inrtps/index.html) - [▶ Documentation](docs/inrtps/P-ui.html)

View file

@ -53,7 +53,7 @@
<p class="endnote">The function CodeGen::Architecture::set appears nowhere else.</p>
<p class="endnote">The function CodeGen::Architecture::leafname is used in 1/lbr (<a href="1-lbr.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function CodeGen::Architecture::leafname is used in 1/li (<a href="1-li.html#SP2">&#167;2</a>).</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Prepare stage. </b></p>
@ -190,7 +190,7 @@
<p class="endnote">The function CodeGen::Architecture::run_prepare_stage_inner appears nowhere else.</p>
<hr class="tocbar">
<ul class="toc"><li><a href="1-stg.html">Back to 'Stages'</a></li><li><a href="1-lbr.html">Continue with 'Libraries'</a></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="1-stg.html">Back to 'Stages'</a></li><li><a href="1-li.html">Continue with 'Link Instructions'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -34,7 +34,7 @@
<span class="definitionkeyword">enum</span> <span class="constant">code_generation_target_MT</span>
<span class="definitionkeyword">enum</span> <span class="constant">code_generation_MT</span>
<span class="definitionkeyword">enum</span> <span class="constant">generated_segment_MT</span>
<span class="definitionkeyword">enum</span> <span class="constant">inter_library_MT</span>
<span class="definitionkeyword">enum</span> <span class="constant">link_instruction_MT</span>
</pre>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>With allocation functions:
</p>
@ -51,7 +51,7 @@
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">code_generation_target</span><span class="plain">)</span>
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">code_generation</span><span class="plain">)</span>
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">generated_segment</span><span class="plain">)</span>
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">inter_library</span><span class="plain">)</span>
<span class="identifier">ALLOCATE_INDIVIDUALLY</span><span class="plain">(</span><span class="reserved">link_instruction</span><span class="plain">)</span>
</pre>
<p class="inwebparagraph"></p>

View file

@ -0,0 +1,83 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>1/arc</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body>
<!--Weave of '1/li' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">codegen</a></li><li><a href="index.html#1">Chapter 1: Setting Up</a></li><li><b>Link Instructions</b></li></ul><p class="purpose">Inter often needs to assimilate or otherwise deal with architecture-neutral kits of linkable material, and this is where such requirements are noted.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. </a></li><li><a href="#SP2">&#167;2. Link stage</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b></p>
<pre class="display">
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">link_instruction</span><span class="plain"> {</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">location</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">attachment_point</span><span class="plain">;</span>
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">link_instruction</span><span class="plain">;</span>
<span class="reserved">link_instruction</span><span class="plain"> *</span><span class="functiontext">CodeGen::LinkInstructions::new</span><span class="plain">(</span><span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">attach</span><span class="plain">) {</span>
<span class="reserved">link_instruction</span><span class="plain"> *</span><span class="identifier">link</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">link_instruction</span><span class="plain">);</span>
<span class="identifier">link</span><span class="plain">-</span><span class="element">&gt;location</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">;</span>
<span class="identifier">link</span><span class="plain">-</span><span class="element">&gt;attachment_point</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">attach</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">link</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::LinkInstructions::new appears nowhere else.</p>
<p class="endnote">The structure link_instruction is private to this section.</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. Link stage. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">CodeGen::LinkInstructions::create_pipeline_stage</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="functiontext">CodeGen::Stage::new</span><span class="plain">(</span><span class="identifier">I</span><span class="string">"link"</span><span class="plain">, </span><span class="functiontext">CodeGen::LinkInstructions::run_link_stage</span><span class="plain">, </span><span class="constant">NO_STAGE_ARG</span><span class="plain">, </span><span class="identifier">FALSE</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">CodeGen::LinkInstructions::run_link_stage</span><span class="plain">(</span><span class="reserved">pipeline_step</span><span class="plain"> *</span><span class="identifier">step</span><span class="plain">) {</span>
<span class="reserved">link_instruction</span><span class="plain"> *</span><span class="identifier">req</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">req</span><span class="plain">, </span><span class="reserved">link_instruction</span><span class="plain">, </span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;requirements_list</span><span class="plain">) {</span>
<span class="identifier">TEMPORARY_TEXT</span><span class="plain">(</span><span class="identifier">leafname</span><span class="plain">);</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">leafname</span><span class="plain">, </span><span class="string">"%S.interb"</span><span class="plain">, </span><span class="functiontext">CodeGen::Architecture::leafname</span><span class="plain">());</span>
<span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">arch_file</span><span class="plain"> = </span><span class="identifier">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">req</span><span class="plain">-</span><span class="element">&gt;location</span><span class="plain">, </span><span class="identifier">leafname</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">TextFiles::exists</span><span class="plain">(</span><span class="identifier">arch_file</span><span class="plain">) == </span><span class="identifier">FALSE</span><span class="plain">) </span><span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"no arch file for requirement"</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">leafname</span><span class="plain">);</span>
<span class="identifier">inter_tree</span><span class="plain"> *</span><span class="identifier">sidecar</span><span class="plain"> = </span><span class="identifier">Inter::Tree::new</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">Inter::Binary::test_file</span><span class="plain">(</span><span class="identifier">arch_file</span><span class="plain">)) </span><span class="identifier">Inter::Binary::read</span><span class="plain">(</span><span class="identifier">sidecar</span><span class="plain">, </span><span class="identifier">arch_file</span><span class="plain">);</span>
<span class="reserved">else</span><span class="plain"> </span><span class="identifier">Inter::Textual::read</span><span class="plain">(</span><span class="identifier">sidecar</span><span class="plain">, </span><span class="identifier">arch_file</span><span class="plain">);</span>
<span class="identifier">inter_package</span><span class="plain"> *</span><span class="identifier">pack</span><span class="plain"> = </span><span class="identifier">Inter::Packages::by_url</span><span class="plain">(</span><span class="identifier">sidecar</span><span class="plain">, </span><span class="identifier">req</span><span class="plain">-</span><span class="element">&gt;attachment_point</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">pack</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDERR</span><span class="plain">, </span><span class="string">"sought attachment material at: %S in %f\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">req</span><span class="plain">-</span><span class="element">&gt;attachment_point</span><span class="plain">, </span><span class="identifier">arch_file</span><span class="plain">);</span>
<span class="identifier">internal_error</span><span class="plain">(</span><span class="string">"unable to find attachment point package"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">Inter::Transmigration::move</span><span class="plain">(</span><span class="identifier">pack</span><span class="plain">, </span><span class="identifier">Site::main_package</span><span class="plain">(</span><span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;repository</span><span class="plain">), </span><span class="identifier">FALSE</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">TRUE</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::LinkInstructions::create_pipeline_stage is used in 1/stg (<a href="1-stg.html#SP2">&#167;2</a>).</p>
<p class="endnote">The function CodeGen::LinkInstructions::run_link_stage appears nowhere else.</p>
<hr class="tocbar">
<ul class="toc"><li><a href="1-arc.html">Back to 'Architecture'</a></li><li><a href="1-ppl.html">Continue with 'Pipelines'</a></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -1,7 +1,7 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>1/lbr</title>
<title>1/li</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
@ -54,7 +54,7 @@ have no meaningful contents when the step is not running.
<p class="endnote">The function CodeGen::Pipeline::new_step is used in <a href="#SP3">&#167;3</a>.</p>
<p class="endnote">The structure pipeline_step is accessed in 1/stg, 1/arc, 1/lbr, 2/lnk, 2/plm, 2/rcc, 2/alm, 2/res, 2/ip, 2/unq, 2/rv, 2/erm, 2/erl, 3/cg, 4/fti, 4/fbi, 4/fi and here.</p>
<p class="endnote">The structure pipeline_step is accessed in 1/stg, 1/arc, 1/li, 2/lnk, 2/plm, 2/rcc, 2/alm, 2/res, 2/ip, 2/unq, 2/rv, 2/erm, 2/erl, 3/cg, 4/fti, 4/fbi, 4/fi and here.</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b>This wipes clean the temporary storage for a step.
</p>
@ -70,7 +70,7 @@ have no meaningful contents when the step is not running.
<span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;the_PP</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;repository</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;pipeline</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;requirements_list</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="reserved">inter_library</span><span class="plain">);</span>
<span class="identifier">step</span><span class="plain">-</span><span class="element">&gt;requirements_list</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="identifier">inter_library</span><span class="plain">);</span>
<span class="plain">}</span>
</pre>
@ -489,7 +489,7 @@ logging:
<p class="endnote">The function CodeGen::Pipeline::uks appears nowhere else.</p>
<hr class="tocbar">
<ul class="toc"><li><a href="1-lbr.html">Back to 'Libraries'</a></li><li><i>(This section ends Chapter 1: Setting Up.)</i></li></ul><hr class="tocbar">
<ul class="toc"><li><a href="1-li.html">Back to 'Link Instructions'</a></li><li><i>(This section ends Chapter 1: Setting Up.)</i></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

View file

@ -50,7 +50,7 @@ write output to; others are not.
<p class="inwebparagraph"></p>
<p class="endnote">The function CodeGen::Stage::new is used in <a href="#SP2">&#167;2</a>, 1/arc (<a href="1-arc.html#SP2">&#167;2</a>), 1/lbr (<a href="1-lbr.html#SP2">&#167;2</a>), 2/lnk (<a href="2-lnk.html#SP1">&#167;1</a>), 2/plm (<a href="2-plm.html#SP1">&#167;1</a>), 2/rcc (<a href="2-rcc.html#SP1">&#167;1</a>), 2/alm (<a href="2-alm.html#SP1">&#167;1</a>), 2/res (<a href="2-res.html#SP1">&#167;1</a>), 2/ip (<a href="2-ip.html#SP1">&#167;1</a>), 2/unq (<a href="2-unq.html#SP1">&#167;1</a>), 2/rv (<a href="2-rv.html#SP1">&#167;1</a>), 2/erm (<a href="2-erm.html#SP1">&#167;1</a>), 2/erl (<a href="2-erl.html#SP1">&#167;1</a>), 3/cg (<a href="3-cg.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function CodeGen::Stage::new is used in <a href="#SP2">&#167;2</a>, 1/arc (<a href="1-arc.html#SP2">&#167;2</a>), 1/li (<a href="1-li.html#SP2">&#167;2</a>), 2/lnk (<a href="2-lnk.html#SP1">&#167;1</a>), 2/plm (<a href="2-plm.html#SP1">&#167;1</a>), 2/rcc (<a href="2-rcc.html#SP1">&#167;1</a>), 2/alm (<a href="2-alm.html#SP1">&#167;1</a>), 2/res (<a href="2-res.html#SP1">&#167;1</a>), 2/ip (<a href="2-ip.html#SP1">&#167;1</a>), 2/unq (<a href="2-unq.html#SP1">&#167;1</a>), 2/rv (<a href="2-rv.html#SP1">&#167;1</a>), 2/erm (<a href="2-erm.html#SP1">&#167;1</a>), 2/erl (<a href="2-erl.html#SP1">&#167;1</a>), 3/cg (<a href="3-cg.html#SP1">&#167;1</a>).</p>
<p class="endnote">The structure pipeline_stage is accessed in 1/ppl and here.</p>
@ -73,7 +73,7 @@ to the routine below.
<span class="functiontext">CodeGen::create_pipeline_stage</span><span class="plain">();</span>
<span class="functiontext">CodeGen::Architecture::create_pipeline_stage</span><span class="plain">();</span>
<span class="functiontext">CodeGen::Libraries::create_pipeline_stage</span><span class="plain">();</span>
<span class="functiontext">CodeGen::LinkInstructions::create_pipeline_stage</span><span class="plain">();</span>
<span class="functiontext">CodeGen::Assimilate::create_pipeline_stage</span><span class="plain">();</span>
<span class="functiontext">CodeGen::Eliminate::create_pipeline_stage</span><span class="plain">();</span>
<span class="functiontext">CodeGen::Externals::create_pipeline_stage</span><span class="plain">();</span>

View file

@ -28,8 +28,8 @@
<span class="purpose">To deal with multiple inter architectures.</span></p>
</li>
<li>
<p><a href="1-lbr.html"><spon class="sectiontitle">Libraries</span></a> -
<span class="purpose">Architecture-neutral blocks of linkable inter material are called libraries.</span></p>
<p><a href="1-li.html"><spon class="sectiontitle">Link Instructions</span></a> -
<span class="purpose">Inter often needs to assimilate or otherwise deal with architecture-neutral kits of linkable material, and this is where such requirements are noted.</span></p>
</li>
<li>
<p><a href="1-ppl.html"><spon class="sectiontitle">Pipelines</span></a> -

View file

@ -19,7 +19,8 @@
<pre class="display">
<span class="reserved">typedef</span><span class="plain"> </span><span class="reserved">struct</span><span class="plain"> </span><span class="reserved">inform_kit</span><span class="plain"> {</span>
<span class="reserved">struct</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">struct</span><span class="plain"> </span><span class="identifier">inter_library</span><span class="plain"> *</span><span class="identifier">lib</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">location</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">attachment_point</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">early_source</span><span class="plain">;</span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">linked_list</span><span class="plain"> *</span><span class="identifier">ittt</span><span class="plain">; </span> <span class="comment">of <code class="display"><span class="extract">inform_kit_ittt</span></code></span>
<span class="reserved">struct</span><span class="plain"> </span><span class="identifier">linked_list</span><span class="plain"> *</span><span class="identifier">kind_definitions</span><span class="plain">; </span> <span class="comment">of <code class="display"><span class="extract">text_stream</span></code></span>
@ -45,14 +46,21 @@
<span class="identifier">MEMORY_MANAGEMENT</span>
<span class="plain">} </span><span class="reserved">element_activation</span><span class="plain">;</span>
<span class="reserved">inform_kit</span><span class="plain"> *</span><span class="functiontext">Kits::load</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="identifier">pathname</span><span class="plain"> *</span><span class="functiontext">Kits::find</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">N</span><span class="plain">, </span><span class="identifier">pathname</span><span class="plain"> **</span><span class="identifier">PP</span><span class="plain">) {</span>
<span class="reserved">for</span><span class="plain"> (</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">i</span><span class="plain">=0; </span><span class="identifier">i</span><span class="plain">&lt;</span><span class="identifier">N</span><span class="plain">; </span><span class="identifier">i</span><span class="plain">++) {</span>
<span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="identifier">Pathnames::subfolder</span><span class="plain">(</span><span class="identifier">PP</span><span class="plain">[</span><span class="identifier">i</span><span class="plain">], </span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="identifier">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"kit_metadata.txt"</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">TextFiles::exists</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">)) </span><span class="reserved">return</span><span class="plain"> </span><span class="identifier">P</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inform_kit</span><span class="plain"> *</span><span class="functiontext">Kits::load_at</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="identifier">pathname</span><span class="plain"> *</span><span class="identifier">P</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>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;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">K</span><span class="plain">-</span><span class="element">&gt;lib</span><span class="plain"> = </span><span class="identifier">CodeGen::Libraries::find</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="constant">NO_FS_AREAS</span><span class="plain">, </span><span class="identifier">pathname_of_inter_resources</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;lib</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDERR</span><span class="plain">, </span><span class="string">"Cannot find kit '%S'\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">Problems::Fatal::issue</span><span class="plain">(</span><span class="string">"Unable to find one of the Inform support kits"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;attachment_point</span><span class="plain"> = </span><span class="identifier">Str::new</span><span class="plain">();</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;attachment_point</span><span class="plain">, </span><span class="string">"/main/%S"</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;location</span><span class="plain"> = </span><span class="identifier">P</span><span class="plain">;</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;early_source</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;priority</span><span class="plain"> = 10;</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;ittt</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="reserved">inform_kit_ittt</span><span class="plain">);</span>
@ -63,14 +71,22 @@
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;supports_natural_language</span><span class="plain"> = </span><span class="identifier">FALSE</span><span class="plain">;</span>
<span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;index_template</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="identifier">CodeGen::Libraries::location</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;lib</span><span class="plain">);</span>
<span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="identifier">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"kit_metadata.txt"</span><span class="plain">);</span>
<span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="identifier">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;location</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"kit_metadata.txt"</span><span class="plain">);</span>
<span class="identifier">TextFiles::read</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">, </span><span class="identifier">FALSE</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="functiontext">Kits::read_metadata</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, (</span><span class="reserved">void</span><span class="plain"> *) </span><span class="identifier">K</span><span class="plain">);</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">K</span><span class="plain">;</span>
<span class="plain">}</span>
<span class="reserved">inform_kit</span><span class="plain"> *</span><span class="functiontext">Kits::load</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="identifier">pathname</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="functiontext">Kits::find</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="constant">NO_FS_AREAS</span><span class="plain">, </span><span class="identifier">pathname_of_inter_resources</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">P</span><span class="plain"> == </span><span class="identifier">NULL</span><span class="plain">) {</span>
<span class="identifier">WRITE_TO</span><span class="plain">(</span><span class="identifier">STDERR</span><span class="plain">, </span><span class="string">"Cannot find kit '%S'\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">name</span><span class="plain">);</span>
<span class="identifier">Problems::Fatal::issue</span><span class="plain">(</span><span class="string">"Unable to find one of the Inform support kits"</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="functiontext">Kits::load_at</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">, </span><span class="identifier">P</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Kits::dependency</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">text_stream</span><span class="plain"> *</span><span class="identifier">if_text</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">inc</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">then_text</span><span class="plain">) {</span>
<span class="reserved">inform_kit_ittt</span><span class="plain"> *</span><span class="identifier">ITTT</span><span class="plain"> = </span><span class="identifier">CREATE</span><span class="plain">(</span><span class="reserved">inform_kit_ittt</span><span class="plain">);</span>
<span class="identifier">ITTT</span><span class="plain">-</span><span class="element">&gt;if_name</span><span class="plain"> = </span><span class="identifier">Str::duplicate</span><span class="plain">(</span><span class="identifier">if_text</span><span class="plain">);</span>
@ -188,8 +204,7 @@
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="reserved">inform_kit</span><span class="plain">, </span><span class="identifier">kits_to_include</span><span class="plain">) {</span>
<span class="identifier">text_stream</span><span class="plain"> *</span><span class="identifier">segment</span><span class="plain">;</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">segment</span><span class="plain">, </span><span class="identifier">text_stream</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;kind_definitions</span><span class="plain">) {</span>
<span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="identifier">CodeGen::Libraries::location</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;lib</span><span class="plain">);</span>
<span class="identifier">P</span><span class="plain"> = </span><span class="identifier">Pathnames::subfolder</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"kinds"</span><span class="plain">);</span>
<span class="identifier">pathname</span><span class="plain"> *</span><span class="identifier">P</span><span class="plain"> = </span><span class="identifier">Pathnames::subfolder</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;location</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"kinds"</span><span class="plain">);</span>
<span class="identifier">filename</span><span class="plain"> *</span><span class="identifier">F</span><span class="plain"> = </span><span class="identifier">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">P</span><span class="plain">, </span><span class="identifier">segment</span><span class="plain">);</span>
<span class="identifier">LOG</span><span class="plain">(</span><span class="string">"Loading kinds definitions from %f\</span><span class="plain">n</span><span class="string">"</span><span class="plain">, </span><span class="identifier">F</span><span class="plain">);</span>
<span class="functiontext">I6T::interpret_kindt</span><span class="plain">(</span><span class="identifier">F</span><span class="plain">);</span>
@ -239,6 +254,10 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function Kits::find appears nowhere else.</p>
<p class="endnote">The function Kits::load_at appears nowhere else.</p>
<p class="endnote">The function Kits::load appears nowhere else.</p>
<p class="endnote">The function Kits::dependency appears nowhere else.</p>
@ -310,10 +329,12 @@ files of source text to be read, and quite possibly more.
<span class="identifier">linked_list</span><span class="plain"> *</span><span class="identifier">requirements_list</span><span class="plain"> = </span><span class="identifier">NULL</span><span class="plain">;</span>
<span class="identifier">linked_list</span><span class="plain"> *</span><span class="functiontext">Kits::list_of_inter_libraries</span><span class="plain">(</span><span class="reserved">void</span><span class="plain">) {</span>
<span class="identifier">requirements_list</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="identifier">inter_library</span><span class="plain">);</span>
<span class="identifier">requirements_list</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="identifier">link_instruction</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">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="reserved">inform_kit</span><span class="plain">, </span><span class="identifier">kits_to_include</span><span class="plain">)</span>
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;lib</span><span class="plain">, </span><span class="identifier">inter_library</span><span class="plain">, </span><span class="identifier">requirements_list</span><span class="plain">);</span>
<span class="identifier">LOOP_OVER_LINKED_LIST</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">, </span><span class="reserved">inform_kit</span><span class="plain">, </span><span class="identifier">kits_to_include</span><span class="plain">) {</span>
<span class="identifier">link_instruction</span><span class="plain"> *</span><span class="identifier">link</span><span class="plain"> = </span><span class="identifier">CodeGen::LinkInstructions::new</span><span class="plain">(</span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;location</span><span class="plain">, </span><span class="identifier">K</span><span class="plain">-</span><span class="element">&gt;attachment_point</span><span class="plain">);</span>
<span class="identifier">ADD_TO_LINKED_LIST</span><span class="plain">(</span><span class="identifier">link</span><span class="plain">, </span><span class="identifier">link_instruction</span><span class="plain">, </span><span class="identifier">requirements_list</span><span class="plain">);</span>
<span class="plain">}</span>
<span class="reserved">return</span><span class="plain"> </span><span class="identifier">requirements_list</span><span class="plain">;</span>
<span class="plain">}</span>
</pre>

79
docs/inbuild/1-mn.html Normal file
View file

@ -0,0 +1,79 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>P/ui</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body>
<!--Weave of '1/mn' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">inbuild 1</a></li><li><a href="index.html#1">Chapter 1: The Whole Shooting Match</a></li><li><b>Main</b></li></ul><p class="purpose">The top level, which decides what is to be done and then carries this plan out.</p>
<ul class="toc"><li><a href="#SP1">&#167;1. Main routine</a></li></ul><hr class="tocbar">
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. Main routine. </b></p>
<pre class="definitions">
<span class="definitionkeyword">define</span> <span class="constant">INTOOL_NAME</span><span class="plain"> </span><span class="string">"inbuild"</span>
</pre>
<pre class="display">
<span class="reserved">int</span><span class="plain"> </span><span class="functiontext">main</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">argc</span><span class="plain">, </span><span class="reserved">char</span><span class="plain"> **</span><span class="identifier">argv</span><span class="plain">) {</span>
<span class="functiontext">Foundation::start</span><span class="plain">();</span>
&lt;<span class="cwebmacro">Read the command line</span> <span class="cwebmacronumber">1.1</span>&gt;<span class="plain">;</span>
<span class="functiontext">Foundation::end</span><span class="plain">();</span>
<span class="reserved">return</span><span class="plain"> 0;</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function main appears nowhere else.</p>
<p class="inwebparagraph"><a id="SP1_1"></a><b>&#167;1.1. </b>We use Foundation to read the command line:
</p>
<p class="macrodefinition"><code class="display">
&lt;<span class="cwebmacrodefn">Read the command line</span> <span class="cwebmacronumber">1.1</span>&gt; =
</code></p>
<pre class="displaydefn">
<span class="functiontext">CommandLine::declare_heading</span><span class="plain">(</span>
<span class="identifier">L</span><span class="string">"[[Purpose]]\</span><span class="plain">n</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span>
<span class="identifier">L</span><span class="string">"usage: inbuild\</span><span class="plain">n</span><span class="string">"</span><span class="plain">);</span>
<span class="functiontext">CommandLine::read</span><span class="plain">(</span><span class="identifier">argc</span><span class="plain">, </span><span class="identifier">argv</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, &amp;</span><span class="functiontext">Main::option</span><span class="plain">, &amp;</span><span class="functiontext">Main::bareword</span><span class="plain">);</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">This code is used in <a href="#SP1">&#167;1</a>.</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b></p>
<pre class="display">
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Main::option</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">val</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">arg</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">state</span><span class="plain">) {</span>
<span class="plain">}</span>
<span class="reserved">void</span><span class="plain"> </span><span class="functiontext">Main::bareword</span><span class="plain">(</span><span class="reserved">int</span><span class="plain"> </span><span class="identifier">id</span><span class="plain">, </span><span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">arg</span><span class="plain">, </span><span class="reserved">void</span><span class="plain"> *</span><span class="identifier">state</span><span class="plain">) {</span>
<span class="plain">}</span>
</pre>
<p class="inwebparagraph"></p>
<p class="endnote">The function Main::option is used in <a href="#SP1_1">&#167;1.1</a>.</p>
<p class="endnote">The function Main::bareword is used in <a href="#SP1_1">&#167;1.1</a>.</p>
<hr class="tocbar">
<ul class="toc"><li><i>(This section begins Chapter 1: The Whole Shooting Match.)</i></li><li><i>(This section ends Chapter 1: The Whole Shooting Match.)</i></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

22
docs/inbuild/P-ui.html Normal file
View file

@ -0,0 +1,22 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Booklet Title</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body>
<!--Weave of 'P/ui' generated by 7-->
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><a href="index.html">inbuild 1</a></li><li><a href="index.html#P">Preliminaries</a></li><li><b>Using Inbuild</b></li></ul><p class="purpose">A brief user guide.</p>
<p class="inwebparagraph"><a id="SP1"></a><b>&#167;1. </b>Inbuild is a rudimentary build and package manager for the Inform tools.
</p>
<hr class="tocbar">
<ul class="toc"><li><i>(This section begins Preliminaries.)</i></li><li><i>(This section ends Preliminaries.)</i></li></ul><hr class="tocbar">
<!--End of weave-->
</body>
</html>

BIN
docs/inbuild/crumbs.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

39
docs/inbuild/index.html Normal file
View file

@ -0,0 +1,39 @@
<html>
<head>
<title>inbuild 1</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="inweb.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body>
<ul class="crumbs"><li><a href="../webs.html">&#9733;</a></li><li><b>inbuild 1</b></li></ul>
<p class="purpose">A simple build and package manager for the Inform tools.</p>
<hr>
<ul class="chapterlist">
<li>
<p><a name="P"></a><spon class="chaptertitle">Preliminaries</span></p>
<p><span class="purpose"></span></p>
<ul class="sectionlist">
<li>
<p><a href="P-ui.html"><spon class="sectiontitle">Using Inbuild</span></a> -
<span class="purpose">A brief user guide.</span></p>
</li>
</ul>
</li>
<li>
<p><a name="1"></a><spon class="chaptertitle">Chapter 1: The Whole Shooting Match</span></p>
<p><span class="purpose"></span></p>
<ul class="sectionlist">
<li>
<p><a href="1-mn.html"><spon class="sectiontitle">Main</span></a> -
<span class="purpose">The top level, which decides what is to be done and then carries this plan out.</span></p>
</li>
</ul>
</li>
</ul>
<hr>
</body>
</html>

288
docs/inbuild/inweb.css Normal file
View file

@ -0,0 +1,288 @@
/* This is a CSS file for pages woven by the literate programming tool inweb */
/* We'll start with syntax colouring, since everyone likes to toy with this: */
.cwebmacrotext { color: #000000; font-weight: bold; } /* The name of a web macro */
.functiontext { color: #C00000; } /* When a C function is being defined */
.string { color: #408040; } /* A double-quoted C literal string */
.character { color: #204020; } /* A single-quoted C literal character */
.constant { color: #204020; } /* A named constant */
.element { color: #40407f; } /* A C structure element */
.identifier { color: #4040ff; } /* An identifier */
.reserved { color: #600000; } /* A reserved word */
/* Comments at the end of lines are rendered like so: */
.comment {
font: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
color: #404040;
font-style:italic;
}
/* The name of a web macro when being used: */
.cwebmacro {
font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
text-decoration: none;
color: #000000; font-weight: bold;
}
.cwebmacronumber {
font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
font-size: 80%;
text-decoration: none;
color: #000000;
}
/* And when being defined: */
.cwebmacrodefn {
font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
text-decoration: none;
color: #000000; font-weight: bold;
font-weight:bold;
}
/* Now some generalities: */
body {
background-color: #ffffff;
margin: 8px;
font-family: "Lucida Grande", "Lucida Sans Unicode", Helvetica, Arial, Verdana, sans-serif;
font-size: 16px;
line-height: 24px;
background-color: transparent;
-webkit-font-smoothing: antialiased;
}
/* Forms of paragraph: */
p {
margin: 0;
padding-top: 5px;
padding-bottom: 5px;
clear: both;
}
/* Where an inweb paragraph begins: */
p.inwebparagraph {
width: 60em;
line-height: 150%;
padding-top: 15px;
padding-bottom: 5px;
}
/* If a web macro definition begins in its own paragraph, this is it: */
p.macrodefinition {
padding-top: 0px;
padding-bottom: 0px;
margin-left: 30px;
}
/* The endnotes at the foot of code: "The function foo_bar is used in ..." */
p.endnote {
font-size: 0.8em;
padding-top: 0px;
padding-bottom: 0px;
margin-left: 30px;
text-decoration:none;
color: #000000;
}
/* The Purpose slug: */
p.purpose {
width: 60em;
line-height: 150%;
font-size: 1em;
font-style:italic;
margin-left: 15px;
}
/* Blocks of code appear in these */
pre {
font-family: Monaco, monospace;
}
pre.display {
padding: 3px;
margin-top: 5px;
margin-bottom: 5px;
margin-left: 30px;
margin-right: 10px;
background: #f8f8f8;
border-width: 1px;
border-style: solid solid solid solid;
border-color: #ccc;
word-wrap: break-word;
white-space: pre-wrap;
}
pre.displaydefn {
padding: 3px;
margin-top: 0px;
margin-bottom: 0px;
margin-left: 0px;
margin-right: 10px;
background: #f8f8f8;
border-width: 1px;
border-style: solid solid solid solid;
border-color: #ccc;
word-wrap: break-word;
white-space: pre-wrap;
}
pre.definitions {
padding-top: 0px;
margin-top: 0px;
margin-left: 0px;
margin-right: 10px;
word-wrap: break-word;
white-space: pre-wrap;
}
/* The following are for breadcrumbs of links: */
ul, li {
list-style-type:none;
padding:0;
margin:0;
}
.crumbs {
border:1px solid #dedede;
height:3.45em;
}
.crumbs li {
float:left;
line-height:2.3em;
padding-left:.75em;
color:#333;
font-size: 1.5em;
}
.crumbs li a {
display:block;
padding:0 15px 0 0;
background:url(crumbs.gif) no-repeat right center;
}
.crumbs li a:link, #crumbs li a:visited {
text-decoration:none;
color:#333;
}
.crumbs li a:hover, #crumbs li a:focus {
color:#dd2c0d;
}
/* This is for items in lists from inweb source: */
ul.items {
margin-top: 3px;
margin-bottom: 3px;
}
ul.items li {
margin-top: 1px;
margin-bottom: 1px;
margin-left: 15px;
}
/* And this is for each section's table of contents: */
ul.toc {
margin-top: 3px;
margin-bottom: 3px;
}
ul.toc li {
float:left;
margin-left: 15px;
color:#000;
}
ul.toc li a {
display:block;
}
ul.toc li a:link, ul.toc li a:visited {
text-decoration:none;
color:#000;
}
ul.toc li a:hover, ul.toc li a:focus {
color:#dd2c0d;
}
hr.tocbar {
clear: both;
margin-top:3px;
margin-bottom:3px;
color:#333;
border:0
background-color:#333;
}
/* This is for cross-reference links ("This code is used in ...") */
p.endnote:link, p.endnote:visited, p.endnote:hover, p.endnote:focus {
text-decoration:none;
color:#000;
}
p.endnote a:link, p.endnote a:visited {
text-decoration:none;
color:#000;
}
p.endnote a:hover, p.endnote a:focus {
text-decoration:none;
color:#dd2c0d;
}
/* Now for the index page */
p.heading {
margin-top: 2px;
margin-bottom: 2px;
font-size: 20
}
p.chapter {
font-size: 14
}
p.tight {
font-size: 12
}
p.tightin {
padding-left: 25px;
font-size: 12
}
.chapterlist li {
padding-top: 8px;
padding-left: 16px;
}
.chaptertitle {
font-weight: bold;
}
.chapterlist .sectionlist li {
padding-left: 48px;
}
span.definitionkeyword {
color:#801010;
font-weight:bold;
}
span.extract {
font-size: 15px;
border: 1px solid #e8e8e8;
border-radius: 3px;
background-color: #eef;
width: 100%;
padding: 3px;
}

View file

@ -43,7 +43,7 @@ when they want I7 to run.
<p class="inwebparagraph"></p>
<p class="endnote">The function main is used in 2/pt (<a href="2-pt.html#SP52">&#167;52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">&#167;3.1</a>), 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 2/cnn (<a href="2-cnn.html#SP1">&#167;1</a>), 3/rst (<a href="3-rst.html#SP6">&#167;6</a>), 4/am (<a href="4-am.html#SP26_1">&#167;26.1</a>), 8/ef (<a href="8-ef.html#SP26">&#167;26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">&#167;3.2</a>), 10/varc (<a href="10-varc.html#SP14">&#167;14</a>), 19/tb (<a href="19-tb.html#SP27">&#167;27</a>, <a href="19-tb.html#SP27_1">&#167;27.1</a>, <a href="19-tb.html#SP27_1_3">&#167;27.1.3</a>, <a href="19-tb.html#SP29">&#167;29</a>), 21/rl2 (<a href="21-rl2.html#SP23">&#167;23</a>), 22/ph (<a href="22-ph.html#SP4">&#167;4</a>), 22/pu (<a href="22-pu.html#SP3">&#167;3</a>), 26/uo (<a href="26-uo.html#SP11_1">&#167;11.1</a>), 27/cm (<a href="27-cm.html#SP1">&#167;1</a>), 1/bs (<a href="1-bs.html#SP2">&#167;2</a>), 1/lbr (<a href="1-lbr.html#SP1">&#167;1</a>), 3/fc (<a href="3-fc.html#SP1">&#167;1</a>), 3/sm (<a href="3-sm.html#SP36">&#167;36</a>, <a href="3-sm.html#SP36_1">&#167;36.1</a>, <a href="3-sm.html#SP38">&#167;38</a>), 3/em2 (<a href="3-em2.html#SP24">&#167;24</a>), 4/ap (<a href="4-ap.html#SP2">&#167;2</a>), 2/hf (<a href="2-hf.html#SP6">&#167;6</a>).</p>
<p class="endnote">The function main is used in 2/pt (<a href="2-pt.html#SP52">&#167;52</a>), 2/pl2 (<a href="2-pl2.html#SP3_1">&#167;3.1</a>), 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 2/cnn (<a href="2-cnn.html#SP1">&#167;1</a>), 1/kts (<a href="1-kts.html#SP1">&#167;1</a>), 3/rst (<a href="3-rst.html#SP6">&#167;6</a>), 4/am (<a href="4-am.html#SP26_1">&#167;26.1</a>), 8/ef (<a href="8-ef.html#SP26">&#167;26</a>), 8/ed2 (<a href="8-ed2.html#SP3_2">&#167;3.2</a>), 10/varc (<a href="10-varc.html#SP14">&#167;14</a>), 19/tb (<a href="19-tb.html#SP27">&#167;27</a>, <a href="19-tb.html#SP27_1">&#167;27.1</a>, <a href="19-tb.html#SP27_1_3">&#167;27.1.3</a>, <a href="19-tb.html#SP29">&#167;29</a>), 21/rl2 (<a href="21-rl2.html#SP23">&#167;23</a>), 22/ph (<a href="22-ph.html#SP4">&#167;4</a>), 22/pu (<a href="22-pu.html#SP3">&#167;3</a>), 26/uo (<a href="26-uo.html#SP11_1">&#167;11.1</a>), 27/cm (<a href="27-cm.html#SP1">&#167;1</a>), 1/bs (<a href="1-bs.html#SP2">&#167;2</a>), 3/fc (<a href="3-fc.html#SP1">&#167;1</a>), 3/sm (<a href="3-sm.html#SP36">&#167;36</a>, <a href="3-sm.html#SP36_1">&#167;36.1</a>, <a href="3-sm.html#SP38">&#167;38</a>), 3/em2 (<a href="3-em2.html#SP24">&#167;24</a>), 4/ap (<a href="4-ap.html#SP2">&#167;2</a>), 2/hf (<a href="2-hf.html#SP6">&#167;6</a>).</p>
<p class="inwebparagraph"><a id="SP3"></a><b>&#167;3. </b>Either way, that brings us here. All our modules have to be started up and
shut down, so we take care of that with one more intermediary. These modules

View file

@ -51,7 +51,7 @@
<span class="identifier">path_to_inter</span><span class="plain"> = </span><span class="functiontext">Pathnames::installation_path</span><span class="plain">(</span><span class="string">"INTER_PATH"</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"inter"</span><span class="plain">);</span>
<span class="identifier">path_to_pipelines</span><span class="plain"> = </span><span class="functiontext">Pathnames::subfolder</span><span class="plain">(</span><span class="identifier">path_to_inter</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"Pipelines"</span><span class="plain">);</span>
<span class="identifier">requirements_list</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="reserved">inter_library</span><span class="plain">);</span>
<span class="identifier">requirements_list</span><span class="plain"> = </span><span class="identifier">NEW_LINKED_LIST</span><span class="plain">(</span><span class="identifier">inter_library</span><span class="plain">);</span>
<span class="functiontext">CommandLine::declare_heading</span><span class="plain">(</span>
<span class="identifier">L</span><span class="string">"[[Purpose]]\</span><span class="plain">n</span><span class="string">\</span><span class="plain">n</span><span class="string">"</span>
@ -83,8 +83,6 @@
<span class="functiontext">CommandLine::read</span><span class="plain">(</span><span class="identifier">argc</span><span class="plain">, </span><span class="identifier">argv</span><span class="plain">, </span><span class="identifier">NULL</span><span class="plain">, &amp;</span><span class="functiontext">Main::respond</span><span class="plain">, &amp;</span><span class="functiontext">Main::add_file</span><span class="plain">);</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="identifier">template_action</span><span class="plain"> == </span><span class="constant">ASSIMILATE_CLSW</span><span class="plain">) {</span>
<span class="reserved">inter_library</span><span class="plain"> *</span><span class="identifier">lib</span><span class="plain"> = </span><span class="functiontext">CodeGen::Libraries::new</span><span class="plain">(</span><span class="identifier">template_path</span><span class="plain">);</span>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">attach</span><span class="plain"> = </span><span class="functiontext">CodeGen::Libraries::URL</span><span class="plain">(</span><span class="identifier">lib</span><span class="plain">);</span>
<span class="reserved">text_stream</span><span class="plain"> *</span><span class="identifier">name</span><span class="plain"> = </span><span class="functiontext">CodeGen::Architecture::leafname</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Str::len</span><span class="plain">(</span><span class="identifier">name</span><span class="plain">) == 0) </span><span class="functiontext">Errors::fatal</span><span class="plain">(</span><span class="string">"no -architecture given"</span><span class="plain">);</span>
<span class="identifier">pipeline_as_file</span><span class="plain"> = </span><span class="functiontext">Filenames::in_folder</span><span class="plain">(</span><span class="identifier">path_to_pipelines</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"assimilate.interpipeline"</span><span class="plain">);</span>
@ -103,9 +101,7 @@
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">leafname</span><span class="plain">);</span>
<span class="identifier">DISCARD_TEXT</span><span class="plain">(</span><span class="identifier">fullname</span><span class="plain">);</span>
<span class="reserved">match_results</span><span class="plain"> </span><span class="identifier">mr</span><span class="plain"> = </span><span class="functiontext">Regexp::create_mr</span><span class="plain">();</span>
<span class="reserved">if</span><span class="plain"> (</span><span class="functiontext">Regexp::match</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">, </span><span class="identifier">attach</span><span class="plain">, </span><span class="identifier">L</span><span class="string">"/main/(%c+)"</span><span class="plain">)) {</span>
<span class="functiontext">Str::copy</span><span class="plain">(</span><span class="functiontext">Dictionaries::create_text</span><span class="plain">(</span><span class="identifier">pipeline_vars</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"*attach"</span><span class="plain">), </span><span class="identifier">mr</span><span class="element">.exp</span><span class="plain">[0]);</span>
<span class="plain">}</span>
<span class="functiontext">Str::copy</span><span class="plain">(</span><span class="functiontext">Dictionaries::create_text</span><span class="plain">(</span><span class="identifier">pipeline_vars</span><span class="plain">, </span><span class="identifier">I</span><span class="string">"*attach"</span><span class="plain">), </span><span class="functiontext">Pathnames::directory_name</span><span class="plain">(</span><span class="identifier">template_path</span><span class="plain">));</span>
<span class="functiontext">Regexp::dispose_of</span><span class="plain">(&amp;</span><span class="identifier">mr</span><span class="plain">);</span>
<span class="plain">}</span>
@ -123,7 +119,7 @@
<p class="inwebparagraph"></p>
<p class="endnote">The function main is used in 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 2/cnn (<a href="2-cnn.html#SP1">&#167;1</a>), 1/bs (<a href="1-bs.html#SP2">&#167;2</a>), 1/lbr (<a href="1-lbr.html#SP1">&#167;1</a>), 3/fc (<a href="3-fc.html#SP1">&#167;1</a>).</p>
<p class="endnote">The function main is used in 2/pck (<a href="2-pck.html#SP3">&#167;3</a>), 2/cnn (<a href="2-cnn.html#SP1">&#167;1</a>), 1/bs (<a href="1-bs.html#SP2">&#167;2</a>), 3/fc (<a href="3-fc.html#SP1">&#167;1</a>).</p>
<p class="inwebparagraph"><a id="SP2"></a><b>&#167;2. </b></p>

View file

@ -157,6 +157,12 @@ These pages showcase the woven form, and are for human eyes only.</p>
version 4 'Duralumin'
- <span class="purpose">The packaging stage of the Inform 7 system, which releases a story file in the blorbed format.</span>
Documentation is <a href="inblorb/P-ui.html">here</a>.</p>
</li>
<li>
<p>&#9733; <a href="inbuild/index.html"><spon class="sectiontitle">inbuild</span></a> -
version 1 'Avignon'
- <span class="purpose">A simple build and package manager for the Inform tools.</span>
Documentation is <a href="inbuild/P-ui.html">here</a>.</p>
</li>
<li>
<p>&#9733; <a href="indoc/index.html"><spon class="sectiontitle">indoc</span></a> -

14
inbuild/.gitignore vendored Normal file
View file

@ -0,0 +1,14 @@
# This gitignore was automatically written by inweb -gitignore
# and is not intended for human editing
debug-log.txt
Woven/
Tangled/
!Tangled/*.preform
Tests/intest-history.txt
Tests/Transient/
Tests/hashes.intest
Tests/_Results_Actual/
inbuild.mk

32
inbuild/Chapter 1/Main.w Normal file
View file

@ -0,0 +1,32 @@
[Main::] Main.
The top level, which decides what is to be done and then carries
this plan out.
@h Main routine.
@d INTOOL_NAME "inbuild"
=
int main(int argc, char **argv) {
Foundation::start();
@<Read the command line@>;
Foundation::end();
return 0;
}
@ We use Foundation to read the command line:
@<Read the command line@> =
CommandLine::declare_heading(
L"[[Purpose]]\n\n"
L"usage: inbuild\n");
CommandLine::read(argc, argv, NULL, &Main::option, &Main::bareword);
@ =
void Main::option(int id, int val, text_stream *arg, void *state) {
}
void Main::bareword(int id, text_stream *arg, void *state) {
}

15
inbuild/Contents.w Normal file
View file

@ -0,0 +1,15 @@
Title: inbuild
Author: Graham Nelson
Purpose: A simple build and package manager for the Inform tools.
Language: InC
Licence: Artistic License 2.0
Version Number: 1
Version Name: Avignon
Import: foundation
Preliminaries
Using Inbuild
Chapter 1: The Whole Shooting Match
Main

View file

@ -0,0 +1,5 @@
Using Inbuild.
A brief user guide.
@ Inbuild is a rudimentary build and package manager for the Inform tools.

View file

@ -0,0 +1,3 @@
{basics}
inbuild.mk

1
inbuild/versions.txt Normal file
View file

@ -0,0 +1 @@
Avignon 1 *9Z99 31 December 9999 The beginnings

View file

@ -116,6 +116,7 @@ This repository is where development is done on the following executables:
* its modules [&#9733;&nbsp;words](docs/words-module/index.html), [&#9733;&nbsp;inflections](docs/inflections-module/index.html), [&#9733;&nbsp;syntax](docs/syntax-module/index.html), [&#9733;&nbsp;problems](docs/problems-module/index.html), [&#9733;&nbsp;linguistics](docs/linguistics-module/index.html), [&#9733;&nbsp;kinds](docs/kinds-module/index.html), [&#9733;&nbsp;core](docs/core-module/index.html), [&#9733;&nbsp;if](docs/if-module/index.html), [&#9733;&nbsp;multimedia](docs/multimedia-module/index.html), [&#9733;&nbsp;index](docs/index-module/index.html)
* their unit test executables [&#9733;&nbsp;words-test](docs/words-test/index.html), [&#9733;&nbsp;inflections-test](docs/inflections-test/index.html), [&#9733;&nbsp;syntax-test](docs/syntax-test/index.html), [&#9733;&nbsp;problems-test](docs/problems-test/index.html), [&#9733;&nbsp;linguistics-test](docs/linguistics-test/index.html), [&#9733;&nbsp;kinds-test](docs/kinds-test/index.html)
@primaryd(inblorb, 'Web of InC', 'P-ui')
@primaryd(inbuild, 'Web of InC', 'P-ui')
@primaryd(indoc, 'Web of InC', 'P-iti')
@primaryd(inpolicy, 'Web of InC', 'P-ui')
@primaryd(inrtps, 'Web of InC', 'P-ui')
@ -334,6 +335,7 @@ These pages showcase the woven form, and are for human eyes only.</p>
<p class="chapter">Other webs in this repository:</p>
<ul class="sectionlist">
@web('inblorb', 'P-ui')
@web('inbuild', 'P-ui')
@web('indoc', 'P-iti')
@web('inpolicy', 'P-ui')
@web('inrtps', 'P-ui')

View file

@ -95,6 +95,9 @@ INTERX = inter/Tangled/inter
{tool} INRTPS inrtps inrtps
{dep} INRTPS on FOUNDATION
{tool} INBUILD inbuild inbuild
{dep} INBUILD on FOUNDATION
{tool} INTERTOOL inter inter
{dep} INTERTOOL on FOUNDATION
{dep} INTERTOOL on INTER
@ -429,6 +432,7 @@ pages:
$(INWEBX) inform7/Internal/Inter/BasicInformExtrasKit -weave-docs -weave-into docs/BasicInformExtrasKit
$(INWEBX) inform7/Internal/Inter/EnglishLanguageKit -weave-docs -weave-into docs/EnglishLanguageKit
$(INWEBX) inblorb -weave-docs -weave-into docs/inblorb
$(INWEBX) inbuild -weave-docs -weave-into docs/inbuild
$(INWEBX) indoc -weave-docs -weave-into docs/indoc
$(INWEBX) inform7 -weave-docs -weave-into docs/inform7
$(INWEBX) inform7/core-module -weave-docs -weave-into docs/core-module