1
0
Fork 0
mirror of https://github.com/ganelson/inform.git synced 2024-05-24 11:58:41 +03:00

Enabled JSON metadata to contain licence declaration

This commit is contained in:
Graham Nelson 2024-04-29 23:19:36 +01:00
parent 28c50813a8
commit 0a760f4e3b
38 changed files with 585 additions and 180 deletions

View file

@ -1,6 +1,6 @@
# Inform 7
[Version](notes/versioning.md): 10.2.0-beta+6X50 'Krypton' (28 April 2024)
[Version](notes/versioning.md): 10.2.0-beta+6X51 'Krypton' (29 April 2024)
## About Inform

View file

@ -1,3 +1,3 @@
Prerelease: beta
Build Date: 28 April 2024
Build Number: 6X50
Build Date: 29 April 2024
Build Number: 6X51

View file

@ -125,6 +125,7 @@ group.
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::issue_problem_end</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">METADATA_MALFORMED_CE:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MALFORMED_LICENCE_CE:</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">CE</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">copy</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">found_by</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><a href="2-sq.html#SP1" class="function-link"><span class="function-syntax">Problems::quote_work</span></a><span class="plain-syntax">(1, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">copy</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">found_by</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">work</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">Problems::quote_stream</span><span class="plain-syntax">(2, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">details</span><span class="plain-syntax">);</span>

View file

@ -181,7 +181,7 @@ number of successes.
</li></ul>
<pre class="undisplayed-code all-displayed-code code-font">
<span class="plain-syntax">Size of lexicon: 3173 excerpt meanings</span>
<span class="plain-syntax"> Stored among 859 words out of total vocabulary of 10638</span>
<span class="plain-syntax"> Stored among 859 words out of total vocabulary of 10637</span>
<span class="plain-syntax"> 723 words have a start list: longest belongs to report (with 293 meanings)</span>
<span class="plain-syntax"> 21 words have an end list: longest belongs to digits (with 7 meanings)</span>
<span class="plain-syntax"> 29 words have a middle list: longest belongs to to (with 4 meanings)</span>

View file

@ -90,6 +90,7 @@ which use this module:
<span class="definition-keyword">enum</span> <span class="constant-syntax">inbuild_copy_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">inbuild_edition_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">inbuild_genre_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">inbuild_licence_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">inbuild_nest_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">inbuild_registry_CLASS</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">inbuild_requirement_CLASS</span>
@ -133,6 +134,7 @@ which use this module:
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_edition</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_genre</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_licence</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_nest</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_registry</span><span class="plain-syntax">)</span>
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax">)</span>

View file

@ -72,6 +72,7 @@ fields are blank.
<pre class="definitions code-font"><span class="definition-keyword">enum</span> <span class="constant-syntax">OPEN_FAILED_CE</span><span class="plain-syntax"> </span><span class="identifier-syntax">from</span><span class="plain-syntax"> </span><span class="constant-syntax">1</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">METADATA_MALFORMED_CE</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">MALFORMED_LICENCE_CE</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">EXT_MISWORDED_CE</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">EXT_BAD_DIRNAME_CE</span>
<span class="definition-keyword">enum</span> <span class="constant-syntax">EXT_BAD_FILENAME_CE</span>
@ -126,7 +127,7 @@ fields are blank.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">CE</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">copy_error</span><span class="plain-syntax"> *</span><span class="function-syntax">CopyErrors::new_T</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">CopyErrors::new_T</span></span>:<br/>JSON Metadata - <a href="2-jm.html#SP1_1">&#167;1.1</a>, <a href="2-jm.html#SP1_2">&#167;1.2</a>, <a href="2-jm.html#SP1_3_1">&#167;1.3.1</a>, <a href="2-jm.html#SP1_3_2">&#167;1.3.2</a>, <a href="2-jm.html#SP1_3_3">&#167;1.3.3</a>, <a href="2-jm.html#SP1_3_4">&#167;1.3.4</a>, <a href="2-jm.html#SP1_3_5">&#167;1.3.5</a>, <a href="2-jm.html#SP1_4">&#167;1.4</a>, <a href="2-jm.html#SP1_5">&#167;1.5</a>, <a href="2-jm.html#SP1_6">&#167;1.6</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP3">&#167;3</a>, <a href="4-ebm.html#SP5">&#167;5</a>, <a href="4-ebm.html#SP5_1">&#167;5.1</a>, <a href="4-ebm.html#SP5_1_1">&#167;5.1.1</a>, <a href="4-ebm.html#SP5_1_2">&#167;5.1.2</a>, <a href="4-ebm.html#SP5_1_3">&#167;5.1.3</a><br/>Project Bundle Manager - <a href="4-pbm.html#SP3_1">&#167;3.1</a>, <a href="4-pbm.html#SP3_1_1">&#167;3.1.1</a>, <a href="4-pbm.html#SP3_1_2">&#167;3.1.2</a>, <a href="4-pbm.html#SP3_1_3">&#167;3.1.3</a>, <a href="4-pbm.html#SP3_1_3_1">&#167;3.1.3.1</a><br/>Extension Services - <a href="5-es.html#SP2_2">&#167;2.2</a>, <a href="5-es.html#SP2_2_1">&#167;2.2.1</a>, <a href="5-es.html#SP2_2_1_1">&#167;2.2.1.1</a>, <a href="5-es.html#SP2_2_1_3">&#167;2.2.1.3</a>, <a href="5-es.html#SP2_2_1_3_2">&#167;2.2.1.3.2</a>, <a href="5-es.html#SP2_3">&#167;2.3</a>, <a href="5-es.html#SP2_4">&#167;2.4</a>, <a href="5-es.html#SP2_4_3">&#167;2.4.3</a>, <a href="5-es.html#SP2_4_3_1_1">&#167;2.4.3.1.1</a>, <a href="5-es.html#SP2_4_3_2_1">&#167;2.4.3.2.1</a>, <a href="5-es.html#SP2_5">&#167;2.5</a>, <a href="5-es.html#SP2_7_4">&#167;2.7.4</a>, <a href="5-es.html#SP8">&#167;8</a>, <a href="5-es.html#SP12_1">&#167;12.1</a><br/>Kit Services - <a href="5-ks.html#SP5_3">&#167;5.3</a>, <a href="5-ks.html#SP5_3_1">&#167;5.3.1</a>, <a href="5-ks.html#SP5_3_1_1">&#167;5.3.1.1</a>, <a href="5-ks.html#SP5_3_2">&#167;5.3.2</a>, <a href="5-ks.html#SP12">&#167;12</a><br/>Language Services - <a href="5-ls.html#SP2">&#167;2</a><br/>Project Services - <a href="5-ps2.html#SP2_3">&#167;2.3</a>, <a href="5-ps2.html#SP17">&#167;17</a>, <a href="5-ps2.html#SP22_1">&#167;22.1</a>, <a href="5-ps2.html#SP22_5">&#167;22.5</a>, <a href="5-ps2.html#SP24">&#167;24</a>, <a href="5-ps2.html#SP35">&#167;35</a>, <a href="5-ps2.html#SP36">&#167;36</a><br/>Headings - <a href="6-hdn.html#SP22_2">&#167;22.2</a><br/>Inclusions - <a href="6-inc.html#SP2_2">&#167;2.2</a>, <a href="6-inc.html#SP2_2_1">&#167;2.2.1</a>, <a href="6-inc.html#SP6_1_1">&#167;6.1.1</a>, <a href="6-inc.html#SP6_1_2">&#167;6.1.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cat</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">subcat</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NB</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">copy_error</span><span class="plain-syntax"> *</span><span class="function-syntax">CopyErrors::new_T</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">CopyErrors::new_T</span></span>:<br/>JSON Metadata - <a href="2-jm.html#SP1_1">&#167;1.1</a>, <a href="2-jm.html#SP1_2">&#167;1.2</a>, <a href="2-jm.html#SP1_3_1">&#167;1.3.1</a>, <a href="2-jm.html#SP1_3_2">&#167;1.3.2</a>, <a href="2-jm.html#SP1_3_3">&#167;1.3.3</a>, <a href="2-jm.html#SP1_3_4">&#167;1.3.4</a>, <a href="2-jm.html#SP1_3_5">&#167;1.3.5</a>, <a href="2-jm.html#SP1_4">&#167;1.4</a>, <a href="2-jm.html#SP1_5">&#167;1.5</a>, <a href="2-jm.html#SP1_6">&#167;1.6</a><br/>Licences - <a href="2-lcn.html#SP3">&#167;3</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP3">&#167;3</a>, <a href="4-ebm.html#SP5">&#167;5</a>, <a href="4-ebm.html#SP5_1">&#167;5.1</a>, <a href="4-ebm.html#SP5_1_1">&#167;5.1.1</a>, <a href="4-ebm.html#SP5_1_2">&#167;5.1.2</a>, <a href="4-ebm.html#SP5_1_3">&#167;5.1.3</a><br/>Project Bundle Manager - <a href="4-pbm.html#SP3_1">&#167;3.1</a>, <a href="4-pbm.html#SP3_1_1">&#167;3.1.1</a>, <a href="4-pbm.html#SP3_1_2">&#167;3.1.2</a>, <a href="4-pbm.html#SP3_1_3">&#167;3.1.3</a>, <a href="4-pbm.html#SP3_1_3_1">&#167;3.1.3.1</a><br/>Extension Services - <a href="5-es.html#SP2_2">&#167;2.2</a>, <a href="5-es.html#SP2_2_1">&#167;2.2.1</a>, <a href="5-es.html#SP2_2_1_1">&#167;2.2.1.1</a>, <a href="5-es.html#SP2_2_1_3">&#167;2.2.1.3</a>, <a href="5-es.html#SP2_2_1_3_2">&#167;2.2.1.3.2</a>, <a href="5-es.html#SP2_3">&#167;2.3</a>, <a href="5-es.html#SP2_4">&#167;2.4</a>, <a href="5-es.html#SP2_4_3">&#167;2.4.3</a>, <a href="5-es.html#SP2_4_3_1_1">&#167;2.4.3.1.1</a>, <a href="5-es.html#SP2_4_3_2_1">&#167;2.4.3.2.1</a>, <a href="5-es.html#SP2_5">&#167;2.5</a>, <a href="5-es.html#SP2_7_4">&#167;2.7.4</a>, <a href="5-es.html#SP8">&#167;8</a>, <a href="5-es.html#SP12_1">&#167;12.1</a><br/>Kit Services - <a href="5-ks.html#SP5_3">&#167;5.3</a>, <a href="5-ks.html#SP5_3_1">&#167;5.3.1</a>, <a href="5-ks.html#SP5_3_1_1">&#167;5.3.1.1</a>, <a href="5-ks.html#SP5_3_2">&#167;5.3.2</a>, <a href="5-ks.html#SP12">&#167;12</a><br/>Language Services - <a href="5-ls.html#SP2">&#167;2</a><br/>Project Services - <a href="5-ps2.html#SP2_3">&#167;2.3</a>, <a href="5-ps2.html#SP17">&#167;17</a>, <a href="5-ps2.html#SP22_1">&#167;22.1</a>, <a href="5-ps2.html#SP22_5">&#167;22.5</a>, <a href="5-ps2.html#SP24">&#167;24</a>, <a href="5-ps2.html#SP35">&#167;35</a>, <a href="5-ps2.html#SP36">&#167;36</a><br/>Headings - <a href="6-hdn.html#SP22_2">&#167;22.2</a><br/>Inclusions - <a href="6-inc.html#SP2_2">&#167;2.2</a>, <a href="6-inc.html#SP2_2_1">&#167;2.2.1</a>, <a href="6-inc.html#SP6_1_1">&#167;6.1.1</a>, <a href="6-inc.html#SP6_1_2">&#167;6.1.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">cat</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">subcat</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">NB</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">copy_error</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CE</span><span class="plain-syntax"> = </span><a href="2-ce.html#SP2" class="function-link"><span class="function-syntax">CopyErrors::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">cat</span><span class="plain-syntax">, </span><span class="identifier-syntax">subcat</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">details</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">NB</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">CE</span><span class="plain-syntax">;</span>
@ -202,6 +203,8 @@ output.
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">PROJECT_MALFORMED_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"project malformed: %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">details</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">METADATA_MALFORMED_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S has incorrect metadata: %S"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copy</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">edition</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">work</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">genre</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">genre_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">details</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">MALFORMED_LICENCE_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"%S has incorrect 'legal-metadata': %S"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copy</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">edition</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">work</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">genre</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">genre_name</span><span class="plain-syntax">, </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">details</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">EXT_TITLE_TOO_LONG_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"title too long: %d characters (max is %d)"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CE</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">details_N</span><span class="plain-syntax">, </span><span class="constant-syntax">MAX_EXTENSION_TITLE_LENGTH</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">EXT_AUTHOR_TOO_LONG_CE:</span><span class="plain-syntax"> </span><span class="identifier-syntax">WRITE</span><span class="plain-syntax">(</span><span class="string-syntax">"author name too long: %d characters (max is %d)"</span><span class="plain-syntax">,</span>
@ -329,7 +332,7 @@ output.
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="2-ce.html#SP5">&#167;5</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-cps.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresscurrent">ce</li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresssection"><a href="2-rgs.html">rgs</a></li><li class="progresssection"><a href="2-jm.html">jm</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-rqr.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-cps.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresscurrent">ce</li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresssection"><a href="2-rgs.html">rgs</a></li><li class="progresssection"><a href="2-jm.html">jm</a></li><li class="progresssection"><a href="2-lcn.html">lcn</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-rqr.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -87,6 +87,7 @@ stored here.
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">found_by</span><span class="plain-syntax">; </span><span class="comment-syntax"> if this was claimed in a search</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">errors_reading_source_text</span><span class="plain-syntax">; </span><span class="comment-syntax"> of </span><span class="extract"><span class="extract-syntax">copy_error</span></span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">last_scanned</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_licence</span><span class="plain-syntax"> *</span><span class="identifier-syntax">licence</span><span class="plain-syntax">; </span><span class="comment-syntax"> optional licence declaration which seems to apply</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax">;</span>
</pre>
@ -111,6 +112,7 @@ claiming. If you are a manager, do not call this...
<span class="plain-syntax"> </span><span class="identifier-syntax">copy</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">found_by</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">copy</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">errors_reading_source_text</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">copy_error</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">copy</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">last_scanned</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">copy</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">licence</span><span class="plain-syntax"> = </span><a href="2-lcn.html#SP2" class="function-link"><span class="function-syntax">Licences::new</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">copy</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">copy</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
@ -155,7 +157,7 @@ for later reporting. These are stored in a list.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Copies::attach_error</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Copies::attach_error</span></span>:<br/>JSON Metadata - <a href="2-jm.html#SP1_1">&#167;1.1</a>, <a href="2-jm.html#SP1_2">&#167;1.2</a>, <a href="2-jm.html#SP1_3_1">&#167;1.3.1</a>, <a href="2-jm.html#SP1_3_2">&#167;1.3.2</a>, <a href="2-jm.html#SP1_3_3">&#167;1.3.3</a>, <a href="2-jm.html#SP1_3_4">&#167;1.3.4</a>, <a href="2-jm.html#SP1_3_5">&#167;1.3.5</a>, <a href="2-jm.html#SP1_4">&#167;1.4</a>, <a href="2-jm.html#SP1_5">&#167;1.5</a>, <a href="2-jm.html#SP1_6">&#167;1.6</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP3">&#167;3</a>, <a href="4-ebm.html#SP5">&#167;5</a>, <a href="4-ebm.html#SP5_1">&#167;5.1</a>, <a href="4-ebm.html#SP5_1_1">&#167;5.1.1</a>, <a href="4-ebm.html#SP5_1_2">&#167;5.1.2</a>, <a href="4-ebm.html#SP5_1_3">&#167;5.1.3</a><br/>Project Bundle Manager - <a href="4-pbm.html#SP3_1">&#167;3.1</a>, <a href="4-pbm.html#SP3_1_1">&#167;3.1.1</a>, <a href="4-pbm.html#SP3_1_2">&#167;3.1.2</a>, <a href="4-pbm.html#SP3_1_3">&#167;3.1.3</a>, <a href="4-pbm.html#SP3_1_3_1">&#167;3.1.3.1</a><br/>Extension Services - <a href="5-es.html#SP2_2">&#167;2.2</a>, <a href="5-es.html#SP2_2_1">&#167;2.2.1</a>, <a href="5-es.html#SP2_2_1_1">&#167;2.2.1.1</a>, <a href="5-es.html#SP2_2_1_3">&#167;2.2.1.3</a>, <a href="5-es.html#SP2_2_1_3_2">&#167;2.2.1.3.2</a>, <a href="5-es.html#SP2_3">&#167;2.3</a>, <a href="5-es.html#SP2_4">&#167;2.4</a>, <a href="5-es.html#SP2_4_3">&#167;2.4.3</a>, <a href="5-es.html#SP2_4_3_1_1">&#167;2.4.3.1.1</a>, <a href="5-es.html#SP2_4_3_2_1">&#167;2.4.3.2.1</a>, <a href="5-es.html#SP2_5">&#167;2.5</a>, <a href="5-es.html#SP2_7_4">&#167;2.7.4</a>, <a href="5-es.html#SP8">&#167;8</a>, <a href="5-es.html#SP12_1">&#167;12.1</a><br/>Kit Services - <a href="5-ks.html#SP5_3">&#167;5.3</a>, <a href="5-ks.html#SP5_3_1">&#167;5.3.1</a>, <a href="5-ks.html#SP5_3_1_1">&#167;5.3.1.1</a>, <a href="5-ks.html#SP5_3_2">&#167;5.3.2</a>, <a href="5-ks.html#SP12">&#167;12</a><br/>Language Services - <a href="5-ls.html#SP2">&#167;2</a><br/>Project Services - <a href="5-ps2.html#SP2_3">&#167;2.3</a>, <a href="5-ps2.html#SP17">&#167;17</a>, <a href="5-ps2.html#SP22_1">&#167;22.1</a>, <a href="5-ps2.html#SP22_5">&#167;22.5</a>, <a href="5-ps2.html#SP24">&#167;24</a>, <a href="5-ps2.html#SP35">&#167;35</a>, <a href="5-ps2.html#SP36">&#167;36</a>, <a href="5-ps2.html#SP37_1_2_2">&#167;37.1.2.2</a><br/>Source Text - <a href="6-st.html#SP2">&#167;2</a>, <a href="6-st.html#SP3">&#167;3</a>, <a href="6-st.html#SP6">&#167;6</a>, <a href="6-st.html#SP15">&#167;15</a><br/>Headings - <a href="6-hdn.html#SP11_1">&#167;11.1</a>, <a href="6-hdn.html#SP12_1">&#167;12.1</a>, <a href="6-hdn.html#SP12_2">&#167;12.2</a>, <a href="6-hdn.html#SP14_3">&#167;14.3</a>, <a href="6-hdn.html#SP22_1">&#167;22.1</a>, <a href="6-hdn.html#SP23_2">&#167;23.2</a>, <a href="6-hdn.html#SP22_2">&#167;22.2</a>, <a href="6-hdn.html#SP22_3">&#167;22.3</a><br/>Inclusions - <a href="6-inc.html#SP2_2">&#167;2.2</a>, <a href="6-inc.html#SP2_2_1">&#167;2.2.1</a>, <a href="6-inc.html#SP3_1">&#167;3.1</a>, <a href="6-inc.html#SP6_1_1">&#167;6.1.1</a>, <a href="6-inc.html#SP6_1_2">&#167;6.1.2</a>, <a href="6-inc.html#SP7_1">&#167;7.1</a>, <a href="6-inc.html#SP9_1">&#167;9.1</a>, <a href="6-inc.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="reserved-syntax">copy_error</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CE</span><span class="plain-syntax">) {</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Copies::attach_error</span><button class="popup" onclick="togglePopup('usagePopup5')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup5">Usage of <span class="code-font"><span class="function-syntax">Copies::attach_error</span></span>:<br/>JSON Metadata - <a href="2-jm.html#SP1_1">&#167;1.1</a>, <a href="2-jm.html#SP1_2">&#167;1.2</a>, <a href="2-jm.html#SP1_3_1">&#167;1.3.1</a>, <a href="2-jm.html#SP1_3_2">&#167;1.3.2</a>, <a href="2-jm.html#SP1_3_3">&#167;1.3.3</a>, <a href="2-jm.html#SP1_3_4">&#167;1.3.4</a>, <a href="2-jm.html#SP1_3_5">&#167;1.3.5</a>, <a href="2-jm.html#SP1_4">&#167;1.4</a>, <a href="2-jm.html#SP1_5">&#167;1.5</a>, <a href="2-jm.html#SP1_6">&#167;1.6</a><br/>Licences - <a href="2-lcn.html#SP3">&#167;3</a><br/>Extension Bundle Manager - <a href="4-ebm.html#SP3">&#167;3</a>, <a href="4-ebm.html#SP5">&#167;5</a>, <a href="4-ebm.html#SP5_1">&#167;5.1</a>, <a href="4-ebm.html#SP5_1_1">&#167;5.1.1</a>, <a href="4-ebm.html#SP5_1_2">&#167;5.1.2</a>, <a href="4-ebm.html#SP5_1_3">&#167;5.1.3</a><br/>Project Bundle Manager - <a href="4-pbm.html#SP3_1">&#167;3.1</a>, <a href="4-pbm.html#SP3_1_1">&#167;3.1.1</a>, <a href="4-pbm.html#SP3_1_2">&#167;3.1.2</a>, <a href="4-pbm.html#SP3_1_3">&#167;3.1.3</a>, <a href="4-pbm.html#SP3_1_3_1">&#167;3.1.3.1</a><br/>Extension Services - <a href="5-es.html#SP2_2">&#167;2.2</a>, <a href="5-es.html#SP2_2_1">&#167;2.2.1</a>, <a href="5-es.html#SP2_2_1_1">&#167;2.2.1.1</a>, <a href="5-es.html#SP2_2_1_3">&#167;2.2.1.3</a>, <a href="5-es.html#SP2_2_1_3_2">&#167;2.2.1.3.2</a>, <a href="5-es.html#SP2_3">&#167;2.3</a>, <a href="5-es.html#SP2_4">&#167;2.4</a>, <a href="5-es.html#SP2_4_3">&#167;2.4.3</a>, <a href="5-es.html#SP2_4_3_1_1">&#167;2.4.3.1.1</a>, <a href="5-es.html#SP2_4_3_2_1">&#167;2.4.3.2.1</a>, <a href="5-es.html#SP2_5">&#167;2.5</a>, <a href="5-es.html#SP2_7_4">&#167;2.7.4</a>, <a href="5-es.html#SP8">&#167;8</a>, <a href="5-es.html#SP12_1">&#167;12.1</a><br/>Kit Services - <a href="5-ks.html#SP5_3">&#167;5.3</a>, <a href="5-ks.html#SP5_3_1">&#167;5.3.1</a>, <a href="5-ks.html#SP5_3_1_1">&#167;5.3.1.1</a>, <a href="5-ks.html#SP5_3_2">&#167;5.3.2</a>, <a href="5-ks.html#SP12">&#167;12</a><br/>Language Services - <a href="5-ls.html#SP2">&#167;2</a><br/>Project Services - <a href="5-ps2.html#SP2_3">&#167;2.3</a>, <a href="5-ps2.html#SP17">&#167;17</a>, <a href="5-ps2.html#SP22_1">&#167;22.1</a>, <a href="5-ps2.html#SP22_5">&#167;22.5</a>, <a href="5-ps2.html#SP24">&#167;24</a>, <a href="5-ps2.html#SP35">&#167;35</a>, <a href="5-ps2.html#SP36">&#167;36</a>, <a href="5-ps2.html#SP37_1_2_2">&#167;37.1.2.2</a><br/>Source Text - <a href="6-st.html#SP2">&#167;2</a>, <a href="6-st.html#SP3">&#167;3</a>, <a href="6-st.html#SP6">&#167;6</a>, <a href="6-st.html#SP15">&#167;15</a><br/>Headings - <a href="6-hdn.html#SP11_1">&#167;11.1</a>, <a href="6-hdn.html#SP12_1">&#167;12.1</a>, <a href="6-hdn.html#SP12_2">&#167;12.2</a>, <a href="6-hdn.html#SP14_3">&#167;14.3</a>, <a href="6-hdn.html#SP22_1">&#167;22.1</a>, <a href="6-hdn.html#SP23_2">&#167;23.2</a>, <a href="6-hdn.html#SP22_2">&#167;22.2</a>, <a href="6-hdn.html#SP22_3">&#167;22.3</a><br/>Inclusions - <a href="6-inc.html#SP2_2">&#167;2.2</a>, <a href="6-inc.html#SP2_2_1">&#167;2.2.1</a>, <a href="6-inc.html#SP3_1">&#167;3.1</a>, <a href="6-inc.html#SP6_1_1">&#167;6.1.1</a>, <a href="6-inc.html#SP6_1_2">&#167;6.1.2</a>, <a href="6-inc.html#SP7_1">&#167;7.1</a>, <a href="6-inc.html#SP9_1">&#167;9.1</a>, <a href="6-inc.html#SP11">&#167;11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="reserved-syntax">copy_error</span><span class="plain-syntax"> *</span><span class="identifier-syntax">CE</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"no copy to attach to"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-ce.html#SP4" class="function-link"><span class="function-syntax">CopyErrors::supply_attached_copy</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">ADD_TO_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">CE</span><span class="plain-syntax">, </span><span class="reserved-syntax">copy_error</span><span class="plain-syntax">, </span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">errors_reading_source_text</span><span class="plain-syntax">);</span>
@ -436,7 +438,7 @@ its main task: building an Inform project.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-edt.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresscurrent">cps</li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresssection"><a href="2-rgs.html">rgs</a></li><li class="progresssection"><a href="2-jm.html">jm</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-ce.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-edt.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresscurrent">cps</li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresssection"><a href="2-rgs.html">rgs</a></li><li class="progresssection"><a href="2-jm.html">jm</a></li><li class="progresssection"><a href="2-lcn.html">lcn</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-ce.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -147,7 +147,7 @@ contributes only the un-filename-extended leafname <span class="extract"><span c
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-wrk.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresscurrent">edt</li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresssection"><a href="2-rgs.html">rgs</a></li><li class="progresssection"><a href="2-jm.html">jm</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-cps.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-wrk.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresscurrent">edt</li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresssection"><a href="2-rgs.html">rgs</a></li><li class="progresssection"><a href="2-jm.html">jm</a></li><li class="progresssection"><a href="2-lcn.html">lcn</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-cps.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -282,7 +282,7 @@ the Inbuild command-line options <span class="extract"><span class="extract-synt
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_genre</span><span class="plain-syntax"> *</span><span class="identifier-syntax">gen</span><span class="plain-syntax">, </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">OUT</span><span class="plain-syntax">)</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="1-ic.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">gnr</li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresssection"><a href="2-rgs.html">rgs</a></li><li class="progresssection"><a href="2-jm.html">jm</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-wrk.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="1-ic.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresscurrent">gnr</li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresssection"><a href="2-rgs.html">rgs</a></li><li class="progresssection"><a href="2-jm.html">jm</a></li><li class="progresssection"><a href="2-lcn.html">lcn</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-wrk.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -90,6 +90,8 @@ identifying the copy which it purports to identify.
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="2-jm.html#SP1_4" class="named-paragraph-link"><span class="named-paragraph">Police the "needs"</span><span class="named-paragraph-number">1.4</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON_value</span><span class="plain-syntax"> *</span><span class="identifier-syntax">compatibility</span><span class="plain-syntax"> = </span><span class="identifier-syntax">JSON::look_up_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">obj</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"compatibility"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">compatibility</span><span class="plain-syntax">) </span><span class="named-paragraph-container code-font"><a href="2-jm.html#SP1_6" class="named-paragraph-link"><span class="named-paragraph">Extract compatibility</span><span class="named-paragraph-number">1.6</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON_value</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rights</span><span class="plain-syntax"> = </span><span class="identifier-syntax">JSON::look_up_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">metadata_record</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rights"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rights</span><span class="plain-syntax">) </span><a href="2-lcn.html#SP3" class="function-link"><span class="function-syntax">Licences::from_JSON</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">licence</span><span class="plain-syntax">, </span><span class="identifier-syntax">rights</span><span class="plain-syntax">);</span>
<span class="plain-syntax">}</span>
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">JSONMetadata::read_metadata_file_helper</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">JSONMetadata::read_metadata_file_helper</span></span>:<br/>Registries - <a href="2-rgs.html#SP3">&#167;3</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">,</span>
@ -364,7 +366,7 @@ loads only once.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-rgs.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresssection"><a href="2-rgs.html">rgs</a></li><li class="progresscurrent">jm</li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="3-bg.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-rgs.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresssection"><a href="2-rgs.html">rgs</a></li><li class="progresscurrent">jm</li><li class="progresssection"><a href="2-lcn.html">lcn</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-lcn.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -0,0 +1,213 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Licences</title>
<link href="../docs-assets/Breadcrumbs.css" rel="stylesheet" rev="stylesheet" type="text/css">
<meta name="viewport" content="width=device-width initial-scale=1">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Language" content="en-gb">
<link href="../docs-assets/Contents.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Progress.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Navigation.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Fonts.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Base.css" rel="stylesheet" rev="stylesheet" type="text/css">
<script>
function togglePopup(material_id) {
var popup = document.getElementById(material_id);
popup.classList.toggle("show");
}
</script>
<link href="../docs-assets/Popups.css" rel="stylesheet" rev="stylesheet" type="text/css">
<link href="../docs-assets/Colours.css" rel="stylesheet" rev="stylesheet" type="text/css">
</head>
<body class="commentary-font">
<nav role="navigation">
<h1><a href="../index.html">
<img src="../docs-assets/Inform.png" height=72">
</a></h1>
<ul><li><a href="../index.html">home</a></li>
</ul><h2>Compiler</h2><ul>
<li><a href="../structure.html">structure</a></li>
<li><a href="../inbuildn.html">inbuild</a></li>
<li><a href="../inform7n.html">inform7</a></li>
<li><a href="../intern.html">inter</a></li>
<li><a href="../services.html">services</a></li>
<li><a href="../secrets.html">secrets</a></li>
</ul><h2>Other Tools</h2><ul>
<li><a href="../inblorbn.html">inblorb</a></li>
<li><a href="../indocn.html">indoc</a></li>
<li><a href="../inform6.html">inform6</a></li>
<li><a href="../inpolicyn.html">inpolicy</a></li>
</ul><h2>Resources</h2><ul>
<li><a href="../extensions.html">extensions</a></li>
<li><a href="../kits.html">kits</a></li>
</ul><h2>Repository</h2><ul>
<li><a href="https://github.com/ganelson/inform"><img src="../docs-assets/github.png" height=18> github</a></li>
</ul><h2>Related Projects</h2><ul>
<li><a href="../../../inweb/index.html">inweb</a></li>
<li><a href="../../../intest/index.html">intest</a></li>
</ul>
</nav>
<main role="main">
<!--Weave of 'Licences' generated by Inweb-->
<div class="breadcrumbs">
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="../inbuildn.html">Inbuild Modules</a></li><li><a href="index.html">supervisor</a></li><li><a href="index.html#2">Chapter 2: Conceptual Framework</a></li><li><b>Licences</b></li></ul></div>
<p class="purpose">A copy of any genre can in principle have a licence declaration attached to it.</p>
<ul class="toc"><li><a href="2-lcn.html#SP1">&#167;1. Creation</a></li><li><a href="2-lcn.html#SP3">&#167;3. Date from a JSON object</a></li><li><a href="2-lcn.html#SP4">&#167;4. Data to a JSON object</a></li></ul><hr class="tocbar">
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>&#167;1. Creation. </b>It could be argued that licences belong to editions, not copies, but we want to
be pragmatic. We're not storing the true state of the legal status of the material
in the copy, only what this copy claims about itself.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">typedef</span><span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_licence</span><span class="plain-syntax"> {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">open_source_licence</span><span class="plain-syntax"> *</span><span class="identifier-syntax">standard_licence</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">on_copy</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rights_owner</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">copyright_year</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">revision_year</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">origin_URL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="identifier-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rights_history</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">CLASS_DEFINITION</span>
<span class="plain-syntax">} </span><span class="reserved-syntax">inbuild_licence</span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>The structure inbuild_licence is private to this section.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>Copies begin with this blank sort of non-licence:
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">inbuild_licence</span><span class="plain-syntax"> *</span><span class="function-syntax">Licences::new</span><button class="popup" onclick="togglePopup('usagePopup1')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup1">Usage of <span class="code-font"><span class="function-syntax">Licences::new</span></span>:<br/>Copies - <a href="2-cps.html#SP2">&#167;2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">copy</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_licence</span><span class="plain-syntax"> *</span><span class="identifier-syntax">licence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_licence</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">standard_licence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">on_copy</span><span class="plain-syntax"> = </span><span class="identifier-syntax">copy</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rights_owner</span><span class="plain-syntax"> = </span><span class="identifier-syntax">I</span><span class="string-syntax">"Unknown"</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copyright_year</span><span class="plain-syntax"> = </span><span class="constant-syntax">1980</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">revision_year</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">origin_URL</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rights_history</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">licence</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>&#167;3. Date from a JSON object. </b>This is the optional <span class="extract"><span class="extract-syntax">legal-metadata</span></span> object in any inbuild-standard JSON
metadata file.
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Licences::from_JSON</span><button class="popup" onclick="togglePopup('usagePopup2')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup2">Usage of <span class="code-font"><span class="function-syntax">Licences::from_JSON</span></span>:<br/>JSON Metadata - <a href="2-jm.html#SP1">&#167;1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_licence</span><span class="plain-syntax"> *</span><span class="identifier-syntax">licence</span><span class="plain-syntax">, </span><span class="identifier-syntax">JSON_value</span><span class="plain-syntax"> *</span><span class="identifier-syntax">legal_metadata</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON_value</span><span class="plain-syntax"> *</span><span class="identifier-syntax">id</span><span class="plain-syntax"> = </span><span class="identifier-syntax">JSON::look_up_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">legal_metadata</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"licence"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON_value</span><span class="plain-syntax"> *</span><span class="identifier-syntax">owner</span><span class="plain-syntax"> = </span><span class="identifier-syntax">JSON::look_up_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">legal_metadata</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rights-owner"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON_value</span><span class="plain-syntax"> *</span><span class="identifier-syntax">date</span><span class="plain-syntax"> = </span><span class="identifier-syntax">JSON::look_up_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">legal_metadata</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"date"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON_value</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rev_date</span><span class="plain-syntax"> = </span><span class="identifier-syntax">JSON::look_up_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">legal_metadata</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"revision-date"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON_value</span><span class="plain-syntax"> *</span><span class="identifier-syntax">url</span><span class="plain-syntax"> = </span><span class="identifier-syntax">JSON::look_up_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">legal_metadata</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"origin-url"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON_value</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rights</span><span class="plain-syntax"> = </span><span class="identifier-syntax">JSON::look_up_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">legal_metadata</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rights-history"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">id</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">owner</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">date</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">inbuild_copy</span><span class="plain-syntax"> *</span><span class="identifier-syntax">C</span><span class="plain-syntax"> = </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">on_copy</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">standard_licence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::ne</span><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">if_string</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"Unspecified"</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">standard_licence</span><span class="plain-syntax"> = </span><span class="identifier-syntax">LicenceData::from_SPDX_id</span><span class="plain-syntax">(</span><span class="identifier-syntax">id</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">if_string</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">standard_licence</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">error_text</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">error_text</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"the licence '%S', given in JSON metadata, is not an SPDX standard licence code"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">if_string</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-cps.html#SP5" class="function-link"><span class="function-syntax">Copies::attach_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><a href="2-ce.html#SP2" class="function-link"><span class="function-syntax">CopyErrors::new_T</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MALFORMED_LICENCE_CE</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">error_text</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">error_text</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">standard_licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">deprecated</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">error_text</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">error_text</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"the licence '%S', is a valid SPDX code but for a licence now deprecated"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">id</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">if_string</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-cps.html#SP5" class="function-link"><span class="function-syntax">Copies::attach_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><a href="2-ce.html#SP2" class="function-link"><span class="function-syntax">CopyErrors::new_T</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MALFORMED_LICENCE_CE</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">error_text</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">error_text</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rights_owner</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">owner</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">if_string</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rights_owner</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><a href="2-cps.html#SP5" class="function-link"><span class="function-syntax">Copies::attach_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><a href="2-ce.html#SP2" class="function-link"><span class="function-syntax">CopyErrors::new_T</span></a><span class="plain-syntax">(</span>
<span class="plain-syntax"> </span><span class="constant-syntax">MALFORMED_LICENCE_CE</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">I</span><span class="string-syntax">"the rights owner must be non-empty"</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copyright_year</span><span class="plain-syntax"> = </span><span class="identifier-syntax">date</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">if_integer</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copyright_year</span><span class="plain-syntax"> &lt; </span><span class="constant-syntax">1980</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copyright_year</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">10000</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">error_text</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">error_text</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"the date '%d' needs to be a four-digit year after 1980"</span><span class="plain-syntax">, </span><span class="identifier-syntax">date</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">if_integer</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-cps.html#SP5" class="function-link"><span class="function-syntax">Copies::attach_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><a href="2-ce.html#SP2" class="function-link"><span class="function-syntax">CopyErrors::new_T</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MALFORMED_LICENCE_CE</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">error_text</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">error_text</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copyright_year</span><span class="plain-syntax"> = </span><span class="constant-syntax">1980</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">revision_year</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rev_date</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">revision_year</span><span class="plain-syntax"> = </span><span class="identifier-syntax">rev_date</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">if_integer</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">revision_year</span><span class="plain-syntax"> &lt;= </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copyright_year</span><span class="plain-syntax">) ||</span>
<span class="plain-syntax"> (</span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">revision_year</span><span class="plain-syntax"> &gt;= </span><span class="constant-syntax">10000</span><span class="plain-syntax">)) {</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">error_text</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">error_text</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="string-syntax">"the revision date '%d' needs to be a four-digit year after the date"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">rev_date</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">if_integer</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><a href="2-cps.html#SP5" class="function-link"><span class="function-syntax">Copies::attach_error</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">, </span><a href="2-ce.html#SP2" class="function-link"><span class="function-syntax">CopyErrors::new_T</span></a><span class="plain-syntax">(</span><span class="constant-syntax">MALFORMED_LICENCE_CE</span><span class="plain-syntax">, -1, </span><span class="identifier-syntax">error_text</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">DISCARD_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">error_text</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">revision_year</span><span class="plain-syntax"> = </span><span class="constant-syntax">0</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> }</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">url</span><span class="plain-syntax">) </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">origin_URL</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">url</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">if_string</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">origin_URL</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">rights</span><span class="plain-syntax">) </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rights_history</span><span class="plain-syntax"> = </span><span class="identifier-syntax">Str::duplicate</span><span class="plain-syntax">(</span><span class="identifier-syntax">rights</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">if_string</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> </span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rights_history</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<p class="commentary firstcommentary"><a id="SP4" class="paragraph-anchor"></a><b>&#167;4. Data to a JSON object. </b>And conversely...
</p>
<pre class="displayed-code all-displayed-code code-font">
<span class="identifier-syntax">JSON_value</span><span class="plain-syntax"> *</span><span class="function-syntax">Licences::to_JSON</span><button class="popup" onclick="togglePopup('usagePopup3')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup3">Usage of <span class="code-font"><span class="function-syntax">Licences::to_JSON</span></span>:<br/>Extension Services - <a href="5-es.html#SP2_7">&#167;2.7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">inbuild_licence</span><span class="plain-syntax"> *</span><span class="identifier-syntax">licence</span><span class="plain-syntax">) {</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">licence</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"not a licence"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON_value</span><span class="plain-syntax"> *</span><span class="identifier-syntax">licence_object</span><span class="plain-syntax"> = </span><span class="identifier-syntax">JSON::new_object</span><span class="plain-syntax">();</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">standard_licence</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON::add_to_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">licence_object</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"licence"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON::new_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">I</span><span class="string-syntax">"Unspecified"</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON::add_to_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">licence_object</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"licence"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON::new_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">standard_licence</span><span class="plain-syntax">-&gt;</span><span class="identifier-syntax">SPDX_id</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON::add_to_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">licence_object</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rights-owner"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON::new_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rights_owner</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON::add_to_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">licence_object</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"date"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON::new_number</span><span class="plain-syntax">(</span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">copyright_year</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">revision_year</span><span class="plain-syntax"> &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON::add_to_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">licence_object</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"revision-date"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON::new_number</span><span class="plain-syntax">(</span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">revision_year</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">origin_URL</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON::add_to_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">licence_object</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"origin-url"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON::new_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">origin_URL</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">Str::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rights_history</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON::add_to_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">licence_object</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rights-history"</span><span class="plain-syntax">,</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON::new_string</span><span class="plain-syntax">(</span><span class="identifier-syntax">licence</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">rights_history</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">licence_object</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-jm.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresssection"><a href="2-rgs.html">rgs</a></li><li class="progresssection"><a href="2-jm.html">jm</a></li><li class="progresscurrent">lcn</li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="3-bg.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>
</body>
</html>

View file

@ -82,7 +82,7 @@ positions in the file system hierarchy which may or may not exist.
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">N</span><span class="plain-syntax">;</span>
<span class="plain-syntax">}</span>
</pre>
<ul class="endnotetexts"><li>The structure inbuild_nest is accessed in 1/ic, 2/rgs, 3/bg, 3/is2, 4/em, 4/ebm, 4/km, 4/lm, 4/pm, 4/tm, 5/ps2, 7/mrp and here.</li></ul>
<ul class="endnotetexts"><li>The structure inbuild_nest is accessed in 1/ic, 2/rgs, 2/lcn, 3/bg, 3/is2, 4/em, 4/ebm, 4/km, 4/lm, 4/pm, 4/tm, 5/ps2, 7/mrp and here.</li></ul>
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>&#167;2. </b>Nests used by the Inform and Inbuild tools are tagged with the following
constants. (There used to be quite a good joke here, but refactoring of the
code removed its premise. Literate programming is like that sometimes.)
@ -297,7 +297,7 @@ semantic version numbers.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-rqr.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresscurrent">nst</li><li class="progresssection"><a href="2-rgs.html">rgs</a></li><li class="progresssection"><a href="2-jm.html">jm</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-rgs.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-rqr.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresscurrent">nst</li><li class="progresssection"><a href="2-rgs.html">rgs</a></li><li class="progresssection"><a href="2-jm.html">jm</a></li><li class="progresssection"><a href="2-lcn.html">lcn</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-rgs.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -800,7 +800,7 @@ file in the apps which lists keyboard shortcuts to vary with platform.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-nst.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresscurrent">rgs</li><li class="progresssection"><a href="2-jm.html">jm</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-jm.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-nst.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresscurrent">rgs</li><li class="progresssection"><a href="2-jm.html">jm</a></li><li class="progresssection"><a href="2-lcn.html">lcn</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-jm.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -283,7 +283,7 @@ imposes no version constraints.
<span class="plain-syntax">}</span>
</pre>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-ce.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresscurrent">rqr</li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresssection"><a href="2-rgs.html">rgs</a></li><li class="progresssection"><a href="2-jm.html">jm</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-nst.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-ce.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresssection"><a href="2-wrk.html">wrk</a></li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresscurrent">rqr</li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresssection"><a href="2-rgs.html">rgs</a></li><li class="progresssection"><a href="2-jm.html">jm</a></li><li class="progresssection"><a href="2-lcn.html">lcn</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-nst.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -336,7 +336,7 @@ each extension's page is generated from its <span class="extract"><span class="e
</pre>
<ul class="endnotetexts"><li>The function Works::escape_apostrophes is used in Extensions Index Page (<a href="7-eip.html#SP1_2_2_4_4_1">&#167;1.2.2.4.4.1</a>), The Installer (<a href="7-ti.html#SP2_4_2_1">&#167;2.4.2.1</a>).</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-gnr.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresscurrent">wrk</li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresssection"><a href="2-rgs.html">rgs</a></li><li class="progresssection"><a href="2-jm.html">jm</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-edt.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-gnr.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresscurrentchapter">2</li><li class="progresssection"><a href="2-gnr.html">gnr</a></li><li class="progresscurrent">wrk</li><li class="progresssection"><a href="2-edt.html">edt</a></li><li class="progresssection"><a href="2-cps.html">cps</a></li><li class="progresssection"><a href="2-ce.html">ce</a></li><li class="progresssection"><a href="2-rqr.html">rqr</a></li><li class="progresssection"><a href="2-nst.html">nst</a></li><li class="progresssection"><a href="2-rgs.html">rgs</a></li><li class="progresssection"><a href="2-jm.html">jm</a></li><li class="progresssection"><a href="2-lcn.html">lcn</a></li><li class="progresschapter"><a href="3-bg.html">3</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="2-edt.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -426,7 +426,7 @@ to <span class="extract"><span class="extract-syntax">N</span></span> if it's al
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="3-bg.html#SP10">&#167;10</a>.</li></ul>
<nav role="progress"><div class="progresscontainer">
<ul class="progressbar"><li class="progressprev"><a href="2-jm.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresscurrent">bg</li><li class="progresssection"><a href="3-bm.html">bm</a></li><li class="progresssection"><a href="3-ib.html">ib</a></li><li class="progresssection"><a href="3-bs.html">bs</a></li><li class="progresssection"><a href="3-bs2.html">bs2</a></li><li class="progresssection"><a href="3-is.html">is</a></li><li class="progresssection"><a href="3-is2.html">is2</a></li><li class="progresssection"><a href="3-is3.html">is3</a></li><li class="progresssection"><a href="3-is4.html">is4</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="3-bm.html">&#10095;</a></li></ul></div>
<ul class="progressbar"><li class="progressprev"><a href="2-lcn.html">&#10094;</a></li><li class="progresschapter"><a href="P-wtmd.html">P</a></li><li class="progresschapter"><a href="1-sm.html">1</a></li><li class="progresschapter"><a href="2-gnr.html">2</a></li><li class="progresscurrentchapter">3</li><li class="progresscurrent">bg</li><li class="progresssection"><a href="3-bm.html">bm</a></li><li class="progresssection"><a href="3-ib.html">ib</a></li><li class="progresssection"><a href="3-bs.html">bs</a></li><li class="progresssection"><a href="3-bs2.html">bs2</a></li><li class="progresssection"><a href="3-is.html">is</a></li><li class="progresssection"><a href="3-is2.html">is2</a></li><li class="progresssection"><a href="3-is3.html">is3</a></li><li class="progresssection"><a href="3-is4.html">is4</a></li><li class="progresschapter"><a href="4-em.html">4</a></li><li class="progresschapter"><a href="5-es.html">5</a></li><li class="progresschapter"><a href="6-st.html">6</a></li><li class="progresschapter"><a href="7-tm.html">7</a></li><li class="progressnext"><a href="3-bm.html">&#10095;</a></li></ul></div>
</nav><!--End of weave-->
</main>

View file

@ -700,11 +700,16 @@ in a minimal sort of way, with just an <span class="extract"><span class="extrac
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"should not try to write JSON except in repair mode"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">location_if_path</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"should not try to write JSON except for a directory extension"</span><span class="plain-syntax">);</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">write_legal</span><span class="plain-syntax"> = </span><span class="identifier-syntax">FALSE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">metadata_record</span><span class="plain-syntax">) &amp;&amp; (</span><span class="identifier-syntax">JSON::look_up_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">metadata_record</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rights"</span><span class="plain-syntax">)))</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">write_legal</span><span class="plain-syntax"> = </span><span class="identifier-syntax">TRUE</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON_value</span><span class="plain-syntax"> *</span><span class="identifier-syntax">is_object</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-es.html#SP2_7_1" class="named-paragraph-link"><span class="named-paragraph">Find or create the is-object</span><span class="named-paragraph-number">2.7.1</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-es.html#SP2_7_2" class="named-paragraph-link"><span class="named-paragraph">Populate the is-object with correct values</span><span class="named-paragraph-number">2.7.2</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">LinkedLists::len</span><span class="plain-syntax">(</span><span class="identifier-syntax">missing_kits</span><span class="plain-syntax">) &gt; </span><span class="constant-syntax">0</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-es.html#SP2_7_3" class="named-paragraph-link"><span class="named-paragraph">Add any missing kits to the needs-object</span><span class="named-paragraph-number">2.7.3</span></a></span><span class="plain-syntax">;</span>
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">write_legal</span><span class="plain-syntax">)</span>
<span class="plain-syntax"> </span><span class="identifier-syntax">JSON::add_to_object</span><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">metadata_record</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"rights"</span><span class="plain-syntax">, </span><a href="2-lcn.html#SP4" class="function-link"><span class="function-syntax">Licences::to_JSON</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">C</span><span class="plain-syntax">-&gt;</span><span class="element-syntax">licence</span><span class="plain-syntax">));</span>
<span class="plain-syntax"> </span><span class="named-paragraph-container code-font"><a href="5-es.html#SP2_7_4" class="named-paragraph-link"><span class="named-paragraph">Write the JSON metadata back to the filing system</span><span class="named-paragraph-number">2.7.4</span></a></span><span class="plain-syntax">;</span>
</pre>
<ul class="endnotetexts"><li>This code is used in <a href="5-es.html#SP2">&#167;2</a>.</li></ul>

View file

@ -124,6 +124,11 @@
<spon class="sectiontitle">JSON Metadata</span></a> -
<span class="sectionpurpose">Managing JSON-encoded metadata files for resources such as kits.</span></p>
</li>
<li>
<p class="sectionentry"><a href="2-lcn.html">
<spon class="sectiontitle">Licences</span></a> -
<span class="sectionpurpose">A copy of any genre can in principle have a licence declaration attached to it.</span></p>
</li>
</ul>
</li>
<li>

View file

@ -32,6 +32,7 @@ which use this module:
@e inbuild_copy_CLASS
@e inbuild_edition_CLASS
@e inbuild_genre_CLASS
@e inbuild_licence_CLASS
@e inbuild_nest_CLASS
@e inbuild_registry_CLASS
@e inbuild_requirement_CLASS
@ -75,6 +76,7 @@ DECLARE_CLASS(heading)
DECLARE_CLASS(inbuild_copy)
DECLARE_CLASS(inbuild_edition)
DECLARE_CLASS(inbuild_genre)
DECLARE_CLASS(inbuild_licence)
DECLARE_CLASS(inbuild_nest)
DECLARE_CLASS(inbuild_registry)
DECLARE_CLASS(inbuild_requirement)

View file

@ -28,6 +28,7 @@ typedef struct inbuild_copy {
struct inbuild_requirement *found_by; /* if this was claimed in a search */
struct linked_list *errors_reading_source_text; /* of |copy_error| */
int last_scanned;
struct inbuild_licence *licence; /* optional licence declaration which seems to apply */
CLASS_DEFINITION
} inbuild_copy;
@ -50,6 +51,7 @@ inbuild_copy *Copies::new_p(inbuild_edition *edition) {
copy->found_by = NULL;
copy->errors_reading_source_text = NEW_LINKED_LIST(copy_error);
copy->last_scanned = 0;
copy->licence = Licences::new(copy);
return copy;
}

View file

@ -14,6 +14,7 @@ fields are blank.
@e OPEN_FAILED_CE from 1
@e METADATA_MALFORMED_CE
@e MALFORMED_LICENCE_CE
@e EXT_MISWORDED_CE
@e EXT_BAD_DIRNAME_CE
@e EXT_BAD_FILENAME_CE
@ -139,6 +140,8 @@ void CopyErrors::write(OUTPUT_STREAM, copy_error *CE) {
case PROJECT_MALFORMED_CE: WRITE("project malformed: %S", CE->details); break;
case METADATA_MALFORMED_CE: WRITE("%S has incorrect metadata: %S",
CE->copy->edition->work->genre->genre_name, CE->details); break;
case MALFORMED_LICENCE_CE: WRITE("%S has incorrect 'legal-metadata': %S",
CE->copy->edition->work->genre->genre_name, CE->details); break;
case EXT_TITLE_TOO_LONG_CE: WRITE("title too long: %d characters (max is %d)",
CE->details_N, MAX_EXTENSION_TITLE_LENGTH); break;
case EXT_AUTHOR_TOO_LONG_CE: WRITE("author name too long: %d characters (max is %d)",

View file

@ -32,6 +32,8 @@ void JSONMetadata::read_metadata_file(inbuild_copy *C, filename *F,
@<Police the "needs"@>;
JSON_value *compatibility = JSON::look_up_object(obj, I"compatibility");
if (compatibility) @<Extract compatibility@>;
JSON_value *rights = JSON::look_up_object(C->metadata_record, I"rights");
if (rights) Licences::from_JSON(C->licence, rights);
}
void JSONMetadata::read_metadata_file_helper(text_stream *text, text_file_position *tfp,

View file

@ -0,0 +1,144 @@
[Licences::] Licences.
A copy of any genre can in principle have a licence declaration attached to it.
@h Creation.
It could be argued that licences belong to editions, not copies, but we want to
be pragmatic. We're not storing the true state of the legal status of the material
in the copy, only what this copy claims about itself.
=
typedef struct inbuild_licence {
struct open_source_licence *standard_licence;
struct inbuild_copy *on_copy;
struct text_stream *rights_owner;
int copyright_year;
int revision_year;
struct text_stream *origin_URL;
struct text_stream *rights_history;
CLASS_DEFINITION
} inbuild_licence;
@ Copies begin with this blank sort of non-licence:
=
inbuild_licence *Licences::new(inbuild_copy *copy) {
inbuild_licence *licence = CREATE(inbuild_licence);
licence->standard_licence = NULL;
licence->on_copy = copy;
licence->rights_owner = I"Unknown";
licence->copyright_year = 1980;
licence->revision_year = 0;
licence->origin_URL = NULL;
licence->rights_history = NULL;
return licence;
}
@h Date from a JSON object.
This is the optional |legal-metadata| object in any inbuild-standard JSON
metadata file.
=
void Licences::from_JSON(inbuild_licence *licence, JSON_value *legal_metadata) {
JSON_value *id = JSON::look_up_object(legal_metadata, I"licence");
JSON_value *owner = JSON::look_up_object(legal_metadata, I"rights-owner");
JSON_value *date = JSON::look_up_object(legal_metadata, I"date");
JSON_value *rev_date = JSON::look_up_object(legal_metadata, I"revision-date");
JSON_value *url = JSON::look_up_object(legal_metadata, I"origin-url");
JSON_value *rights = JSON::look_up_object(legal_metadata, I"rights-history");
if ((id == NULL) || (owner == NULL) || (date == NULL)) return;
inbuild_copy *C = licence->on_copy;
licence->standard_licence = NULL;
if (Str::ne(id->if_string, I"Unspecified")) {
licence->standard_licence = LicenceData::from_SPDX_id(id->if_string);
if (licence->standard_licence == NULL) {
TEMPORARY_TEXT(error_text)
WRITE_TO(error_text,
"the licence '%S', given in JSON metadata, is not an SPDX standard licence code",
id->if_string);
Copies::attach_error(C, CopyErrors::new_T(MALFORMED_LICENCE_CE, -1, error_text));
DISCARD_TEXT(error_text)
} else if (licence->standard_licence->deprecated) {
TEMPORARY_TEXT(error_text)
WRITE_TO(error_text,
"the licence '%S', is a valid SPDX code but for a licence now deprecated",
id->if_string);
Copies::attach_error(C, CopyErrors::new_T(MALFORMED_LICENCE_CE, -1, error_text));
DISCARD_TEXT(error_text)
}
}
licence->rights_owner = Str::duplicate(owner->if_string);
if (Str::len(licence->rights_owner) == 0)
Copies::attach_error(C, CopyErrors::new_T(
MALFORMED_LICENCE_CE, -1, I"the rights owner must be non-empty"));
licence->copyright_year = date->if_integer;
if ((licence->copyright_year < 1980) || (licence->copyright_year >= 10000)) {
TEMPORARY_TEXT(error_text)
WRITE_TO(error_text,
"the date '%d' needs to be a four-digit year after 1980", date->if_integer);
Copies::attach_error(C, CopyErrors::new_T(MALFORMED_LICENCE_CE, -1, error_text));
DISCARD_TEXT(error_text)
licence->copyright_year = 1980;
}
licence->revision_year = 0;
if (rev_date) {
licence->revision_year = rev_date->if_integer;
if ((licence->revision_year <= licence->copyright_year) ||
(licence->revision_year >= 10000)) {
TEMPORARY_TEXT(error_text)
WRITE_TO(error_text,
"the revision date '%d' needs to be a four-digit year after the date",
rev_date->if_integer);
Copies::attach_error(C, CopyErrors::new_T(MALFORMED_LICENCE_CE, -1, error_text));
DISCARD_TEXT(error_text)
licence->revision_year = 0;
}
}
if (url) licence->origin_URL = Str::duplicate(url->if_string);
else licence->origin_URL = NULL;
if (rights) licence->rights_history = Str::duplicate(rights->if_string);
else licence->rights_history = NULL;
}
@h Data to a JSON object.
And conversely...
=
JSON_value *Licences::to_JSON(inbuild_licence *licence) {
if (licence == NULL) internal_error("not a licence");
JSON_value *licence_object = JSON::new_object();
if (licence->standard_licence == NULL)
JSON::add_to_object(licence_object, I"licence",
JSON::new_string(I"Unspecified"));
else
JSON::add_to_object(licence_object, I"licence",
JSON::new_string(licence->standard_licence->SPDX_id));
JSON::add_to_object(licence_object, I"rights-owner",
JSON::new_string(licence->rights_owner));
JSON::add_to_object(licence_object, I"date",
JSON::new_number(licence->copyright_year));
if (licence->revision_year > 0)
JSON::add_to_object(licence_object, I"revision-date",
JSON::new_number(licence->revision_year));
if (Str::len(licence->origin_URL) > 0)
JSON::add_to_object(licence_object, I"origin-url",
JSON::new_string(licence->origin_URL));
if (Str::len(licence->rights_history) > 0)
JSON::add_to_object(licence_object, I"rights-history",
JSON::new_string(licence->rights_history));
return licence_object;
}

View file

@ -538,11 +538,16 @@ in a minimal sort of way, with just an |is| object.
internal_error("should not try to write JSON except in repair mode");
if (C->location_if_path == NULL)
internal_error("should not try to write JSON except for a directory extension");
int write_legal = FALSE;
if ((C->metadata_record) && (JSON::look_up_object(C->metadata_record, I"rights")))
write_legal = TRUE;
JSON_value *is_object = NULL;
@<Find or create the is-object@>;
@<Populate the is-object with correct values@>;
if (LinkedLists::len(missing_kits) > 0)
@<Add any missing kits to the needs-object@>;
if (write_legal)
JSON::add_to_object(C->metadata_record, I"rights", Licences::to_JSON(C->licence));
@<Write the JSON metadata back to the filing system@>;
@<Find or create the is-object@> =

View file

@ -21,6 +21,7 @@ Chapter 2: Conceptual Framework
Nests
Registries
JSON Metadata
Licences
Chapter 3: Incremental Builds
Build Graphs

View file

@ -1,5 +1,5 @@
Size of lexicon: 3173 excerpt meanings
Stored among 859 words out of total vocabulary of 10638
Stored among 859 words out of total vocabulary of 10637
723 words have a start list: longest belongs to report (with 293 meanings)
21 words have an end list: longest belongs to digits (with 7 meanings)
29 words have a middle list: longest belongs to to (with 4 meanings)

View file

@ -1,8 +1,8 @@
<preform-nonterminal> internal nti 28 constraint (none) extremes [1, 1]
<if-start-of-paragraph> internal hits 1319/8690 nti 29 constraint (none) extremes [0, 0]
<if-start-of-paragraph> internal hits 1318/8688 nti 29 constraint (none) extremes [0, 0]
<if-not-cap> internal hits 4054/8268 nti 30 constraint (none) extremes [0, 0]
<if-not-cap> internal hits 4052/8264 nti 30 constraint (none) extremes [0, 0]
<balanced-text> hits 754/1508 nti 6 constraint (none) extremes [1, infinity)
English:
@ -16,7 +16,7 @@
<any-integer> internal nti 7 constraint (none) extremes [1, 1]
<quoted-text> internal hits 2994/26232 nti 8 constraint (none) extremes [1, 1]
<quoted-text> internal hits 2993/26230 nti 8 constraint (none) extremes [1, 1]
<quoted-text-with-subs> internal nti 9 constraint (none) extremes [1, 1]
@ -24,7 +24,7 @@
<empty-text> internal nti 11 constraint (none) extremes [1, 1]
<if-start-of-source-text> internal hits 2/13876 nti 12 constraint (none) extremes [0, 0]
<if-start-of-source-text> internal hits 2/13872 nti 12 constraint (none) extremes [0, 0]
<list-or-division> hits 0/18 nti 16 constraint DS = {16} extremes [3, infinity)
English:
@ -4743,9 +4743,9 @@
<article> internal hits 16903/103250 nti r2 constraint (none) extremes [1, 1]
<definite-article> internal hits 20819/245384 nti r2 constraint (none) extremes [1, 1]
<definite-article> internal hits 20818/245382 nti r2 constraint (none) extremes [1, 1]
<indefinite-article> internal hits 2234/43728 nti r2 constraint (none) extremes [1, 1]
<indefinite-article> internal hits 2234/43722 nti r2 constraint (none) extremes [1, 1]
<definite-article-table> nti r2 constraint CS = {r2} extremes [6, 6]
English:
@ -4894,7 +4894,7 @@
<copular-verb> internal hits 16/128 nti 7 constraint FS = {7} extremes [1, infinity)
<negated-noncopular-verb-present> internal hits 1/7164 nti 8 constraint FS = {8} extremes [1, infinity)
<negated-noncopular-verb-present> internal hits 1/7158 nti 8 constraint FS = {8} extremes [1, infinity)
<universal-verb> internal hits 0/2592 nti 9 constraint FS = {9} extremes [1, infinity)
@ -4918,7 +4918,7 @@
<permitted-preposition> internal hits 258/8632 nti 14 constraint DS = {14} extremes [1, infinity)
<certainty> hits 68/4818 nti 14 constraint CS = {14} extremes [1, 1]
<certainty> hits 68/4814 nti 14 constraint CS = {14} extremes [1, 1]
English:
always/certainly
(hits 10/937) (matched: 'always') constraint CS = {14} extremes [1, 1]
@ -4998,10 +4998,10 @@
<cardinal-number>
constraint CS = {r0} extremes [1, 1]
<np-unparsed> hits 3315/6630 nti 18 constraint (none) extremes [1, infinity)
<np-unparsed> hits 3313/6626 nti 18 constraint (none) extremes [1, infinity)
English:
{...}
(hits 3315/3315) (matched long text) constraint (none) extremes [1, infinity)
(hits 3313/3313) (matched long text) constraint (none) extremes [1, infinity)
<np-unparsed-bal> hits 62/124 nti 19 constraint (none) extremes [0, infinity)
English:
@ -5010,21 +5010,21 @@
<np-unparsed>
(hits 62/62) (matched: 'fixed in place') constraint (none) extremes [1, infinity)
<np-existential> hits 33/158102 nti 20 constraint CS = {20} extremes [1, 1]
<np-existential> hits 33/157920 nti 20 constraint CS = {20} extremes [1, 1]
English:
there
(hits 33/530) (matched: 'there') constraint CS = {20} extremes [1, 1]
<np-articled> hits 2224/4448 nti 20 constraint (none) extremes [1, infinity)
<np-articled> hits 2222/4444 nti 20 constraint (none) extremes [1, infinity)
English:
{...}
(hits 99/2224) (matched: '"(considering the first sixteen objects only)[command clarification break]" ( a )') constraint (none) extremes [1, infinity)
(hits 99/2222) (matched: '"(considering the first sixteen objects only)[command clarification break]" ( a )') constraint (none) extremes [1, infinity)
<if-not-cap> <indefinite-article> <np-unparsed>
(hits 328/1486) (matched: 'an action based rule producing nothing that varies') constraint (none) extremes [2, infinity)
(hits 328/1485) (matched: 'an action based rule producing nothing that varies') constraint (none) extremes [2, infinity)
<if-not-cap> <definite-article> <np-unparsed>
(hits 732/1158) (matched long text) constraint (none) extremes [2, infinity)
(hits 731/1157) (matched long text) constraint (none) extremes [2, infinity)
<np-unparsed>
(hits 1065/1065) (matched long text) constraint (none) extremes [1, infinity)
(hits 1064/1064) (matched long text) constraint (none) extremes [1, infinity)
<np-articled-bal> hits 255/510 nti 21 constraint (none) extremes [0, infinity)
English:
@ -5205,27 +5205,27 @@
<sentence> internal nti 8 constraint (none) extremes [1, infinity)
<sentence-without-occurrences> internal hits 1427/2854 nti 9 constraint (none) extremes [1, infinity)
<sentence-without-occurrences> internal hits 1426/2852 nti 9 constraint (none) extremes [1, infinity)
<pre-verb-certainty> hits 0/2914 nti 10 constraint DS = {14} extremes [2, infinity)
<pre-verb-certainty> hits 0/2912 nti 10 constraint DS = {14} extremes [2, infinity)
English:
{...} <certainty>
(hits 0/1121) constraint DS = {14} extremes [2, infinity)
(hits 0/1120) constraint DS = {14} extremes [2, infinity)
<post-verb-certainty> hits 68/2914 nti 11 constraint DS = {14} extremes [2, infinity)
<post-verb-certainty> hits 68/2912 nti 11 constraint DS = {14} extremes [2, infinity)
English:
<certainty> {...}
(hits 68/1288) (matched: 'usually table of general chitchat') constraint DS = {14} extremes [2, infinity)
(hits 68/1287) (matched: 'usually table of general chitchat') constraint DS = {14} extremes [2, infinity)
<rc-marker> hits 798/26696 nti 6 constraint CS = {6} extremes [1, 1]
<rc-marker> hits 798/26694 nti 6 constraint CS = {6} extremes [1, 1]
English:
which/who/that
(hits 798/5394) (matched: 'which') constraint CS = {6} extremes [1, 1]
<pre-verb-rc-marker> hits 3/2886 nti 12 constraint DS = {6} extremes [2, infinity)
<pre-verb-rc-marker> hits 3/2884 nti 12 constraint DS = {6} extremes [2, infinity)
English:
{...} <rc-marker>
(hits 3/513) (matched: 'the asking which') constraint DS = {6} extremes [2, infinity)
(hits 3/512) (matched: 'the asking which') constraint DS = {6} extremes [2, infinity)
<phrase-with-calling> nti 7 constraint DS = {7} extremes [3, infinity)
English:
@ -5446,83 +5446,83 @@
<natural-language> internal nti 18 constraint (none) extremes [1, infinity)
<dividing-sentence> hits 212/10970 nti 19 constraint DW = {12, 13} extremes [2, infinity)
<dividing-sentence> hits 212/10968 nti 19 constraint DW = {12, 13} extremes [2, infinity)
English:
<if-start-of-paragraph> <heading>
(hits 204/4331) (matched long text) constraint DS = {12} extremes [2, infinity)
(hits 204/4330) (matched long text) constraint DS = {12} extremes [2, infinity)
<extension-end-marker-sentence>
(hits 8/3627) (matched long text) constraint DS = {13} extremes [3, infinity)
(hits 8/3626) (matched long text) constraint DS = {13} extremes [3, infinity)
<heading> hits 204/2610 nti 12 constraint DS = {12} extremes [2, infinity)
<heading> hits 204/2608 nti 12 constraint DS = {12} extremes [2, infinity)
English:
volume {...}
(hits 6/1305) (matched long text) constraint DS = {12} extremes [2, infinity)
(hits 6/1304) (matched long text) constraint DS = {12} extremes [2, infinity)
book {...}
(hits 0/1299) constraint DS = {12} extremes [2, infinity)
(hits 0/1298) constraint DS = {12} extremes [2, infinity)
part {...}
(hits 14/1299) (matched: 'part two - the physical world model') constraint DS = {12} extremes [2, infinity)
(hits 14/1298) (matched: 'part two - the physical world model') constraint DS = {12} extremes [2, infinity)
chapter {...}
(hits 23/1285) (matched long text) constraint DS = {12} extremes [2, infinity)
(hits 23/1284) (matched long text) constraint DS = {12} extremes [2, infinity)
section {...} ( dialog )
(hits 0/1178) constraint DS = {12} extremes [5, infinity)
(hits 0/1177) constraint DS = {12} extremes [5, infinity)
section {...} ( dialogue )
(hits 0/1178) constraint DS = {12} extremes [5, infinity)
(hits 0/1177) constraint DS = {12} extremes [5, infinity)
section {...} ( dialog during {...} )
(hits 0/1015) constraint DS = {12} extremes [7, infinity)
(hits 0/1014) constraint DS = {12} extremes [7, infinity)
section {...} ( dialogue during {...} )
(hits 0/1015) constraint DS = {12} extremes [7, infinity)
(hits 0/1014) constraint DS = {12} extremes [7, infinity)
section {...}
(hits 161/1262) (matched long text) constraint DS = {12} extremes [2, infinity)
(hits 161/1261) (matched long text) constraint DS = {12} extremes [2, infinity)
<extension-end-marker-sentence> hits 8/7254 nti 13 constraint DS = {13} extremes [3, infinity)
<extension-end-marker-sentence> hits 8/7252 nti 13 constraint DS = {13} extremes [3, infinity)
English:
{...} begin/begins here
(hits 4/3627) (matched long text) constraint DS = {13} extremes [3, infinity)
(hits 4/3626) (matched long text) constraint DS = {13} extremes [3, infinity)
{...} end/ends here
(hits 4/3623) (matched: 'the standard rules end here') constraint DS = {13} extremes [3, infinity)
(hits 4/3622) (matched: 'the standard rules end here') constraint DS = {13} extremes [3, infinity)
<structural-sentence> hits 32/13876 nti 15 constraint (none) extremes [1, infinity)
<structural-sentence> hits 32/13872 nti 15 constraint (none) extremes [1, infinity)
English:
<if-start-of-source-text> <quoted-text>
(hits 0/20) constraint (none) extremes [1, 1]
<if-start-of-source-text> <quoted-text> {...}
(hits 0/6918) constraint (none) extremes [2, infinity)
(hits 0/6916) constraint (none) extremes [2, infinity)
<language-modifying-sentence>
(hits 0/6743) constraint DS = {14} extremes [4, infinity)
(hits 0/6741) constraint DS = {14} extremes [4, infinity)
*
constraint CS = {15} extremes [1, 1]
* <quoted-text-without-subs>
constraint DS = {15} extremes [2, 2]
<if-start-of-paragraph> table {...}
(hits 14/6771) (matched long text) constraint DS = {15} extremes [2, infinity)
(hits 14/6769) (matched long text) constraint DS = {15} extremes [2, infinity)
<if-start-of-paragraph> equation {...}
(hits 0/6757) constraint DS = {15} extremes [2, infinity)
(hits 0/6755) constraint DS = {15} extremes [2, infinity)
include the {...} by {...}
(hits 0/6745) constraint DS = {15} extremes [5, infinity)
(hits 0/6743) constraint DS = {15} extremes [5, infinity)
include {...} by {...}
(hits 18/6757) (matched long text) constraint DS = {15} extremes [4, infinity)
(hits 18/6755) (matched long text) constraint DS = {15} extremes [4, infinity)
include (- {...}
(hits 0/6739) constraint DS = {15} extremes [3, infinity)
(hits 0/6737) constraint DS = {15} extremes [3, infinity)
<comma-divisible-sentence> hits 9/2928 nti 16 constraint DS = {16} extremes [2, infinity)
<comma-divisible-sentence> hits 9/2926 nti 16 constraint DS = {16} extremes [2, infinity)
English:
instead of {...}
(hits 0/1301) constraint DS = {16} extremes [3, infinity)
(hits 0/1300) constraint DS = {16} extremes [3, infinity)
every turn {***}
(hits 1/1301) (matched: 'every turn rules is a rulebook') constraint DS = {16} extremes [2, infinity)
(hits 1/1300) (matched: 'every turn rules is a rulebook') constraint DS = {16} extremes [2, infinity)
before {...}
(hits 2/1300) (matched long text) constraint DS = {16} extremes [2, infinity)
(hits 2/1299) (matched long text) constraint DS = {16} extremes [2, infinity)
after {...}
(hits 2/1298) (matched long text) constraint DS = {16} extremes [2, infinity)
(hits 2/1297) (matched long text) constraint DS = {16} extremes [2, infinity)
when {...}
(hits 4/1296) (matched: 'when scene begins is a scene based rulebook') constraint DS = {16} extremes [2, infinity)
(hits 4/1295) (matched: 'when scene begins is a scene based rulebook') constraint DS = {16} extremes [2, infinity)
<language-modifying-sentence> hits 0/13486 nti 14 constraint DS = {14} extremes [4, infinity)
<language-modifying-sentence> hits 0/13482 nti 14 constraint DS = {14} extremes [4, infinity)
English:
include (- {###} in the preform grammar
(hits 0/111) constraint DS = {14} extremes [7, 7]
use {...} language element/elements
(hits 0/6743) constraint DS = {14} extremes [4, infinity)
(hits 0/6741) constraint DS = {14} extremes [4, infinity)
<heading-qualifier> hits 37/482 nti 22 constraint DS = {22} extremes [2, infinity)
English:
@ -5945,12 +5945,12 @@
{...}
constraint (none) extremes [1, infinity)
<plural-sentence-subject> hits 4/1674 nti 25 constraint DS = {25} extremes [3, infinity)
<plural-sentence-subject> hits 4/1672 nti 25 constraint DS = {25} extremes [3, infinity)
English:
<article> plural of <np-articled>
(hits 4/467) (matched: 'the plural of person') constraint DS = {25} extremes [4, infinity)
(hits 4/466) (matched: 'the plural of person') constraint DS = {25} extremes [4, infinity)
plural of <np-articled>
(hits 0/625) constraint DS = {25} extremes [3, infinity)
(hits 0/624) constraint DS = {25} extremes [3, infinity)
<translation-target-language> nti 6 constraint (none) extremes [1, infinity)
English:
@ -5978,43 +5978,43 @@
inform 6
constraint CS = {27} extremes [2, 2]
<defined-by-inter-sentence-object> hits 134/1138 nti 28 constraint DS = {28} extremes [5, infinity)
<defined-by-inter-sentence-object> hits 133/1136 nti 28 constraint DS = {28} extremes [5, infinity)
English:
defined by inter as {...}
(hits 134/242) (matched long text) constraint DS = {28} extremes [5, infinity)
(hits 133/241) (matched long text) constraint DS = {28} extremes [5, infinity)
<accessible-to-inter-sentence-object> hits 141/1420 nti 29 constraint DS = {29} extremes [5, infinity)
<accessible-to-inter-sentence-object> hits 141/1418 nti 29 constraint DS = {29} extremes [5, infinity)
English:
accessible to inter as {...}
(hits 141/385) (matched: 'accessible to inter as STARTUP_RB') constraint DS = {29} extremes [5, infinity)
(hits 141/384) (matched: 'accessible to inter as STARTUP_RB') constraint DS = {29} extremes [5, infinity)
<translates-into-i6-sentence-subject> hits 572/1144 nti 30 constraint (none) extremes [1, infinity)
<translates-into-i6-sentence-subject> hits 570/1140 nti 30 constraint (none) extremes [1, infinity)
English:
{...} property
(hits 70/572) (matched: 'printed plural name property') constraint DS = {30} extremes [2, infinity)
(hits 70/570) (matched: 'printed plural name property') constraint DS = {30} extremes [2, infinity)
{...} object/kind
(hits 6/502) (matched: 'inside object') constraint DS = {30} extremes [2, infinity)
(hits 6/500) (matched: 'inside object') constraint DS = {30} extremes [2, infinity)
{... rule}
(hits 148/496) (matched: 'standard report preferring sometimes abbreviated room descriptions rule') constraint DS = {30} extremes [2, infinity)
(hits 148/494) (matched: 'standard report preferring sometimes abbreviated room descriptions rule') constraint DS = {30} extremes [2, infinity)
{... rules/rulebook}
(hits 54/348) (matched: 'does the player mean rulebook') constraint DS = {30} extremes [2, infinity)
(hits 54/346) (matched: 'does the player mean rulebook') constraint DS = {30} extremes [2, infinity)
{... activity}
(hits 68/294) (matched long text) constraint DS = {30} extremes [2, infinity)
(hits 68/292) (matched long text) constraint DS = {30} extremes [2, infinity)
{...} variable
(hits 70/226) (matched: 'current item from the multiple object list variable') constraint DS = {30} extremes [2, infinity)
(hits 70/224) (matched: 'current item from the multiple object list variable') constraint DS = {30} extremes [2, infinity)
{...} action
(hits 154/156) (matched: 'switching the story transcript on action') constraint DS = {30} extremes [2, infinity)
(hits 154/154) (matched: 'switching the story transcript on action') constraint DS = {30} extremes [2, infinity)
understand token {...}
(hits 2/2) (matched: 'understand token a time period') constraint DS = {30} extremes [3, infinity)
constraint DS = {30} extremes [3, infinity)
{...}
constraint (none) extremes [1, infinity)
<translates-into-i6-sentence-object> hits 286/572 nti 6 constraint (none) extremes [1, infinity)
<translates-into-i6-sentence-object> hits 285/570 nti 6 constraint (none) extremes [1, infinity)
English:
<quoted-text> with <np-articled-list>
(hits 36/36) (matched long text) constraint DS = {6} extremes [3, infinity)
<quoted-text>
(hits 250/250) (matched: 'article') constraint (none) extremes [1, 1]
(hits 249/249) (matched: 'article') constraint (none) extremes [1, 1]
<extra-response> hits 134/268 nti 7 constraint DS = {7} extremes [4, 4]
English:
@ -6286,7 +6286,7 @@
{...}
constraint (none) extremes [1, infinity)
<bare-activity-sentence-object> hits 33/1666 nti 26 constraint DS = {26} extremes [1, 2]
<bare-activity-sentence-object> hits 33/1664 nti 26 constraint DS = {26} extremes [1, 2]
English:
<article> activity
(hits 33/81) (matched: 'an activity') constraint DS = {26} extremes [2, 2]
@ -6523,10 +6523,10 @@
{...} relation
constraint DS = {28} extremes [2, infinity)
<either-sentence-object> hits 0/1420 nti 29 constraint DS = {29} extremes [2, infinity)
<either-sentence-object> hits 0/1418 nti 29 constraint DS = {29} extremes [2, infinity)
English:
either <np-unparsed>
(hits 0/455) constraint DS = {29} extremes [2, infinity)
(hits 0/454) constraint DS = {29} extremes [2, infinity)
<forbidden-property-owners> hits 0/88 nti 30 constraint (none) extremes [1, 2]
English:
@ -6571,7 +6571,7 @@
<np-unparsed>
constraint (none) extremes [1, infinity)
<new-verb-sentence-object> hits 74/1822 nti 24 constraint DS = {9} extremes [1, infinity)
<new-verb-sentence-object> hits 74/1820 nti 24 constraint DS = {9} extremes [1, infinity)
English:
<indefinite-article> <new-verb-sentence-object-unarticled>
(hits 74/507) (matched: 'a verb') constraint DS = {9} extremes [2, infinity)
@ -6665,21 +6665,21 @@
{***} <probable-participle>
(hits 0/1) constraint (none) extremes [1, infinity)
<new-adjective-sentence-object> hits 0/1420 nti 27 constraint DS = {16} extremes [1, infinity)
<new-adjective-sentence-object> hits 0/1418 nti 27 constraint DS = {16} extremes [1, infinity)
English:
<indefinite-article> <new-adjective-sentence-object-unarticled>
(hits 0/457) constraint DS = {16} extremes [2, infinity)
(hits 0/456) constraint DS = {16} extremes [2, infinity)
<new-adjective-sentence-object-unarticled>
(hits 0/458) constraint DS = {16} extremes [1, infinity)
(hits 0/457) constraint DS = {16} extremes [1, infinity)
<new-adjective-sentence-object-unarticled> hits 0/1058 nti 16 constraint DS = {16} extremes [1, infinity)
<new-adjective-sentence-object-unarticled> hits 0/1056 nti 16 constraint DS = {16} extremes [1, infinity)
English:
adjective
(hits 0/1) constraint CS = {16} extremes [1, 1]
adjective implying/meaning <definite-article> <np-unparsed>
(hits 0/455) constraint DS = {16} extremes [4, infinity)
(hits 0/454) constraint DS = {16} extremes [4, infinity)
adjective implying/meaning <np-unparsed>
(hits 0/505) constraint DS = {16} extremes [3, infinity)
(hits 0/504) constraint DS = {16} extremes [3, infinity)
<adjective-definition-subject> nti 17 constraint (none) extremes [1, infinity)
English:
@ -8934,7 +8934,7 @@
map region
(hits 1/1) (matched: 'map region') constraint CS = {17} extremes [2, 2]
<notable-map-kinds> hits 19/2296 nti 18 constraint CS = {18} extremes [1, 1]
<notable-map-kinds> hits 19/2294 nti 18 constraint CS = {18} extremes [1, 1]
English:
direction
(hits 13/45) (matched: 'direction') constraint CS = {18} extremes [1, 1]
@ -9176,19 +9176,19 @@
waiting
(hits 1/20) (matched: 'waiting') constraint CS = {12} extremes [1, 1]
<new-action-sentence-object> hits 91/1600 nti 12 constraint DS = {13} extremes [1, infinity)
<new-action-sentence-object> hits 91/1598 nti 12 constraint DS = {13} extremes [1, infinity)
English:
<indefinite-article> <new-action-sentence-object-unarticled>
(hits 91/610) (matched long text) constraint DS = {13} extremes [2, infinity)
(hits 91/609) (matched long text) constraint DS = {13} extremes [2, infinity)
<new-action-sentence-object-unarticled>
(hits 0/519) constraint DS = {13} extremes [1, infinity)
(hits 0/518) constraint DS = {13} extremes [1, infinity)
<new-action-sentence-object-unarticled> hits 91/1484 nti 13 constraint DS = {13} extremes [1, infinity)
<new-action-sentence-object-unarticled> hits 91/1482 nti 13 constraint DS = {13} extremes [1, infinity)
English:
action based {...}
(hits 1/610) (matched: 'action based rule producing nothing that varies') constraint DS = {13} extremes [3, infinity)
(hits 1/609) (matched: 'action based rule producing nothing that varies') constraint DS = {13} extremes [3, infinity)
action <nounphrase-actionable>
(hits 90/657) (matched long text) constraint DS = {13} extremes [1, infinity)
(hits 90/656) (matched long text) constraint DS = {13} extremes [1, infinity)
action
constraint CS = {13} extremes [1, 1]

View file

@ -1,24 +1,24 @@
Total memory consumption was 140785K = 137 MB
Total memory consumption was 143335K = 140 MB
---- was used for 2147617 objects, in 381570 frames in 0 x 800K = 0K = 0 MB:
---- was used for 2168968 objects, in 382527 frames in 0 x 800K = 0K = 0 MB:
30.0% inter_tree_node_array 60 x 8192 = 491520 objects, 43255680 bytes
19.5% text_stream_array 5013 x 100 = 501300 objects, 28233216 bytes
18.4% linked_list 47624 objects, 26669440 bytes
9.9% inter_symbol_array 135 x 1024 = 138240 objects, 14381280 bytes
9.7% inter_error_stash_array 107 x 1024 = 109568 objects, 14028128 bytes
7.4% parse_node 133963 objects, 10717040 bytes
7.3% scan_directory 2580 objects, 10650240 bytes
5.2% verb_conjugation 164 objects, 7610912 bytes
29.4% inter_tree_node_array 60 x 8192 = 491520 objects, 43255680 bytes
19.9% text_stream_array 5194 x 100 = 519400 objects, 29252608 bytes
18.1% linked_list 47633 objects, 26674480 bytes
9.7% inter_symbol_array 135 x 1024 = 138240 objects, 14381280 bytes
9.5% inter_error_stash_array 107 x 1024 = 109568 objects, 14028128 bytes
7.3% parse_node 133959 objects, 10716720 bytes
7.2% scan_directory 2580 objects, 10650240 bytes
5.1% verb_conjugation 164 objects, 7610912 bytes
3.9% parse_node_annotation_array 358 x 500 = 179000 objects, 5739456 bytes
2.4% pcalc_prop_array 26 x 1000 = 26000 objects, 3536832 bytes
2.2% inter_name_array 68 x 1000 = 68000 objects, 3266176 bytes
1.8% kind_array 68 x 1000 = 68000 objects, 2722176 bytes
1.5% inter_schema_token 14235 objects, 2163720 bytes
1.4% inter_schema_token 14235 objects, 2163720 bytes
1.4% inter_name_generator_array 52 x 1000 = 52000 objects, 2081664 bytes
1.3% package_request 21384 objects, 1881792 bytes
1.2% package_request 21384 objects, 1881792 bytes
1.2% vocabulary_entry_array 164 x 100 = 16400 objects, 1842048 bytes
1.1% dict_entry_array 504 x 100 = 50400 objects, 1628928 bytes
1.1% dict_entry_array 529 x 100 = 52900 objects, 1709728 bytes
1.0% inter_symbols_table 26994 objects, 1511664 bytes
1.0% match_trie_array 11 x 1000 = 11000 objects, 1496352 bytes
0.9% i6_schema_array 24 x 100 = 2400 objects, 1440768 bytes
@ -26,20 +26,20 @@ Total memory consumption was 140785K = 137 MB
0.7% map_data 684 objects, 1149120 bytes
0.7% id_body 982 objects, 1123408 bytes
0.7% adjective_meaning 210 objects, 1039920 bytes
0.7% inter_schema_node 9103 objects, 1019536 bytes
0.6% inter_schema_node 9103 objects, 1019536 bytes
0.6% excerpt_meaning 3173 objects, 989976 bytes
0.6% production 4001 objects, 928232 bytes
0.6% ptoken 8705 objects, 905320 bytes
0.6% grammatical_usage 3653 objects, 876720 bytes
0.6% individual_form 2588 objects, 869568 bytes
0.5% grammatical_usage 3653 objects, 876720 bytes
0.5% individual_form 2588 objects, 869568 bytes
0.4% unary_predicate_array 17 x 1000 = 17000 objects, 680544 bytes
0.3% local_variable_array 49 x 100 = 4900 objects, 471968 bytes
0.2% verb_usage 1148 objects, 394912 bytes
0.2% dictionary 7809 objects, 374832 bytes
0.2% rule 478 objects, 374752 bytes
0.2% dictionary 7804 objects, 374592 bytes
0.2% verb_form 388 objects, 350752 bytes
0.1% noun 2398 objects, 287760 bytes
0.1% compilation_subtask 3392 objects, 271360 bytes
0.1% compilation_subtask 3391 objects, 271280 bytes
0.1% inference_subject 679 objects, 266168 bytes
0.1% inter_annotation_array 2 x 8192 = 16384 objects, 262208 bytes
0.1% vanilla_function 3845 objects, 246080 bytes
@ -73,7 +73,7 @@ Total memory consumption was 140785K = 137 MB
---- booking 868 objects, 62496 bytes
---- kind_macro_definition 9 objects, 62280 bytes
---- response_message 408 objects, 58752 bytes
---- command_grammar 130 objects, 58240 bytes
---- command_grammar 129 objects, 57792 bytes
---- table 7 objects, 56672 bytes
---- pcalc_func_array 1 x 1000 objects, 56032 bytes
---- cg_token 619 objects, 54472 bytes
@ -90,13 +90,14 @@ Total memory consumption was 140785K = 137 MB
---- shared_variable_access_list_array 12 x 100 = 1200 objects, 38784 bytes
---- parsing_data 684 objects, 38304 bytes
---- production_list 627 objects, 35112 bytes
---- counting_data 684 objects, 32832 bytes
---- regions_data 684 objects, 32832 bytes
---- counting_data 684 objects, 32832 bytes
---- property_permission 97 objects, 31816 bytes
---- stack_frame_box 307 objects, 29472 bytes
---- verb_sense 407 objects, 29304 bytes
---- parse_node_tree 33 objects, 28776 bytes
---- action_pattern_array 7 x 100 = 700 objects, 28224 bytes
---- open_source_licence 648 objects, 25920 bytes
---- shared_variable_set_array 6 x 100 = 600 objects, 24192 bytes
---- property 150 objects, 22800 bytes
---- backdrops_data 684 objects, 21888 bytes
@ -112,8 +113,8 @@ Total memory consumption was 140785K = 137 MB
---- pcalc_prop_deferral 86 objects, 17888 bytes
---- to_phrase_request 63 objects, 17136 bytes
---- understanding_reference_array 2 x 100 = 200 objects, 16064 bytes
---- action_name_list_array 1 x 1000 objects, 16032 bytes
---- match_avinue_array 1 x 1000 objects, 16032 bytes
---- action_name_list_array 1 x 1000 objects, 16032 bytes
---- adjective 142 objects, 15904 bytes
---- md_doc_state 3 objects, 15720 bytes
---- booking_list 407 objects, 13024 bytes
@ -124,7 +125,7 @@ Total memory consumption was 140785K = 137 MB
---- heading_tree 33 objects, 10296 bytes
---- stopwatch_timer 124 objects, 9920 bytes
---- inbuild_work 142 objects, 9088 bytes
---- inbuild_copy 65 objects, 7800 bytes
---- inbuild_copy 65 objects, 8840 bytes
---- equation_node 68 objects, 7616 bytes
---- understanding_item_array 3 x 100 = 300 objects, 7296 bytes
---- shared_variable_array 1 x 100 objects, 7232 bytes
@ -141,6 +142,7 @@ Total memory consumption was 140785K = 137 MB
---- semver_range 48 objects, 4992 bytes
---- value_property_data 88 objects, 4928 bytes
---- explicit_action_array 1 x 100 objects, 4832 bytes
---- inbuild_licence 65 objects, 4680 bytes
---- parsing_pp_data 97 objects, 4656 bytes
---- method_set 144 objects, 4608 bytes
---- command_line_switch 56 objects, 4480 bytes
@ -151,14 +153,14 @@ Total memory consumption was 140785K = 137 MB
---- property_setting_bp_data 88 objects, 3520 bytes
---- submodule_request 86 objects, 3440 bytes
---- parsed_use_option_setting 47 objects, 3384 bytes
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
---- JSON_type 46 objects, 3312 bytes
---- arithmetic_schema_array 1 x 50 objects, 3232 bytes
---- kind_constructor_comparison_schema_array 1 x 100 objects, 3232 bytes
---- JSON_single_requirement 63 objects, 3024 bytes
---- target_vm 21 objects, 3024 bytes
---- JSON_type 39 objects, 2808 bytes
---- JSON_single_requirement 55 objects, 2640 bytes
---- local_parking_lot 64 objects, 2560 bytes
---- parentage_inference_data 79 objects, 2528 bytes
---- part_of_inference_data 79 objects, 2528 bytes
---- parentage_inference_data 79 objects, 2528 bytes
---- kind_constructor_casting_rule_array 1 x 100 objects, 2432 bytes
---- kind_constructor_instance_rule_array 1 x 100 objects, 2432 bytes
---- equation_symbol 30 objects, 2400 bytes
@ -168,120 +170,120 @@ Total memory consumption was 140785K = 137 MB
---- pronoun_usage 42 objects, 1680 bytes
---- compiler_feature 30 objects, 1680 bytes
---- table_contribution_array 1 x 100 objects, 1632 bytes
---- JSON_requirement 50 objects, 1600 bytes
---- markdown_feature 33 objects, 1584 bytes
---- inform_pipeline 24 objects, 1536 bytes
---- noun_filter_token 22 objects, 1408 bytes
---- special_meaning_holder 35 objects, 1400 bytes
---- inter_node_array 35 objects, 1400 bytes
---- JSON_requirement 42 objects, 1344 bytes
---- table_column 16 objects, 1280 bytes
---- constant_phrase 20 objects, 1280 bytes
---- invocation_options_array 1 x 100 objects, 1224 bytes
---- direction_inference_data 30 objects, 1200 bytes
---- inbuild_search_result 29 objects, 1160 bytes
---- JSON_pair_requirement 36 objects, 1152 bytes
---- tree_inventory_item 28 objects, 1120 bytes
---- submodule_identity 34 objects, 1088 bytes
---- runtime_kind_structure 13 objects, 1040 bytes
---- quantifier 16 objects, 1024 bytes
---- web_md 7 objects, 1008 bytes
---- named_rulebook_outcome 15 objects, 960 bytes
---- compiled_documentation 3 objects, 960 bytes
---- named_rulebook_outcome 15 objects, 960 bytes
---- pipeline_stage 20 objects, 960 bytes
---- JSON_pair_requirement 29 objects, 928 bytes
---- control_structure_phrase 12 objects, 864 bytes
---- kit_configuration 21 objects, 840 bytes
---- cached_understanding 21 objects, 840 bytes
---- kit_configuration 21 objects, 840 bytes
---- phrase_option_array 1 x 100 objects, 824 bytes
---- inform_kit 7 objects, 784 bytes
---- copy_error 7 objects, 784 bytes
---- inform_kit 7 objects, 784 bytes
---- internal_test 15 objects, 720 bytes
---- relation_guard 5 objects, 640 bytes
---- implication 13 objects, 624 bytes
---- chapter_md 7 objects, 616 bytes
---- code_generation 1 object, 576 bytes
---- inter_annotation_form 14 objects, 560 bytes
---- inter_warehouse_room 10 objects, 560 bytes
---- generated_segment 14 objects, 560 bytes
---- module 7 objects, 560 bytes
---- inter_annotation_form 14 objects, 560 bytes
---- rulebook_outcome 17 objects, 544 bytes
---- small_word_set 11 objects, 528 bytes
---- indexing_category 6 objects, 528 bytes
---- markdown_variation 3 objects, 528 bytes
---- indexing_category 6 objects, 528 bytes
---- small_word_set 11 objects, 528 bytes
---- IFM_example 4 objects, 512 bytes
---- equation 4 objects, 480 bytes
---- inbuild_genre 8 objects, 448 bytes
---- bp_family 14 objects, 448 bytes
---- inference_family 11 objects, 440 bytes
---- source_file 5 objects, 440 bytes
---- inference_family 11 objects, 440 bytes
---- article_usage 8 objects, 384 bytes
---- cached_kind_declaration 8 objects, 320 bytes
---- pronoun 8 objects, 320 bytes
---- module_request 8 objects, 320 bytes
---- door_dir_notice 5 objects, 320 bytes
---- grammatical_category 8 objects, 320 bytes
---- module_request 8 objects, 320 bytes
---- pronoun 8 objects, 320 bytes
---- tree_inventory 1 object, 320 bytes
---- door_dir_notice 5 objects, 320 bytes
---- inter_pipeline 1 object, 312 bytes
---- up_family 9 objects, 288 bytes
---- compilation_unit 5 objects, 280 bytes
---- contents_entry 7 objects, 280 bytes
---- explicit_bp_data 5 objects, 280 bytes
---- compilation_unit 5 objects, 280 bytes
---- door_to_notice 5 objects, 280 bytes
---- kit_dependency 5 objects, 240 bytes
---- explicit_bp_data 5 objects, 280 bytes
---- verb_usage_tier 5 objects, 240 bytes
---- kit_dependency 5 objects, 240 bytes
---- inform_project 1 object, 232 bytes
---- adjective_meaning_family 7 objects, 224 bytes
---- local_block_value 4 objects, 224 bytes
---- index_lemma 4 objects, 224 bytes
---- index_reference 4 objects, 224 bytes
---- local_block_value 4 objects, 224 bytes
---- test_scenario 1 object, 216 bytes
---- cd_volume 3 objects, 216 bytes
---- release_instructions 1 object, 208 bytes
---- attachment_instruction 5 objects, 200 bytes
---- code_generator 5 objects, 200 bytes
---- build_skill 5 objects, 200 bytes
---- code_generator 5 objects, 200 bytes
---- attachment_instruction 5 objects, 200 bytes
---- plural_dictionary_entry 4 objects, 192 bytes
---- element_activation 6 objects, 192 bytes
---- imperative_defn_family 4 objects, 160 bytes
---- inference_subject_family 5 objects, 160 bytes
---- imperative_defn_family 4 objects, 160 bytes
---- inter_architecture 4 objects, 160 bytes
---- cd_pageset 3 objects, 144 bytes
---- inbuild_nest 3 objects, 120 bytes
---- inform_language 1 object, 104 bytes
---- md_links_dictionary 3 objects, 96 bytes
---- article 2 objects, 80 bytes
---- compile_task_data 1 object, 80 bytes
---- group_together_function 2 objects, 80 bytes
---- inter_warehouse 1 object, 56 bytes
---- compile_task_data 1 object, 80 bytes
---- article 2 objects, 80 bytes
---- figures_data 1 object, 56 bytes
---- build_methodology 1 object, 56 bytes
---- inform_kit_ittt 1 object, 48 bytes
---- HTML_file_state 1 object, 48 bytes
---- I6_generation_data 1 object, 48 bytes
---- inter_warehouse 1 object, 56 bytes
---- star_invention 1 object, 48 bytes
---- by_function_bp_data 1 object, 40 bytes
---- I6_generation_data 1 object, 48 bytes
---- HTML_file_state 1 object, 48 bytes
---- inform_kit_ittt 1 object, 48 bytes
---- loop_over_scope 1 object, 40 bytes
---- kind_template_definition 1 object, 40 bytes
---- by_function_bp_data 1 object, 40 bytes
---- i6_memory_setting 1 object, 32 bytes
99.9% was used for memory not allocated for objects:
100.0% was used for memory not allocated for objects:
62.6% text stream storage 90317276 bytes in 521559 claims
3.8% dictionary storage 5527616 bytes in 7804 claims
63.1% text stream storage 92690276 bytes in 539924 claims
3.9% dictionary storage 5765696 bytes in 7809 claims
---- sorting 6400 bytes in 1489 claims
4.9% source text 7200000 bytes in 3 claims
7.4% source text details 10800000 bytes in 2 claims
7.3% source text details 10800000 bytes in 2 claims
0.1% documentation fragments 262144 bytes in 1 claim
---- linguistic stock array 81920 bytes in 2 claims
---- small word set array 105600 bytes in 22 claims
3.1% inter symbols storage 4590080 bytes in 28364 claims
11.6% inter bytecode storage 16759000 bytes in 15 claims
4.3% inter links storage 6222976 bytes in 11 claims
11.4% inter bytecode storage 16759000 bytes in 15 claims
4.2% inter links storage 6222976 bytes in 11 claims
0.1% inter tree location list storage 191232 bytes in 32 claims
1.2% instance-of-kind counting 1768900 bytes in 1 claim
---- compilation workspace for objects 22056 bytes in 25 claims
---- lists for type-checking invocations 16000 bytes in 1 claim
---- code generation workspace for objects 3536 bytes in 19 claims
0.2% emitter array storage 290048 bytes in 2074 claims
0.1% emitter array storage 290048 bytes in 2074 claims
-141.-3% was overhead - -203757848 bytes = -198982K = -194 MB
-139.-5% was overhead - -204895480 bytes = -200093K = -195 MB

View file

@ -1,6 +1,6 @@
100.0% in inform7 run
66.7% in compilation to Inter
45.4% in //Sequence::undertake_queued_tasks//
66.9% in compilation to Inter
45.2% in //Sequence::undertake_queued_tasks//
4.1% in //MajorNodes::pre_pass//
3.4% in //MajorNodes::pass_1//
1.9% in //ImperativeDefinitions::assess_all//
@ -13,8 +13,8 @@
0.3% in //Sequence::undertake_queued_tasks//
0.3% in //Sequence::undertake_queued_tasks//
0.3% in //World::stage_V//
5.3% not specifically accounted for
27.0% in running Inter pipeline
5.7% not specifically accounted for
26.9% in running Inter pipeline
8.7% in step 14/15: generate inform6 -> auto.inf
6.8% in step 5/15: load-binary-kits
5.7% in step 6/15: make-synoptic-module

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "Architecture16Kit",
"version": "10.2.0-beta+6X50"
"version": "10.2.0-beta+6X51"
},
"compatibility": "16-bit",
"kit-details": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "Architecture32Kit",
"version": "10.2.0-beta+6X50"
"version": "10.2.0-beta+6X51"
},
"compatibility": "32-bit",
"kit-details": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "BasicInformKit",
"version": "10.2.0-beta+6X50"
"version": "10.2.0-beta+6X51"
},
"needs": [ {
"need": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "CommandParserKit",
"version": "10.2.0-beta+6X50"
"version": "10.2.0-beta+6X51"
},
"needs": [ {
"need": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "EnglishLanguageKit",
"version": "10.2.0-beta+6X50"
"version": "10.2.0-beta+6X51"
},
"needs": [ {
"need": {

View file

@ -2,7 +2,7 @@
"is": {
"type": "kit",
"title": "WorldModelKit",
"version": "10.2.0-beta+6X50"
"version": "10.2.0-beta+6X51"
},
"needs": [ {
"need": {

View file

@ -30,9 +30,19 @@
?"translated-syntax-cue": string
}
<legal-metadata> ::= {
"licence": string,
"rights-owner": string,
"date": number,
?"revision-date": number,
?"origin-url": string,
?"rights-history": string
}
<resource-metadata> ::= {
"is": <resource>,
?"compatibility": string,
?"rights": <legal-metadata>,
?"activates": [ string* ],
?"deactivates": [ string* ],
?"needs": [ {

View file

@ -70,6 +70,7 @@ void SourceProblems::issue_problems_arising(inbuild_copy *C) {
Problems::issue_problem_end();
break;
case METADATA_MALFORMED_CE:
case MALFORMED_LICENCE_CE:
if (CE->copy->found_by) {
Problems::quote_work(1, CE->copy->found_by->work);
Problems::quote_stream(2, CE->details);

View file

@ -1,5 +1,5 @@
Size of lexicon: 3173 excerpt meanings
Stored among 859 words out of total vocabulary of 10638
Stored among 859 words out of total vocabulary of 10637
723 words have a start list: longest belongs to report (with 293 meanings)
21 words have an end list: longest belongs to digits (with 7 meanings)
29 words have a middle list: longest belongs to to (with 4 meanings)