Added JSON support
This commit is contained in:
parent
cda0c4859d
commit
9cf61b4e21
32 changed files with 2728 additions and 38 deletions
|
@ -1,6 +1,6 @@
|
||||||
# Inweb 7.1.0
|
# Inweb 7.1.0
|
||||||
|
|
||||||
v7.1.0-beta+1B06 'Escape to Danger' (26 May 2022)
|
v7.1.0-beta+1B07 'Escape to Danger' (1 June 2022)
|
||||||
|
|
||||||
## About Inweb
|
## About Inweb
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
Prerelease: beta
|
Prerelease: beta
|
||||||
Build Date: 26 May 2022
|
Build Date: 1 June 2022
|
||||||
Build Number: 1B06
|
Build Number: 1B07
|
||||||
|
|
|
@ -74,13 +74,13 @@ not necessarily.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">struct</span><span class="plain-syntax"> </span><span class="reserved-syntax">dict_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next_in_entry</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">dict_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">next_in_entry</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">} </span><span class="reserved-syntax">dict_entry</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">} </span><span class="reserved-syntax">dict_entry</span><span class="plain-syntax">;</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>The structure dictionary is private to this section.</li><li>The structure dict_entry is accessed in 4/prp, 5/ee, 8/bdfw and here.</li></ul>
|
<ul class="endnotetexts"><li>The structure dictionary is private to this section.</li><li>The structure dict_entry is accessed in 4/prp, 4/jsn, 5/ee, 8/bdfw and here.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Creation. </b>Dictionaries can have arbitrary size, in that they expand as needed, but for
|
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. Creation. </b>Dictionaries can have arbitrary size, in that they expand as needed, but for
|
||||||
efficiency's sake the caller can set them up with an initial size of her choice.
|
efficiency's sake the caller can set them up with an initial size of her choice.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="function-syntax">Dictionaries::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">Dictionaries::new</span></span>:<br/><a href="2-dct.html#SP7_2">§7.2</a><br/>Command Line Arguments - <a href="3-cla.html#SP5">§5</a><br/>String Manipulation - <a href="4-sm.html#SP27_1">§27.1</a><br/>HTML - <a href="5-htm.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">textual</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="function-syntax">Dictionaries::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">Dictionaries::new</span></span>:<br/><a href="2-dct.html#SP7_2">§7.2</a><br/>Command Line Arguments - <a href="3-cla.html#SP5">§5</a><br/>String Manipulation - <a href="4-sm.html#SP27_1">§27.1</a><br/>JSON - <a href="4-jsn.html#SP6">§6</a>, <a href="4-jsn.html#SP19">§19</a><br/>HTML - <a href="5-htm.html#SP11">§11</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">textual</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">S</span><span class="plain-syntax"> < </span><span class="constant-syntax">2</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"dictionary too small"</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">S</span><span class="plain-syntax"> < </span><span class="constant-syntax">2</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"dictionary too small"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">dictionary</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">dictionary</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">D</span><span class="plain-syntax">-></span><span class="element-syntax">textual</span><span class="plain-syntax"> = </span><span class="identifier-syntax">textual</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">D</span><span class="plain-syntax">-></span><span class="element-syntax">textual</span><span class="plain-syntax"> = </span><span class="identifier-syntax">textual</span><span class="plain-syntax">;</span>
|
||||||
|
@ -132,10 +132,10 @@ so be careful if thread safety's an issue.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">dict_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">Dictionaries::find</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">Dictionaries::find</span></span>:<br/><a href="2-dct.html#SP6">§6</a>, <a href="2-dct.html#SP8">§8</a>, <a href="2-dct.html#SP10">§10</a><br/>Command Line Arguments - <a href="3-cla.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">dict_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">Dictionaries::find</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">Dictionaries::find</span></span>:<br/><a href="2-dct.html#SP6">§6</a>, <a href="2-dct.html#SP8">§8</a>, <a href="2-dct.html#SP10">§10</a><br/>Command Line Arguments - <a href="3-cla.html#SP13">§13</a><br/>JSON - <a href="4-jsn.html#SP7">§7</a>, <a href="4-jsn.html#SP23">§23</a>, <a href="4-jsn.html#SP28">§28</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-dct.html#SP7" class="function-link"><span class="function-syntax">Dictionaries::find_p</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</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">return</span><span class="plain-syntax"> </span><a href="2-dct.html#SP7" class="function-link"><span class="function-syntax">Dictionaries::find_p</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</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="reserved-syntax">dict_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">Dictionaries::create</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Dictionaries::create</span></span>:<br/><a href="2-dct.html#SP6">§6</a>, <a href="2-dct.html#SP9">§9</a><br/>Command Line Arguments - <a href="3-cla.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">dict_entry</span><span class="plain-syntax"> *</span><span class="function-syntax">Dictionaries::create</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Dictionaries::create</span></span>:<br/><a href="2-dct.html#SP6">§6</a>, <a href="2-dct.html#SP9">§9</a><br/>Command Line Arguments - <a href="3-cla.html#SP5">§5</a><br/>JSON - <a href="4-jsn.html#SP6">§6</a>, <a href="4-jsn.html#SP22">§22</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-dct.html#SP7" class="function-link"><span class="function-syntax">Dictionaries::find_p</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-dct.html#SP7" class="function-link"><span class="function-syntax">Dictionaries::find_p</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">K</span><span class="plain-syntax">, </span><span class="constant-syntax">1</span><span class="plain-syntax">);</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">Dictionaries::destroy</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">Dictionaries::destroy</span></span>:<br/><a href="2-dct.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Dictionaries::destroy</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">Dictionaries::destroy</span></span>:<br/><a href="2-dct.html#SP6">§6</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">K</span><span class="plain-syntax">) {</span>
|
||||||
|
@ -280,7 +280,7 @@ values which are arbitrary pointers, so we have to use void pointers:
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="function-syntax">Dictionaries::read_value</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Dictionaries::read_value</span></span>:<br/>Command Line Arguments - <a href="3-cla.html#SP13">§13</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">key</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="function-syntax">Dictionaries::read_value</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Dictionaries::read_value</span></span>:<br/>Command Line Arguments - <a href="3-cla.html#SP13">§13</a><br/>JSON - <a href="4-jsn.html#SP16">§16</a>, <a href="4-jsn.html#SP26_3">§26.3</a>, <a href="4-jsn.html#SP31">§31</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">key</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">D</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="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">D</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="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">D</span><span class="plain-syntax">-></span><span class="identifier-syntax">textual</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"textual dictionary accessed as pointy"</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">D</span><span class="plain-syntax">-></span><span class="identifier-syntax">textual</span><span class="plain-syntax">) </span><span class="identifier-syntax">internal_error</span><span class="plain-syntax">(</span><span class="string-syntax">"textual dictionary accessed as pointy"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">dict_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><a href="2-dct.html#SP5" class="function-link"><span class="function-syntax">Dictionaries::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">dict_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax"> = </span><a href="2-dct.html#SP5" class="function-link"><span class="function-syntax">Dictionaries::find</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">D</span><span class="plain-syntax">, </span><span class="identifier-syntax">key</span><span class="plain-syntax">);</span>
|
||||||
|
|
|
@ -65,6 +65,9 @@ here we are.
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">heterogeneous_tree_CLASS</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">heterogeneous_tree_CLASS</span>
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">HTML_file_state_CLASS</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">HTML_file_state_CLASS</span>
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">HTML_tag_CLASS</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">HTML_tag_CLASS</span>
|
||||||
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">JSON_pair_requirement_CLASS</span>
|
||||||
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">JSON_requirement_CLASS</span>
|
||||||
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">JSON_value_CLASS</span>
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">linked_list_CLASS</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">linked_list_CLASS</span>
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">linked_list_item_CLASS</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">linked_list_item_CLASS</span>
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">match_avinue_CLASS</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">match_avinue_CLASS</span>
|
||||||
|
@ -106,6 +109,9 @@ here we are.
|
||||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">filename</span><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">filename</span><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">heterogeneous_tree</span><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">HTML_file_state</span><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">HTML_file_state</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">JSON_pair_requirement</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">JSON_requirement</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">JSON_value</span><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">linked_list</span><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">linked_list</span><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">method_set</span><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">method_set</span><span class="plain-syntax">)</span>
|
||||||
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">method</span><span class="plain-syntax">)</span>
|
<span class="identifier-syntax">DECLARE_CLASS</span><span class="plain-syntax">(</span><span class="reserved-syntax">method</span><span class="plain-syntax">)</span>
|
||||||
|
|
|
@ -193,7 +193,7 @@ of the list, <span class="extract"><span class="extract-syntax">N</span></span>
|
||||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. A function call API. </b></p>
|
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. A function call API. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">LinkedLists::len</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">LinkedLists::len</span></span>:<br/><a href="2-llas.html#SP11">§11</a><br/>Time - <a href="3-tm.html#SP7">§7</a><br/>Epub Ebooks - <a href="5-ee.html#SP7_3">§7.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">LinkedLists::len</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">LinkedLists::len</span></span>:<br/><a href="2-llas.html#SP11">§11</a><br/>Time - <a href="3-tm.html#SP7">§7</a><br/>JSON - <a href="4-jsn.html#SP25">§25</a><br/>Epub Ebooks - <a href="5-ee.html#SP7_3">§7.3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">?(</span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">linked_list_length</span><span class="plain-syntax">):0;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="plain-syntax">?(</span><span class="identifier-syntax">L</span><span class="plain-syntax">-></span><span class="element-syntax">linked_list_length</span><span class="plain-syntax">):0;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
<span class="reserved-syntax">linked_list_item</span><span class="plain-syntax"> *</span><span class="function-syntax">LinkedLists::first</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">LinkedLists::first</span></span>:<br/><a href="2-llas.html#SP8">§8</a><br/>Version Numbers - <a href="7-vn.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">linked_list_item</span><span class="plain-syntax"> *</span><span class="function-syntax">LinkedLists::first</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">LinkedLists::first</span></span>:<br/><a href="2-llas.html#SP8">§8</a><br/>Version Numbers - <a href="7-vn.html#SP8">§8</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">L</span><span class="plain-syntax">) {</span>
|
||||||
|
@ -271,7 +271,7 @@ points to <span class="extract"><span class="extract-syntax">P</span></span>. Th
|
||||||
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. LIFO stacks. </b>The above gives us an almost free implementation of LIFO, last-in-first-out,
|
<p class="commentary firstcommentary"><a id="SP10" class="paragraph-anchor"></a><b>§10. LIFO stacks. </b>The above gives us an almost free implementation of LIFO, last-in-first-out,
|
||||||
stacks, where we represent a stack as a linked list whose first entry is at
|
stacks, where we represent a stack as a linked list whose first entry is at
|
||||||
the front. To push an item, we add it at the front; to pull, we remove the
|
the front. To push an item, we add it at the front; to pull, we remove the
|
||||||
front iten.
|
front item.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="commentary">We provide an abstract type name for these stacks, even though they're the
|
<p class="commentary">We provide an abstract type name for these stacks, even though they're the
|
||||||
|
|
|
@ -309,7 +309,7 @@ a single large object, or a single array of small objects.
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">; </span><span class="comment-syntax"> allocation ID number of object stored in this frame</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">allocation_id</span><span class="plain-syntax">; </span><span class="comment-syntax"> allocation ID number of object stored in this frame</span>
|
||||||
<span class="plain-syntax">} </span><span class="reserved-syntax">memory_frame</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">} </span><span class="reserved-syntax">memory_frame</span><span class="plain-syntax">;</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>The structure memory_frame is private to this section.</li></ul>
|
<ul class="endnotetexts"><li>The structure memory_frame is accessed in 4/jsn and here.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b>There is a single linked list of all the memory frames, perhaps of about
|
<p class="commentary firstcommentary"><a id="SP14" class="paragraph-anchor"></a><b>§14. </b>There is a single linked list of all the memory frames, perhaps of about
|
||||||
10000 entries in length, beginning here. (These frames live in different memory
|
10000 entries in length, beginning here. (These frames live in different memory
|
||||||
blocks, but we don't need to worry about that.)
|
blocks, but we don't need to worry about that.)
|
||||||
|
|
|
@ -64,7 +64,7 @@ function togglePopup(material_id) {
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Characters::isalpha</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">Characters::isalpha</span></span>:<br/><a href="4-chr.html#SP7">§7</a><br/>Writers and Loggers - <a href="2-wal.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Characters::isalpha</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">Characters::isalpha</span></span>:<br/><a href="4-chr.html#SP7">§7</a><br/>Writers and Loggers - <a href="2-wal.html#SP5">§5</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">isalpha</span><span class="plain-syntax">((</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">c</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">isalpha</span><span class="plain-syntax">((</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">c</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Characters::isdigit</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Characters::isdigit</span></span>:<br/>Writers and Loggers - <a href="2-wal.html#SP5">§5</a><br/>Filenames - <a href="3-fln.html#SP9">§9</a><br/>Version Numbers - <a href="7-vn.html#SP7">§7</a>, <a href="7-vn.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Characters::isdigit</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Characters::isdigit</span></span>:<br/>Writers and Loggers - <a href="2-wal.html#SP5">§5</a><br/>Filenames - <a href="3-fln.html#SP9">§9</a><br/>JSON - <a href="4-jsn.html#SP10">§10</a>, <a href="4-jsn.html#SP14">§14</a><br/>Version Numbers - <a href="7-vn.html#SP7">§7</a>, <a href="7-vn.html#SP10">§10</a></span></button><span class="plain-syntax">(</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">isdigit</span><span class="plain-syntax">((</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">c</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="identifier-syntax">isdigit</span><span class="plain-syntax">((</span><span class="reserved-syntax">int</span><span class="plain-syntax">) </span><span class="identifier-syntax">c</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Characters::isupper</span><span class="plain-syntax">(</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Characters::isupper</span><span class="plain-syntax">(</span><span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
||||||
|
@ -89,7 +89,7 @@ function togglePopup(material_id) {
|
||||||
<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="character-syntax">' '</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'\t'</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</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="character-syntax">' '</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'\t'</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Characters::is_whitespace</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Characters::is_whitespace</span></span>:<br/>Preprocessor - <a href="4-prp.html#SP3_1">§3.1</a>, <a href="4-prp.html#SP4_1_3">§4.1.3</a><br/>Pattern Matching - <a href="4-pm.html#SP13">§13</a><br/>Web Structure - <a href="8-ws.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Characters::is_whitespace</span><button class="popup" onclick="togglePopup('usagePopup6')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup6">Usage of <span class="code-font"><span class="function-syntax">Characters::is_whitespace</span></span>:<br/>Preprocessor - <a href="4-prp.html#SP3_1">§3.1</a>, <a href="4-prp.html#SP4_1_3">§4.1.3</a><br/>Pattern Matching - <a href="4-pm.html#SP13">§13</a><br/>JSON - <a href="4-jsn.html#SP10_1">§10.1</a>, <a href="4-jsn.html#SP11">§11</a>, <a href="4-jsn.html#SP12">§12</a>, <a href="4-jsn.html#SP13">§13</a>, <a href="4-jsn.html#SP14">§14</a>, <a href="4-jsn.html#SP28_1">§28.1</a>, <a href="4-jsn.html#SP29">§29</a>, <a href="4-jsn.html#SP30">§30</a><br/>Web Structure - <a href="8-ws.html#SP7">§7</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">' '</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'\t'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'\n'</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</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="character-syntax">' '</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'\t'</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">c</span><span class="plain-syntax"> == </span><span class="character-syntax">'\n'</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
@ -221,7 +221,7 @@ the more obvious accents from it.
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="3-tm.html">❮</a></li><li class="progresschapter"><a href="P-abgtf.html">P</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-dl.html">2</a></li><li class="progresschapter"><a href="3-em.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">chr</li><li class="progresssection"><a href="4-cst.html">cst</a></li><li class="progresssection"><a href="4-ws.html">ws</a></li><li class="progresssection"><a href="4-sm.html">sm</a></li><li class="progresssection"><a href="4-tf.html">tf</a></li><li class="progresssection"><a href="4-prp.html">prp</a></li><li class="progresssection"><a href="4-taa.html">taa</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresschapter"><a href="5-htm.html">5</a></li><li class="progresschapter"><a href="6-bf.html">6</a></li><li class="progresschapter"><a href="7-vn.html">7</a></li><li class="progresschapter"><a href="8-ws.html">8</a></li><li class="progressnext"><a href="4-cst.html">❯</a></li></ul></div>
|
<ul class="progressbar"><li class="progressprev"><a href="3-tm.html">❮</a></li><li class="progresschapter"><a href="P-abgtf.html">P</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-dl.html">2</a></li><li class="progresschapter"><a href="3-em.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresscurrent">chr</li><li class="progresssection"><a href="4-cst.html">cst</a></li><li class="progresssection"><a href="4-ws.html">ws</a></li><li class="progresssection"><a href="4-sm.html">sm</a></li><li class="progresssection"><a href="4-tf.html">tf</a></li><li class="progresssection"><a href="4-prp.html">prp</a></li><li class="progresssection"><a href="4-taa.html">taa</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresssection"><a href="4-jsn.html">jsn</a></li><li class="progresschapter"><a href="5-htm.html">5</a></li><li class="progresschapter"><a href="6-bf.html">6</a></li><li class="progresschapter"><a href="7-vn.html">7</a></li><li class="progresschapter"><a href="8-ws.html">8</a></li><li class="progressnext"><a href="4-cst.html">❯</a></li></ul></div>
|
||||||
</nav><!--End of weave-->
|
</nav><!--End of weave-->
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
|
@ -211,7 +211,7 @@ are almost always best avoided.)
|
||||||
|
|
||||||
</pre>
|
</pre>
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="4-chr.html">❮</a></li><li class="progresschapter"><a href="P-abgtf.html">P</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-dl.html">2</a></li><li class="progresschapter"><a href="3-em.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-chr.html">chr</a></li><li class="progresscurrent">cst</li><li class="progresssection"><a href="4-ws.html">ws</a></li><li class="progresssection"><a href="4-sm.html">sm</a></li><li class="progresssection"><a href="4-tf.html">tf</a></li><li class="progresssection"><a href="4-prp.html">prp</a></li><li class="progresssection"><a href="4-taa.html">taa</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresschapter"><a href="5-htm.html">5</a></li><li class="progresschapter"><a href="6-bf.html">6</a></li><li class="progresschapter"><a href="7-vn.html">7</a></li><li class="progresschapter"><a href="8-ws.html">8</a></li><li class="progressnext"><a href="4-ws.html">❯</a></li></ul></div>
|
<ul class="progressbar"><li class="progressprev"><a href="4-chr.html">❮</a></li><li class="progresschapter"><a href="P-abgtf.html">P</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-dl.html">2</a></li><li class="progresschapter"><a href="3-em.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-chr.html">chr</a></li><li class="progresscurrent">cst</li><li class="progresssection"><a href="4-ws.html">ws</a></li><li class="progresssection"><a href="4-sm.html">sm</a></li><li class="progresssection"><a href="4-tf.html">tf</a></li><li class="progresssection"><a href="4-prp.html">prp</a></li><li class="progresssection"><a href="4-taa.html">taa</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresssection"><a href="4-jsn.html">jsn</a></li><li class="progresschapter"><a href="5-htm.html">5</a></li><li class="progresschapter"><a href="6-bf.html">6</a></li><li class="progresschapter"><a href="7-vn.html">7</a></li><li class="progresschapter"><a href="8-ws.html">8</a></li><li class="progressnext"><a href="4-ws.html">❯</a></li></ul></div>
|
||||||
</nav><!--End of weave-->
|
</nav><!--End of weave-->
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
1168
docs/foundation-module/4-jsn.html
Normal file
1168
docs/foundation-module/4-jsn.html
Normal file
File diff suppressed because it is too large
Load diff
|
@ -556,7 +556,7 @@ For example,
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="4-pm.html#SP14">§14</a> (twice).</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="4-pm.html#SP14">§14</a> (twice).</li></ul>
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="4-taa.html">❮</a></li><li class="progresschapter"><a href="P-abgtf.html">P</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-dl.html">2</a></li><li class="progresschapter"><a href="3-em.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-chr.html">chr</a></li><li class="progresssection"><a href="4-cst.html">cst</a></li><li class="progresssection"><a href="4-ws.html">ws</a></li><li class="progresssection"><a href="4-sm.html">sm</a></li><li class="progresssection"><a href="4-tf.html">tf</a></li><li class="progresssection"><a href="4-prp.html">prp</a></li><li class="progresssection"><a href="4-taa.html">taa</a></li><li class="progresscurrent">pm</li><li class="progresschapter"><a href="5-htm.html">5</a></li><li class="progresschapter"><a href="6-bf.html">6</a></li><li class="progresschapter"><a href="7-vn.html">7</a></li><li class="progresschapter"><a href="8-ws.html">8</a></li><li class="progressnext"><a href="5-htm.html">❯</a></li></ul></div>
|
<ul class="progressbar"><li class="progressprev"><a href="4-taa.html">❮</a></li><li class="progresschapter"><a href="P-abgtf.html">P</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-dl.html">2</a></li><li class="progresschapter"><a href="3-em.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-chr.html">chr</a></li><li class="progresssection"><a href="4-cst.html">cst</a></li><li class="progresssection"><a href="4-ws.html">ws</a></li><li class="progresssection"><a href="4-sm.html">sm</a></li><li class="progresssection"><a href="4-tf.html">tf</a></li><li class="progresssection"><a href="4-prp.html">prp</a></li><li class="progresssection"><a href="4-taa.html">taa</a></li><li class="progresscurrent">pm</li><li class="progresssection"><a href="4-jsn.html">jsn</a></li><li class="progresschapter"><a href="5-htm.html">5</a></li><li class="progresschapter"><a href="6-bf.html">6</a></li><li class="progresschapter"><a href="7-vn.html">7</a></li><li class="progresschapter"><a href="8-ws.html">8</a></li><li class="progressnext"><a href="4-jsn.html">❯</a></li></ul></div>
|
||||||
</nav><!--End of weave-->
|
</nav><!--End of weave-->
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
|
@ -582,7 +582,7 @@ artefact of the current scanning algorithm, which might some day change.
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">var</span><span class="plain-syntax">-></span><span class="element-syntax">value</span><span class="plain-syntax"> = </span><a href="4-sm.html#SP3" class="function-link"><span class="function-syntax">Str::duplicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">var</span><span class="plain-syntax">-></span><span class="element-syntax">value</span><span class="plain-syntax"> = </span><a href="4-sm.html#SP3" class="function-link"><span class="function-syntax">Str::duplicate</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">val</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>The structure preprocessor_variable is accessed in 2/dct, 2/trs, 5/ee, 8/bdfw and here.</li></ul>
|
<ul class="endnotetexts"><li>The structure preprocessor_variable is accessed in 2/dct, 2/trs, 4/jsn, 5/ee, 8/bdfw and here.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>Each variable belongs to a single "set". If <span class="extract"><span class="extract-syntax">EXAMPLE</span></span> has one meaning outside a
|
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. </b>Each variable belongs to a single "set". If <span class="extract"><span class="extract-syntax">EXAMPLE</span></span> has one meaning outside a
|
||||||
definition and another insider, that's two variables with a common name, not
|
definition and another insider, that's two variables with a common name, not
|
||||||
one variable belonging to two sets at once.
|
one variable belonging to two sets at once.
|
||||||
|
@ -697,7 +697,7 @@ parameters and the length of a macro:
|
||||||
<span class="plain-syntax"> </span><span class="constant-syntax">CLASS_DEFINITION</span>
|
<span class="plain-syntax"> </span><span class="constant-syntax">CLASS_DEFINITION</span>
|
||||||
<span class="plain-syntax">} </span><span class="reserved-syntax">preprocessor_macro_parameter</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">} </span><span class="reserved-syntax">preprocessor_macro_parameter</span><span class="plain-syntax">;</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>The structure preprocessor_macro is private to this section.</li><li>The structure preprocessor_macro_parameter is accessed in 2/trs and here.</li></ul>
|
<ul class="endnotetexts"><li>The structure preprocessor_macro is private to this section.</li><li>The structure preprocessor_macro_parameter is accessed in 2/trs, 4/jsn and here.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>The following creates a new macro and adds it to the list <span class="extract"><span class="extract-syntax">L</span></span>. By default, it
|
<p class="commentary firstcommentary"><a id="SP11" class="paragraph-anchor"></a><b>§11. </b>The following creates a new macro and adds it to the list <span class="extract"><span class="extract-syntax">L</span></span>. By default, it
|
||||||
has an empty definition (i.e., no lines), but may have a meaning provided by its
|
has an empty definition (i.e., no lines), but may have a meaning provided by its
|
||||||
<span class="extract"><span class="extract-syntax">expander</span></span> function regardless. The <span class="extract"><span class="extract-syntax">parameter_specification</span></span> is as in the
|
<span class="extract"><span class="extract-syntax">expander</span></span> function regardless. The <span class="extract"><span class="extract-syntax">parameter_specification</span></span> is as in the
|
||||||
|
@ -977,7 +977,7 @@ each in turn, and expand the material.
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="4-prp.html#SP18">§18</a>.</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="4-prp.html#SP18">§18</a>.</li></ul>
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="4-tf.html">❮</a></li><li class="progresschapter"><a href="P-abgtf.html">P</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-dl.html">2</a></li><li class="progresschapter"><a href="3-em.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-chr.html">chr</a></li><li class="progresssection"><a href="4-cst.html">cst</a></li><li class="progresssection"><a href="4-ws.html">ws</a></li><li class="progresssection"><a href="4-sm.html">sm</a></li><li class="progresssection"><a href="4-tf.html">tf</a></li><li class="progresscurrent">prp</li><li class="progresssection"><a href="4-taa.html">taa</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresschapter"><a href="5-htm.html">5</a></li><li class="progresschapter"><a href="6-bf.html">6</a></li><li class="progresschapter"><a href="7-vn.html">7</a></li><li class="progresschapter"><a href="8-ws.html">8</a></li><li class="progressnext"><a href="4-taa.html">❯</a></li></ul></div>
|
<ul class="progressbar"><li class="progressprev"><a href="4-tf.html">❮</a></li><li class="progresschapter"><a href="P-abgtf.html">P</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-dl.html">2</a></li><li class="progresschapter"><a href="3-em.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-chr.html">chr</a></li><li class="progresssection"><a href="4-cst.html">cst</a></li><li class="progresssection"><a href="4-ws.html">ws</a></li><li class="progresssection"><a href="4-sm.html">sm</a></li><li class="progresssection"><a href="4-tf.html">tf</a></li><li class="progresscurrent">prp</li><li class="progresssection"><a href="4-taa.html">taa</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresssection"><a href="4-jsn.html">jsn</a></li><li class="progresschapter"><a href="5-htm.html">5</a></li><li class="progresschapter"><a href="6-bf.html">6</a></li><li class="progresschapter"><a href="7-vn.html">7</a></li><li class="progresschapter"><a href="8-ws.html">8</a></li><li class="progressnext"><a href="4-taa.html">❯</a></li></ul></div>
|
||||||
</nav><!--End of weave-->
|
</nav><!--End of weave-->
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
|
@ -88,7 +88,7 @@ access.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Str::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">Str::new</span></span>:<br/><a href="4-sm.html#SP3">§3</a><br/>Debugging Log - <a href="2-dl.html#SP4_1">§4.1</a><br/>Dictionaries - <a href="2-dct.html#SP7_3_1">§7.3.1</a><br/>Command Line Arguments - <a href="3-cla.html#SP6">§6</a>, <a href="3-cla.html#SP11">§11</a><br/>Directories - <a href="3-drc.html#SP4">§4</a><br/>Preprocessor - <a href="4-prp.html#SP3_2_1">§3.2.1</a>, <a href="4-prp.html#SP4_1_3_1_1">§4.1.3.1.1</a>, <a href="4-prp.html#SP4_1_3_1_3">§4.1.3.1.3</a><br/>HTML - <a href="5-htm.html#SP27_2">§27.2</a><br/>Epub Ebooks - <a href="5-ee.html#SP5">§5</a><br/>Version Numbers - <a href="7-vn.html#SP7">§7</a><br/>Web Structure - <a href="8-ws.html#SP5_2">§5.2</a>, <a href="8-ws.html#SP6_1">§6.1</a>, <a href="8-ws.html#SP7_2_1">§7.2.1</a>, <a href="8-ws.html#SP7_2_2_1">§7.2.2.1</a><br/>Build Files - <a href="8-bf.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Str::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">Str::new</span></span>:<br/><a href="4-sm.html#SP3">§3</a><br/>Debugging Log - <a href="2-dl.html#SP4_1">§4.1</a><br/>Dictionaries - <a href="2-dct.html#SP7_3_1">§7.3.1</a><br/>Command Line Arguments - <a href="3-cla.html#SP6">§6</a>, <a href="3-cla.html#SP11">§11</a><br/>Directories - <a href="3-drc.html#SP4">§4</a><br/>Preprocessor - <a href="4-prp.html#SP3_2_1">§3.2.1</a>, <a href="4-prp.html#SP4_1_3_1_1">§4.1.3.1.1</a>, <a href="4-prp.html#SP4_1_3_1_3">§4.1.3.1.3</a><br/>JSON - <a href="4-jsn.html#SP25">§25</a><br/>HTML - <a href="5-htm.html#SP27_2">§27.2</a><br/>Epub Ebooks - <a href="5-ee.html#SP5">§5</a><br/>Version Numbers - <a href="7-vn.html#SP7">§7</a><br/>Web Structure - <a href="8-ws.html#SP5_2">§5.2</a>, <a href="8-ws.html#SP6_1">§6.1</a>, <a href="8-ws.html#SP7_2_1">§7.2.1</a>, <a href="8-ws.html#SP7_2_2_1">§7.2.2.1</a><br/>Build Files - <a href="8-bf.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">void</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-sm.html#SP2" class="function-link"><span class="function-syntax">Str::new_with_capacity</span></a><span class="plain-syntax">(32);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-sm.html#SP2" class="function-link"><span class="function-syntax">Str::new_with_capacity</span></a><span class="plain-syntax">(32);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
@ -108,7 +108,7 @@ duplicated as <span class="extract"><span class="extract-syntax">NULL</span></sp
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Str::duplicate</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Str::duplicate</span></span>:<br/>Dictionaries - <a href="2-dct.html#SP7_3_1">§7.3.1</a><br/>Trees - <a href="2-trs.html#SP7">§7</a>, <a href="2-trs.html#SP9">§9</a><br/>Command Line Arguments - <a href="3-cla.html#SP5_1">§5.1</a><br/>Time - <a href="3-tm.html#SP6">§6</a><br/>Preprocessor - <a href="4-prp.html#SP2">§2</a>, <a href="4-prp.html#SP6">§6</a>, <a href="4-prp.html#SP8">§8</a>, <a href="4-prp.html#SP11_1">§11.1</a>, <a href="4-prp.html#SP11_2">§11.2</a>, <a href="4-prp.html#SP11_2_1">§11.2.1</a>, <a href="4-prp.html#SP12">§12</a>, <a href="4-prp.html#SP13">§13</a><br/>Epub Ebooks - <a href="5-ee.html#SP5">§5</a><br/>Version Numbers - <a href="7-vn.html#SP7_1">§7.1</a><br/>Web Structure - <a href="8-ws.html#SP7_2_1">§7.2.1</a>, <a href="8-ws.html#SP7_2_2_1">§7.2.2.1</a>, <a href="8-ws.html#SP7_2_2_3_1">§7.2.2.3.1</a><br/>Bibliographic Data for Webs - <a href="8-bdfw.html#SP7_1">§7.1</a><br/>Web Modules - <a href="8-wm.html#SP2">§2</a><br/>Build Files - <a href="8-bf.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="function-syntax">Str::duplicate</span><button class="popup" onclick="togglePopup('usagePopup4')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup4">Usage of <span class="code-font"><span class="function-syntax">Str::duplicate</span></span>:<br/>Dictionaries - <a href="2-dct.html#SP7_3_1">§7.3.1</a><br/>Trees - <a href="2-trs.html#SP7">§7</a>, <a href="2-trs.html#SP9">§9</a><br/>Command Line Arguments - <a href="3-cla.html#SP5_1">§5.1</a><br/>Time - <a href="3-tm.html#SP6">§6</a><br/>Preprocessor - <a href="4-prp.html#SP2">§2</a>, <a href="4-prp.html#SP6">§6</a>, <a href="4-prp.html#SP8">§8</a>, <a href="4-prp.html#SP11_1">§11.1</a>, <a href="4-prp.html#SP11_2">§11.2</a>, <a href="4-prp.html#SP11_2_1">§11.2.1</a>, <a href="4-prp.html#SP12">§12</a>, <a href="4-prp.html#SP13">§13</a><br/>JSON - <a href="4-jsn.html#SP4">§4</a>, <a href="4-jsn.html#SP6">§6</a>, <a href="4-jsn.html#SP8">§8</a>, <a href="4-jsn.html#SP22">§22</a>, <a href="4-jsn.html#SP24">§24</a><br/>Epub Ebooks - <a href="5-ee.html#SP5">§5</a><br/>Version Numbers - <a href="7-vn.html#SP7_1">§7.1</a><br/>Web Structure - <a href="8-ws.html#SP7_2_1">§7.2.1</a>, <a href="8-ws.html#SP7_2_2_1">§7.2.2.1</a>, <a href="8-ws.html#SP7_2_2_3_1">§7.2.2.3.1</a><br/>Bibliographic Data for Webs - <a href="8-bdfw.html#SP7_1">§7.1</a><br/>Web Modules - <a href="8-wm.html#SP2">§2</a><br/>Build Files - <a href="8-bf.html#SP3">§3</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">E</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">E</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><a href="4-sm.html#SP2" class="function-link"><span class="function-syntax">Str::new</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><span class="identifier-syntax">E</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="4-sm.html#SP2" class="function-link"><span class="function-syntax">Str::new</span></a><span class="plain-syntax">();</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax"> = </span><span class="identifier-syntax">CREATE</span><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-str.html#SP26" class="function-link"><span class="function-syntax">Streams::open_to_memory</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><a href="4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">)+4)) {</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="2-str.html#SP26" class="function-link"><span class="function-syntax">Streams::open_to_memory</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><a href="4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">E</span><span class="plain-syntax">)+4)) {</span>
|
||||||
|
@ -184,7 +184,7 @@ thing plus a little extra, for efficiency's sake.
|
||||||
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Converting to integers. </b></p>
|
<p class="commentary firstcommentary"><a id="SP7" class="paragraph-anchor"></a><b>§7. Converting to integers. </b></p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Str::atoi</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Str::atoi</span></span>:<br/>Command Line Arguments - <a href="3-cla.html#SP12">§12</a><br/>HTML - <a href="5-htm.html#SP27_2">§27.2</a><br/>Version Numbers - <a href="7-vn.html#SP10">§10</a><br/>Web Structure - <a href="8-ws.html#SP7_3_3_2">§7.3.3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">index</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Str::atoi</span><button class="popup" onclick="togglePopup('usagePopup8')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup8">Usage of <span class="code-font"><span class="function-syntax">Str::atoi</span></span>:<br/>Command Line Arguments - <a href="3-cla.html#SP12">§12</a><br/>JSON - <a href="4-jsn.html#SP14">§14</a><br/>HTML - <a href="5-htm.html#SP27_2">§27.2</a><br/>Version Numbers - <a href="7-vn.html#SP10">§10</a><br/>Web Structure - <a href="8-ws.html#SP7_3_3_2">§7.3.3.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">index</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> </span><span class="identifier-syntax">buffer</span><span class="plain-syntax">[32];</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">char</span><span class="plain-syntax"> </span><span class="identifier-syntax">buffer</span><span class="plain-syntax">[32];</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</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">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</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">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">string_position</span><span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="4-sm.html#SP10" class="function-link"><span class="function-syntax">Str::at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">index</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">for</span><span class="plain-syntax"> (</span><span class="reserved-syntax">string_position</span><span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax"> = </span><a href="4-sm.html#SP10" class="function-link"><span class="function-syntax">Str::at</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">index</span><span class="plain-syntax">);</span>
|
||||||
|
@ -198,7 +198,7 @@ thing plus a little extra, for efficiency's sake.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Str::len</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Str::len</span></span>:<br/><a href="4-sm.html#SP3">§3</a>, <a href="4-sm.html#SP7">§7</a>, <a href="4-sm.html#SP10">§10</a>, <a href="4-sm.html#SP11">§11</a>, <a href="4-sm.html#SP12">§12</a>, <a href="4-sm.html#SP13">§13</a>, <a href="4-sm.html#SP14">§14</a>, <a href="4-sm.html#SP15">§15</a>, <a href="4-sm.html#SP17">§17</a>, <a href="4-sm.html#SP19">§19</a>, <a href="4-sm.html#SP20">§20</a>, <a href="4-sm.html#SP21">§21</a>, <a href="4-sm.html#SP22">§22</a>, <a href="4-sm.html#SP24">§24</a>, <a href="4-sm.html#SP25">§25</a>, <a href="4-sm.html#SP26">§26</a><br/>Debugging Log - <a href="2-dl.html#SP9">§9</a><br/>Command Line Arguments - <a href="3-cla.html#SP13">§13</a>, <a href="3-cla.html#SP14">§14</a>, <a href="3-cla.html#SP14_1">§14.1</a><br/>Pathnames - <a href="3-pth.html#SP4">§4</a>, <a href="3-pth.html#SP5">§5</a>, <a href="3-pth.html#SP7">§7</a>, <a href="3-pth.html#SP8">§8</a><br/>Filenames - <a href="3-fln.html#SP2">§2</a>, <a href="3-fln.html#SP3">§3</a>, <a href="3-fln.html#SP5">§5</a>, <a href="3-fln.html#SP8">§8</a>, <a href="3-fln.html#SP9">§9</a><br/>Preprocessor - <a href="4-prp.html#SP3_3">§3.3</a>, <a href="4-prp.html#SP4">§4</a>, <a href="4-prp.html#SP4_1_1">§4.1.1</a><br/>Tries and Avinues - <a href="4-taa.html#SP2_1">§2.1</a><br/>Pattern Matching - <a href="4-pm.html#SP3">§3</a>, <a href="4-pm.html#SP4">§4</a>, <a href="4-pm.html#SP10">§10</a>, <a href="4-pm.html#SP11_3">§11.3</a>, <a href="4-pm.html#SP14">§14</a><br/>HTML - <a href="5-htm.html#SP8">§8</a>, <a href="5-htm.html#SP17">§17</a><br/>Epub Ebooks - <a href="5-ee.html#SP7_1">§7.1</a>, <a href="5-ee.html#SP7_2_3">§7.2.3</a>, <a href="5-ee.html#SP7_2_4">§7.2.4</a><br/>Version Numbers - <a href="7-vn.html#SP7">§7</a>, <a href="7-vn.html#SP7_1">§7.1</a>, <a href="7-vn.html#SP10">§10</a><br/>Web Structure - <a href="8-ws.html#SP5_4">§5.4</a>, <a href="8-ws.html#SP5_4_1">§5.4.1</a>, <a href="8-ws.html#SP5_4_1_1">§5.4.1.1</a>, <a href="8-ws.html#SP5_4_1_2">§5.4.1.2</a>, <a href="8-ws.html#SP7_3">§7.3</a>, <a href="8-ws.html#SP7_3_3_1">§7.3.3.1</a>, <a href="8-ws.html#SP7_2_2_3_1">§7.2.2.3.1</a>, <a href="8-ws.html#SP7_2_2_4">§7.2.2.4</a><br/>Bibliographic Data for Webs - <a href="8-bdfw.html#SP5">§5</a>, <a href="8-bdfw.html#SP6">§6</a><br/>Build Files - <a href="8-bf.html#SP3">§3</a>, <a href="8-bf.html#SP4">§4</a>, <a href="8-bf.html#SP5">§5</a>, <a href="8-bf.html#SP6">§6</a>, <a href="8-bf.html#SP9">§9</a><br/>Simple Tangler - <a href="8-st.html#SP7">§7</a>, <a href="8-st.html#SP7_1">§7.1</a>, <a href="8-st.html#SP7_2_4">§7.2.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Str::len</span><button class="popup" onclick="togglePopup('usagePopup9')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup9">Usage of <span class="code-font"><span class="function-syntax">Str::len</span></span>:<br/><a href="4-sm.html#SP3">§3</a>, <a href="4-sm.html#SP7">§7</a>, <a href="4-sm.html#SP10">§10</a>, <a href="4-sm.html#SP11">§11</a>, <a href="4-sm.html#SP12">§12</a>, <a href="4-sm.html#SP13">§13</a>, <a href="4-sm.html#SP14">§14</a>, <a href="4-sm.html#SP15">§15</a>, <a href="4-sm.html#SP17">§17</a>, <a href="4-sm.html#SP19">§19</a>, <a href="4-sm.html#SP20">§20</a>, <a href="4-sm.html#SP21">§21</a>, <a href="4-sm.html#SP22">§22</a>, <a href="4-sm.html#SP24">§24</a>, <a href="4-sm.html#SP25">§25</a>, <a href="4-sm.html#SP26">§26</a><br/>Debugging Log - <a href="2-dl.html#SP9">§9</a><br/>Command Line Arguments - <a href="3-cla.html#SP13">§13</a>, <a href="3-cla.html#SP14">§14</a>, <a href="3-cla.html#SP14_1">§14.1</a><br/>Pathnames - <a href="3-pth.html#SP4">§4</a>, <a href="3-pth.html#SP5">§5</a>, <a href="3-pth.html#SP7">§7</a>, <a href="3-pth.html#SP8">§8</a><br/>Filenames - <a href="3-fln.html#SP2">§2</a>, <a href="3-fln.html#SP3">§3</a>, <a href="3-fln.html#SP5">§5</a>, <a href="3-fln.html#SP8">§8</a>, <a href="3-fln.html#SP9">§9</a><br/>Preprocessor - <a href="4-prp.html#SP3_3">§3.3</a>, <a href="4-prp.html#SP4">§4</a>, <a href="4-prp.html#SP4_1_1">§4.1.1</a><br/>Tries and Avinues - <a href="4-taa.html#SP2_1">§2.1</a><br/>Pattern Matching - <a href="4-pm.html#SP3">§3</a>, <a href="4-pm.html#SP4">§4</a>, <a href="4-pm.html#SP10">§10</a>, <a href="4-pm.html#SP11_3">§11.3</a>, <a href="4-pm.html#SP14">§14</a><br/>JSON - <a href="4-jsn.html#SP9">§9</a>, <a href="4-jsn.html#SP25">§25</a>, <a href="4-jsn.html#SP27">§27</a><br/>HTML - <a href="5-htm.html#SP8">§8</a>, <a href="5-htm.html#SP17">§17</a><br/>Epub Ebooks - <a href="5-ee.html#SP7_1">§7.1</a>, <a href="5-ee.html#SP7_2_3">§7.2.3</a>, <a href="5-ee.html#SP7_2_4">§7.2.4</a><br/>Version Numbers - <a href="7-vn.html#SP7">§7</a>, <a href="7-vn.html#SP7_1">§7.1</a>, <a href="7-vn.html#SP10">§10</a><br/>Web Structure - <a href="8-ws.html#SP5_4">§5.4</a>, <a href="8-ws.html#SP5_4_1">§5.4.1</a>, <a href="8-ws.html#SP5_4_1_1">§5.4.1.1</a>, <a href="8-ws.html#SP5_4_1_2">§5.4.1.2</a>, <a href="8-ws.html#SP7_3">§7.3</a>, <a href="8-ws.html#SP7_3_3_1">§7.3.3.1</a>, <a href="8-ws.html#SP7_2_2_3_1">§7.2.2.3.1</a>, <a href="8-ws.html#SP7_2_2_4">§7.2.2.4</a><br/>Bibliographic Data for Webs - <a href="8-bdfw.html#SP5">§5</a>, <a href="8-bdfw.html#SP6">§6</a><br/>Build Files - <a href="8-bf.html#SP3">§3</a>, <a href="8-bf.html#SP4">§4</a>, <a href="8-bf.html#SP5">§5</a>, <a href="8-bf.html#SP6">§6</a>, <a href="8-bf.html#SP9">§9</a><br/>Simple Tangler - <a href="8-st.html#SP7">§7</a>, <a href="8-st.html#SP7_1">§7.1</a>, <a href="8-st.html#SP7_2_4">§7.2.4</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-str.html#SP38" class="function-link"><span class="function-syntax">Streams::get_position</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-str.html#SP38" class="function-link"><span class="function-syntax">Streams::get_position</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
|
@ -277,12 +277,12 @@ at those positions may well not be, of course.)
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="function-syntax">Str::get</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Str::get</span></span>:<br/><a href="4-sm.html#SP7">§7</a>, <a href="4-sm.html#SP17">§17</a>, <a href="4-sm.html#SP20">§20</a>, <a href="4-sm.html#SP22">§22</a>, <a href="4-sm.html#SP23">§23</a>, <a href="4-sm.html#SP24">§24</a>, <a href="4-sm.html#SP25">§25</a>, <a href="4-sm.html#SP26">§26</a><br/>Dictionaries - <a href="2-dct.html#SP4">§4</a><br/>Pathnames - <a href="3-pth.html#SP4">§4</a>, <a href="3-pth.html#SP5">§5</a><br/>Filenames - <a href="3-fln.html#SP2">§2</a>, <a href="3-fln.html#SP3">§3</a>, <a href="3-fln.html#SP7">§7</a>, <a href="3-fln.html#SP8">§8</a>, <a href="3-fln.html#SP9">§9</a><br/>Shell - <a href="3-shl.html#SP1">§1</a><br/>Preprocessor - <a href="4-prp.html#SP3_1">§3.1</a>, <a href="4-prp.html#SP5">§5</a>, <a href="4-prp.html#SP18_1">§18.1</a><br/>Pattern Matching - <a href="4-pm.html#SP5">§5</a><br/>HTML - <a href="5-htm.html#SP26">§26</a><br/>Epub Ebooks - <a href="5-ee.html#SP5">§5</a><br/>Version Numbers - <a href="7-vn.html#SP7">§7</a>, <a href="7-vn.html#SP10">§10</a><br/>Bibliographic Data for Webs - <a href="8-bdfw.html#SP7_2">§7.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">string_position</span><span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="function-syntax">Str::get</span><button class="popup" onclick="togglePopup('usagePopup15')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup15">Usage of <span class="code-font"><span class="function-syntax">Str::get</span></span>:<br/><a href="4-sm.html#SP7">§7</a>, <a href="4-sm.html#SP17">§17</a>, <a href="4-sm.html#SP20">§20</a>, <a href="4-sm.html#SP22">§22</a>, <a href="4-sm.html#SP23">§23</a>, <a href="4-sm.html#SP24">§24</a>, <a href="4-sm.html#SP25">§25</a>, <a href="4-sm.html#SP26">§26</a><br/>Dictionaries - <a href="2-dct.html#SP4">§4</a><br/>Pathnames - <a href="3-pth.html#SP4">§4</a>, <a href="3-pth.html#SP5">§5</a><br/>Filenames - <a href="3-fln.html#SP2">§2</a>, <a href="3-fln.html#SP3">§3</a>, <a href="3-fln.html#SP7">§7</a>, <a href="3-fln.html#SP8">§8</a>, <a href="3-fln.html#SP9">§9</a><br/>Shell - <a href="3-shl.html#SP1">§1</a><br/>Preprocessor - <a href="4-prp.html#SP3_1">§3.1</a>, <a href="4-prp.html#SP5">§5</a>, <a href="4-prp.html#SP18_1">§18.1</a><br/>Pattern Matching - <a href="4-pm.html#SP5">§5</a><br/>JSON - <a href="4-jsn.html#SP17">§17</a><br/>HTML - <a href="5-htm.html#SP26">§26</a><br/>Epub Ebooks - <a href="5-ee.html#SP5">§5</a><br/>Version Numbers - <a href="7-vn.html#SP7">§7</a>, <a href="7-vn.html#SP10">§10</a><br/>Bibliographic Data for Webs - <a href="8-bdfw.html#SP7_2">§7.2</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">string_position</span><span class="plain-syntax"> </span><span class="identifier-syntax">P</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">P</span><span class="plain-syntax">.</span><span class="identifier-syntax">S</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">P</span><span class="plain-syntax">.</span><span class="element-syntax">index</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</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">P</span><span class="plain-syntax">.</span><span class="identifier-syntax">S</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">P</span><span class="plain-syntax">.</span><span class="element-syntax">index</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</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">return</span><span class="plain-syntax"> </span><a href="2-str.html#SP40" class="function-link"><span class="function-syntax">Streams::get_char_at_index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">.</span><span class="element-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">.</span><span class="element-syntax">index</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-str.html#SP40" class="function-link"><span class="function-syntax">Streams::get_char_at_index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">P</span><span class="plain-syntax">.</span><span class="element-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">P</span><span class="plain-syntax">.</span><span class="element-syntax">index</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="function-syntax">Str::get_at</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Str::get_at</span></span>:<br/><a href="4-sm.html#SP20">§20</a>, <a href="4-sm.html#SP21">§21</a>, <a href="4-sm.html#SP24">§24</a>, <a href="4-sm.html#SP26">§26</a><br/>Pathnames - <a href="3-pth.html#SP7">§7</a><br/>Filenames - <a href="3-fln.html#SP5">§5</a><br/>Preprocessor - <a href="4-prp.html#SP4">§4</a><br/>Tries and Avinues - <a href="4-taa.html#SP2">§2</a><br/>Pattern Matching - <a href="4-pm.html#SP3">§3</a>, <a href="4-pm.html#SP4">§4</a>, <a href="4-pm.html#SP11">§11</a>, <a href="4-pm.html#SP11_4">§11.4</a>, <a href="4-pm.html#SP11_6">§11.6</a>, <a href="4-pm.html#SP14">§14</a>, <a href="4-pm.html#SP14_1">§14.1</a><br/>Web Structure - <a href="8-ws.html#SP5_4_1_1">§5.4.1.1</a>, <a href="8-ws.html#SP7">§7</a><br/>Build Files - <a href="8-bf.html#SP9">§9</a><br/>Simple Tangler - <a href="8-st.html#SP7_2_1">§7.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">index</span><span class="plain-syntax">) {</span>
|
<span class="identifier-syntax">wchar_t</span><span class="plain-syntax"> </span><span class="function-syntax">Str::get_at</span><button class="popup" onclick="togglePopup('usagePopup16')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup16">Usage of <span class="code-font"><span class="function-syntax">Str::get_at</span></span>:<br/><a href="4-sm.html#SP20">§20</a>, <a href="4-sm.html#SP21">§21</a>, <a href="4-sm.html#SP24">§24</a>, <a href="4-sm.html#SP26">§26</a><br/>Pathnames - <a href="3-pth.html#SP7">§7</a><br/>Filenames - <a href="3-fln.html#SP5">§5</a><br/>Preprocessor - <a href="4-prp.html#SP4">§4</a><br/>Tries and Avinues - <a href="4-taa.html#SP2">§2</a><br/>Pattern Matching - <a href="4-pm.html#SP3">§3</a>, <a href="4-pm.html#SP4">§4</a>, <a href="4-pm.html#SP11">§11</a>, <a href="4-pm.html#SP11_4">§11.4</a>, <a href="4-pm.html#SP11_6">§11.6</a>, <a href="4-pm.html#SP14">§14</a>, <a href="4-pm.html#SP14_1">§14.1</a><br/>JSON - <a href="4-jsn.html#SP10_1">§10.1</a>, <a href="4-jsn.html#SP11">§11</a>, <a href="4-jsn.html#SP12">§12</a>, <a href="4-jsn.html#SP13">§13</a>, <a href="4-jsn.html#SP14">§14</a>, <a href="4-jsn.html#SP15">§15</a>, <a href="4-jsn.html#SP15_1">§15.1</a>, <a href="4-jsn.html#SP28">§28</a>, <a href="4-jsn.html#SP28_1">§28.1</a>, <a href="4-jsn.html#SP29">§29</a>, <a href="4-jsn.html#SP30">§30</a><br/>Web Structure - <a href="8-ws.html#SP5_4_1_1">§5.4.1.1</a>, <a href="8-ws.html#SP7">§7</a><br/>Build Files - <a href="8-bf.html#SP9">§9</a><br/>Simple Tangler - <a href="8-st.html#SP7_2_1">§7.2.1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">index</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">S</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">index</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</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">S</span><span class="plain-syntax"> == </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">) || (</span><span class="identifier-syntax">index</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</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">return</span><span class="plain-syntax"> </span><a href="2-str.html#SP40" class="function-link"><span class="function-syntax">Streams::get_char_at_index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">index</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><a href="2-str.html#SP40" class="function-link"><span class="function-syntax">Streams::get_char_at_index</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">S</span><span class="plain-syntax">, </span><span class="identifier-syntax">index</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
@ -694,7 +694,7 @@ for the staff of a publishing house.)
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Str::includes_at</span><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">line</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">Str::includes_at</span><button class="popup" onclick="togglePopup('usagePopup40')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup40">Usage of <span class="code-font"><span class="function-syntax">Str::includes_at</span></span>:<br/>JSON - <a href="4-jsn.html#SP10">§10</a>, <a href="4-jsn.html#SP28">§28</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">line</span><span class="plain-syntax">, </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">i</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">) {</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">) == </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-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">i</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-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">i</span><span class="plain-syntax"> < </span><span class="constant-syntax">0</span><span class="plain-syntax">) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-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">i</span><span class="plain-syntax"> + </span><a href="4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">) > </span><a href="4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">line</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-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">i</span><span class="plain-syntax"> + </span><a href="4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">pattern</span><span class="plain-syntax">) > </span><a href="4-sm.html#SP8" class="function-link"><span class="function-syntax">Str::len</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">line</span><span class="plain-syntax">)) </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">;</span>
|
||||||
|
@ -743,7 +743,7 @@ is run just once per I-literal in the source code, when the program starts up.
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="4-sm.html#SP27">§27</a>.</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="4-sm.html#SP27">§27</a>.</li></ul>
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="4-ws.html">❮</a></li><li class="progresschapter"><a href="P-abgtf.html">P</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-dl.html">2</a></li><li class="progresschapter"><a href="3-em.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-chr.html">chr</a></li><li class="progresssection"><a href="4-cst.html">cst</a></li><li class="progresssection"><a href="4-ws.html">ws</a></li><li class="progresscurrent">sm</li><li class="progresssection"><a href="4-tf.html">tf</a></li><li class="progresssection"><a href="4-prp.html">prp</a></li><li class="progresssection"><a href="4-taa.html">taa</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresschapter"><a href="5-htm.html">5</a></li><li class="progresschapter"><a href="6-bf.html">6</a></li><li class="progresschapter"><a href="7-vn.html">7</a></li><li class="progresschapter"><a href="8-ws.html">8</a></li><li class="progressnext"><a href="4-tf.html">❯</a></li></ul></div>
|
<ul class="progressbar"><li class="progressprev"><a href="4-ws.html">❮</a></li><li class="progresschapter"><a href="P-abgtf.html">P</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-dl.html">2</a></li><li class="progresschapter"><a href="3-em.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-chr.html">chr</a></li><li class="progresssection"><a href="4-cst.html">cst</a></li><li class="progresssection"><a href="4-ws.html">ws</a></li><li class="progresscurrent">sm</li><li class="progresssection"><a href="4-tf.html">tf</a></li><li class="progresssection"><a href="4-prp.html">prp</a></li><li class="progresssection"><a href="4-taa.html">taa</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresssection"><a href="4-jsn.html">jsn</a></li><li class="progresschapter"><a href="5-htm.html">5</a></li><li class="progresschapter"><a href="6-bf.html">6</a></li><li class="progresschapter"><a href="7-vn.html">7</a></li><li class="progresschapter"><a href="8-ws.html">8</a></li><li class="progressnext"><a href="4-tf.html">❯</a></li></ul></div>
|
||||||
</nav><!--End of weave-->
|
</nav><!--End of weave-->
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
|
@ -457,7 +457,7 @@ trie in turn until one matches (if it does).
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="4-prp.html">❮</a></li><li class="progresschapter"><a href="P-abgtf.html">P</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-dl.html">2</a></li><li class="progresschapter"><a href="3-em.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-chr.html">chr</a></li><li class="progresssection"><a href="4-cst.html">cst</a></li><li class="progresssection"><a href="4-ws.html">ws</a></li><li class="progresssection"><a href="4-sm.html">sm</a></li><li class="progresssection"><a href="4-tf.html">tf</a></li><li class="progresssection"><a href="4-prp.html">prp</a></li><li class="progresscurrent">taa</li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresschapter"><a href="5-htm.html">5</a></li><li class="progresschapter"><a href="6-bf.html">6</a></li><li class="progresschapter"><a href="7-vn.html">7</a></li><li class="progresschapter"><a href="8-ws.html">8</a></li><li class="progressnext"><a href="4-pm.html">❯</a></li></ul></div>
|
<ul class="progressbar"><li class="progressprev"><a href="4-prp.html">❮</a></li><li class="progresschapter"><a href="P-abgtf.html">P</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-dl.html">2</a></li><li class="progresschapter"><a href="3-em.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-chr.html">chr</a></li><li class="progresssection"><a href="4-cst.html">cst</a></li><li class="progresssection"><a href="4-ws.html">ws</a></li><li class="progresssection"><a href="4-sm.html">sm</a></li><li class="progresssection"><a href="4-tf.html">tf</a></li><li class="progresssection"><a href="4-prp.html">prp</a></li><li class="progresscurrent">taa</li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresssection"><a href="4-jsn.html">jsn</a></li><li class="progresschapter"><a href="5-htm.html">5</a></li><li class="progresschapter"><a href="6-bf.html">6</a></li><li class="progresschapter"><a href="7-vn.html">7</a></li><li class="progresschapter"><a href="8-ws.html">8</a></li><li class="progressnext"><a href="4-pm.html">❯</a></li></ul></div>
|
||||||
</nav><!--End of weave-->
|
</nav><!--End of weave-->
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
|
@ -423,7 +423,7 @@ hyphens into em-rules when they are flanked by spaces, and so on.
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="4-tf.html#SP8">§8</a>.</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="4-tf.html#SP8">§8</a>.</li></ul>
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="4-sm.html">❮</a></li><li class="progresschapter"><a href="P-abgtf.html">P</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-dl.html">2</a></li><li class="progresschapter"><a href="3-em.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-chr.html">chr</a></li><li class="progresssection"><a href="4-cst.html">cst</a></li><li class="progresssection"><a href="4-ws.html">ws</a></li><li class="progresssection"><a href="4-sm.html">sm</a></li><li class="progresscurrent">tf</li><li class="progresssection"><a href="4-prp.html">prp</a></li><li class="progresssection"><a href="4-taa.html">taa</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresschapter"><a href="5-htm.html">5</a></li><li class="progresschapter"><a href="6-bf.html">6</a></li><li class="progresschapter"><a href="7-vn.html">7</a></li><li class="progresschapter"><a href="8-ws.html">8</a></li><li class="progressnext"><a href="4-prp.html">❯</a></li></ul></div>
|
<ul class="progressbar"><li class="progressprev"><a href="4-sm.html">❮</a></li><li class="progresschapter"><a href="P-abgtf.html">P</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-dl.html">2</a></li><li class="progresschapter"><a href="3-em.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-chr.html">chr</a></li><li class="progresssection"><a href="4-cst.html">cst</a></li><li class="progresssection"><a href="4-ws.html">ws</a></li><li class="progresssection"><a href="4-sm.html">sm</a></li><li class="progresscurrent">tf</li><li class="progresssection"><a href="4-prp.html">prp</a></li><li class="progresssection"><a href="4-taa.html">taa</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresssection"><a href="4-jsn.html">jsn</a></li><li class="progresschapter"><a href="5-htm.html">5</a></li><li class="progresschapter"><a href="6-bf.html">6</a></li><li class="progresschapter"><a href="7-vn.html">7</a></li><li class="progresschapter"><a href="8-ws.html">8</a></li><li class="progressnext"><a href="4-prp.html">❯</a></li></ul></div>
|
||||||
</nav><!--End of weave-->
|
</nav><!--End of weave-->
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
|
@ -81,7 +81,7 @@ wrappers simply abstract the standard C library's handling.
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="4-cst.html">❮</a></li><li class="progresschapter"><a href="P-abgtf.html">P</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-dl.html">2</a></li><li class="progresschapter"><a href="3-em.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-chr.html">chr</a></li><li class="progresssection"><a href="4-cst.html">cst</a></li><li class="progresscurrent">ws</li><li class="progresssection"><a href="4-sm.html">sm</a></li><li class="progresssection"><a href="4-tf.html">tf</a></li><li class="progresssection"><a href="4-prp.html">prp</a></li><li class="progresssection"><a href="4-taa.html">taa</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresschapter"><a href="5-htm.html">5</a></li><li class="progresschapter"><a href="6-bf.html">6</a></li><li class="progresschapter"><a href="7-vn.html">7</a></li><li class="progresschapter"><a href="8-ws.html">8</a></li><li class="progressnext"><a href="4-sm.html">❯</a></li></ul></div>
|
<ul class="progressbar"><li class="progressprev"><a href="4-cst.html">❮</a></li><li class="progresschapter"><a href="P-abgtf.html">P</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-dl.html">2</a></li><li class="progresschapter"><a href="3-em.html">3</a></li><li class="progresscurrentchapter">4</li><li class="progresssection"><a href="4-chr.html">chr</a></li><li class="progresssection"><a href="4-cst.html">cst</a></li><li class="progresscurrent">ws</li><li class="progresssection"><a href="4-sm.html">sm</a></li><li class="progresssection"><a href="4-tf.html">tf</a></li><li class="progresssection"><a href="4-prp.html">prp</a></li><li class="progresssection"><a href="4-taa.html">taa</a></li><li class="progresssection"><a href="4-pm.html">pm</a></li><li class="progresssection"><a href="4-jsn.html">jsn</a></li><li class="progresschapter"><a href="5-htm.html">5</a></li><li class="progresschapter"><a href="6-bf.html">6</a></li><li class="progresschapter"><a href="7-vn.html">7</a></li><li class="progresschapter"><a href="8-ws.html">8</a></li><li class="progressnext"><a href="4-sm.html">❯</a></li></ul></div>
|
||||||
</nav><!--End of weave-->
|
</nav><!--End of weave-->
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
|
@ -105,7 +105,7 @@ list is entirely sufficient.
|
||||||
<span class="plain-syntax"> </span><span class="constant-syntax">CLASS_DEFINITION</span>
|
<span class="plain-syntax"> </span><span class="constant-syntax">CLASS_DEFINITION</span>
|
||||||
<span class="plain-syntax">} </span><span class="reserved-syntax">ebook_datum</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">} </span><span class="reserved-syntax">ebook_datum</span><span class="plain-syntax">;</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>The structure ebook_datum is accessed in 2/dct, 4/prp, 8/bdfw and here.</li></ul>
|
<ul class="endnotetexts"><li>The structure ebook_datum is accessed in 2/dct, 4/prp, 4/jsn, 8/bdfw and here.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>As noted above, we use the following to stratify the book:
|
<p class="commentary firstcommentary"><a id="SP3" class="paragraph-anchor"></a><b>§3. </b>As noted above, we use the following to stratify the book:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
|
@ -1048,7 +1048,7 @@ respectively. These do not occur in Inform source text.
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>This code is used in <a href="5-htm.html#SP27">§27</a>.</li></ul>
|
<ul class="endnotetexts"><li>This code is used in <a href="5-htm.html#SP27">§27</a>.</li></ul>
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="4-pm.html">❮</a></li><li class="progresschapter"><a href="P-abgtf.html">P</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-dl.html">2</a></li><li class="progresschapter"><a href="3-em.html">3</a></li><li class="progresschapter"><a href="4-chr.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresscurrent">htm</li><li class="progresssection"><a href="5-ee.html">ee</a></li><li class="progresschapter"><a href="6-bf.html">6</a></li><li class="progresschapter"><a href="7-vn.html">7</a></li><li class="progresschapter"><a href="8-ws.html">8</a></li><li class="progressnext"><a href="5-ee.html">❯</a></li></ul></div>
|
<ul class="progressbar"><li class="progressprev"><a href="4-jsn.html">❮</a></li><li class="progresschapter"><a href="P-abgtf.html">P</a></li><li class="progresschapter"><a href="1-fm.html">1</a></li><li class="progresschapter"><a href="2-dl.html">2</a></li><li class="progresschapter"><a href="3-em.html">3</a></li><li class="progresschapter"><a href="4-chr.html">4</a></li><li class="progresscurrentchapter">5</li><li class="progresscurrent">htm</li><li class="progresssection"><a href="5-ee.html">ee</a></li><li class="progresschapter"><a href="6-bf.html">6</a></li><li class="progresschapter"><a href="7-vn.html">7</a></li><li class="progresschapter"><a href="8-ws.html">8</a></li><li class="progressnext"><a href="5-ee.html">❯</a></li></ul></div>
|
||||||
</nav><!--End of weave-->
|
</nav><!--End of weave-->
|
||||||
|
|
||||||
</main>
|
</main>
|
||||||
|
|
|
@ -67,7 +67,7 @@ convenient to store them directly here than to use a dictionary.
|
||||||
<span class="plain-syntax"> </span><span class="constant-syntax">CLASS_DEFINITION</span>
|
<span class="plain-syntax"> </span><span class="constant-syntax">CLASS_DEFINITION</span>
|
||||||
<span class="plain-syntax">} </span><span class="reserved-syntax">web_bibliographic_datum</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax">} </span><span class="reserved-syntax">web_bibliographic_datum</span><span class="plain-syntax">;</span>
|
||||||
</pre>
|
</pre>
|
||||||
<ul class="endnotetexts"><li>The structure web_bibliographic_datum is accessed in 2/dl, 2/dct, 4/prp, 5/ee and here.</li></ul>
|
<ul class="endnotetexts"><li>The structure web_bibliographic_datum is accessed in 2/dl, 2/dct, 4/prp, 4/jsn, 5/ee and here.</li></ul>
|
||||||
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>We keep these in linked lists, and here's a convenient way to scan them:
|
<p class="commentary firstcommentary"><a id="SP2" class="paragraph-anchor"></a><b>§2. </b>We keep these in linked lists, and here's a convenient way to scan them:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
|
|
|
@ -56,7 +56,7 @@ MathJax = {
|
||||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="index.html">foundation</a></li><li><a href="index.html#P">Preliminaries</a></li><li><b>A Brief Guide to Foundation</b></li></ul></div>
|
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="index.html">foundation</a></li><li><a href="index.html#P">Preliminaries</a></li><li><b>A Brief Guide to Foundation</b></li></ul></div>
|
||||||
<p class="purpose">Notes on getting started with the Foundation library.</p>
|
<p class="purpose">Notes on getting started with the Foundation library.</p>
|
||||||
|
|
||||||
<ul class="toc"><li><a href="P-abgtf.html#SP1">§1. Introduction</a></li><li><a href="P-abgtf.html#SP3">§3. Truth</a></li><li><a href="P-abgtf.html#SP4">§4. Text streams and formatted output</a></li><li><a href="P-abgtf.html#SP10">§10. Objects</a></li><li><a href="P-abgtf.html#SP11">§11. Methods</a></li><li><a href="P-abgtf.html#SP13">§13. Collections</a></li><li><a href="P-abgtf.html#SP15">§15. Files and paths</a></li><li><a href="P-abgtf.html#SP20">§20. Handling webs</a></li><li><a href="P-abgtf.html#SP21">§21. Miscellaneous other features</a></li></ul><hr class="tocbar">
|
<ul class="toc"><li><a href="P-abgtf.html#SP1">§1. Introduction</a></li><li><a href="P-abgtf.html#SP3">§3. Truth</a></li><li><a href="P-abgtf.html#SP4">§4. Text streams and formatted output</a></li><li><a href="P-abgtf.html#SP10">§10. Objects</a></li><li><a href="P-abgtf.html#SP11">§11. Methods</a></li><li><a href="P-abgtf.html#SP13">§13. Collections</a></li><li><a href="P-abgtf.html#SP15">§15. Files and paths</a></li><li><a href="P-abgtf.html#SP21">§21. Handling webs</a></li><li><a href="P-abgtf.html#SP22">§22. Miscellaneous other features</a></li></ul><hr class="tocbar">
|
||||||
|
|
||||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Introduction. </b>The Foundation module supplies some of the conveniences of more modern
|
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Introduction. </b>The Foundation module supplies some of the conveniences of more modern
|
||||||
programming languages to ANSI C. It offers the usual stuff of standard
|
programming languages to ANSI C. It offers the usual stuff of standard
|
||||||
|
@ -516,7 +516,11 @@ functions from <a href="3-em.html" class="internal">Error Messages</a> can then
|
||||||
to turn a marked-up script into a plain text file.
|
to turn a marked-up script into a plain text file.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. Handling webs. </b>Foundation provides routines which can read the metadata of a web, i.e., a
|
<p class="commentary firstcommentary"><a id="SP20" class="paragraph-anchor"></a><b>§20. </b>See <a href="4-jsn.html" class="internal">JSON</a> for convenient ways to encode and decode data to the JSON
|
||||||
|
interchange format.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§21. Handling webs. </b>Foundation provides routines which can read the metadata of a web, i.e., a
|
||||||
literate program in the <a href="../inweb/index.html" class="internal">inweb</a> format, from a copy in the file system.
|
literate program in the <a href="../inweb/index.html" class="internal">inweb</a> format, from a copy in the file system.
|
||||||
The main function here is <a href="8-ws.html#SP5" class="internal">WebMetadata::get</a>, which returns a <a href="8-ws.html#SP2" class="internal">web_md</a>
|
The main function here is <a href="8-ws.html#SP5" class="internal">WebMetadata::get</a>, which returns a <a href="8-ws.html#SP2" class="internal">web_md</a>
|
||||||
object. You can then access its bibliographic data using
|
object. You can then access its bibliographic data using
|
||||||
|
@ -525,7 +529,7 @@ its modules (instances of <a href="8-wm.html#SP1" class="internal">module</a>),
|
||||||
sections (of <a href="8-ws.html#SP4" class="internal">section_md</a>).
|
sections (of <a href="8-ws.html#SP4" class="internal">section_md</a>).
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<p class="commentary firstcommentary"><a id="SP21" class="paragraph-anchor"></a><b>§21. Miscellaneous other features. </b>What else? Well:
|
<p class="commentary firstcommentary"><a id="SP22" class="paragraph-anchor"></a><b>§22. Miscellaneous other features. </b>What else? Well:
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<ul class="items"><li>(a) <a href="3-tm.html" class="internal">Time</a> for the time of day and the date of Easter (no, really), and
|
<ul class="items"><li>(a) <a href="3-tm.html" class="internal">Time</a> for the time of day and the date of Easter (no, really), and
|
||||||
|
|
|
@ -222,6 +222,11 @@
|
||||||
<spon class="sectiontitle">Pattern Matching</span></a> -
|
<spon class="sectiontitle">Pattern Matching</span></a> -
|
||||||
<span class="sectionpurpose">To provide a limited regular-expression parser.</span></p>
|
<span class="sectionpurpose">To provide a limited regular-expression parser.</span></p>
|
||||||
</li>
|
</li>
|
||||||
|
<li>
|
||||||
|
<p class="sectionentry"><a href="4-jsn.html">
|
||||||
|
<spon class="sectiontitle">JSON</span></a> -
|
||||||
|
<span class="sectionpurpose">To read and write JSON data interchange material.</span></p>
|
||||||
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
|
|
|
@ -56,6 +56,7 @@
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">TEST_STACKS_CLSW</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">TEST_STACKS_CLSW</span>
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">TEST_SEMVER_CLSW</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">TEST_SEMVER_CLSW</span>
|
||||||
<span class="definition-keyword">enum</span> <span class="constant-syntax">TEST_TREES_CLSW</span>
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">TEST_TREES_CLSW</span>
|
||||||
|
<span class="definition-keyword">enum</span> <span class="constant-syntax">TEST_JSON_CLSW</span>
|
||||||
</pre>
|
</pre>
|
||||||
<pre class="displayed-code all-displayed-code code-font">
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">main</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">argc</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> **</span><span class="identifier-syntax">argv</span><span class="plain-syntax">) {</span>
|
<span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="function-syntax">main</span><span class="plain-syntax">(</span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">argc</span><span class="plain-syntax">, </span><span class="reserved-syntax">char</span><span class="plain-syntax"> **</span><span class="identifier-syntax">argv</span><span class="plain-syntax">) {</span>
|
||||||
|
@ -80,6 +81,8 @@
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"test semantic version numbers (X is ignored)"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"test semantic version numbers (X is ignored)"</span><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="../foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TEST_TREES_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"test-trees"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
|
<span class="plain-syntax"> </span><a href="../foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TEST_TREES_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"test-trees"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
|
||||||
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"test heterogeneous trees (X is ignored)"</span><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"test heterogeneous trees (X is ignored)"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="../foundation-module/3-cla.html#SP5" class="function-link"><span class="function-syntax">CommandLine::declare_switch</span></a><span class="plain-syntax">(</span><span class="constant-syntax">TEST_JSON_CLSW</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">"test-json"</span><span class="plain-syntax">, </span><span class="constant-syntax">2</span><span class="plain-syntax">,</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">L</span><span class="string-syntax">"test decoding and encoding of JSON file X"</span><span class="plain-syntax">);</span>
|
||||||
|
|
||||||
<span class="plain-syntax"> </span><a href="../foundation-module/3-cla.html#SP8" class="function-link"><span class="function-syntax">CommandLine::read</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">argc</span><span class="plain-syntax">, </span><span class="identifier-syntax">argv</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, &</span><a href="S-pc.html#SP1" class="function-link"><span class="function-syntax">Main::respond</span></a><span class="plain-syntax">, &</span><a href="S-pc.html#SP1" class="function-link"><span class="function-syntax">Main::ignore</span></a><span class="plain-syntax">);</span>
|
<span class="plain-syntax"> </span><a href="../foundation-module/3-cla.html#SP8" class="function-link"><span class="function-syntax">CommandLine::read</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">argc</span><span class="plain-syntax">, </span><span class="identifier-syntax">argv</span><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, &</span><a href="S-pc.html#SP1" class="function-link"><span class="function-syntax">Main::respond</span></a><span class="plain-syntax">, &</span><a href="S-pc.html#SP1" class="function-link"><span class="function-syntax">Main::ignore</span></a><span class="plain-syntax">);</span>
|
||||||
<span class="plain-syntax"> </span><a href="../foundation-module/1-fm.html#SP9" class="function-link"><span class="function-syntax">Foundation::end</span></a><span class="plain-syntax">();</span>
|
<span class="plain-syntax"> </span><a href="../foundation-module/1-fm.html#SP9" class="function-link"><span class="function-syntax">Foundation::end</span></a><span class="plain-syntax">();</span>
|
||||||
|
@ -97,6 +100,7 @@
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TEST_STACKS_CLSW:</span><span class="plain-syntax"> </span><a href="S-ut.html#SP7" class="function-link"><span class="function-syntax">Unit::test_stacks</span></a><span class="plain-syntax">(); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TEST_STACKS_CLSW:</span><span class="plain-syntax"> </span><a href="S-ut.html#SP7" class="function-link"><span class="function-syntax">Unit::test_stacks</span></a><span class="plain-syntax">(); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TEST_SEMVER_CLSW:</span><span class="plain-syntax"> </span><a href="S-ut.html#SP8" class="function-link"><span class="function-syntax">Unit::test_semver</span></a><span class="plain-syntax">(); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TEST_SEMVER_CLSW:</span><span class="plain-syntax"> </span><a href="S-ut.html#SP8" class="function-link"><span class="function-syntax">Unit::test_semver</span></a><span class="plain-syntax">(); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TEST_TREES_CLSW:</span><span class="plain-syntax"> </span><a href="S-ut.html#SP11" class="function-link"><span class="function-syntax">Unit::test_trees</span></a><span class="plain-syntax">(); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TEST_TREES_CLSW:</span><span class="plain-syntax"> </span><a href="S-ut.html#SP11" class="function-link"><span class="function-syntax">Unit::test_trees</span></a><span class="plain-syntax">(); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">case</span><span class="plain-syntax"> </span><span class="identifier-syntax">TEST_JSON_CLSW:</span><span class="plain-syntax"> </span><a href="S-ut.html#SP13" class="function-link"><span class="function-syntax">Unit::test_JSON</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">); </span><span class="reserved-syntax">break</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax"> }</span>
|
<span class="plain-syntax"> }</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
|
|
||||||
|
|
|
@ -50,7 +50,7 @@ function togglePopup(material_id) {
|
||||||
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="index.html">foundation-test</a></li><li><b>Unit Tests</b></li></ul></div>
|
<ul class="crumbs"><li><a href="../index.html">Home</a></li><li><a href="index.html">foundation-test</a></li><li><b>Unit Tests</b></li></ul></div>
|
||||||
<p class="purpose">A selection of tests for, or demonstrations of, foundation features.</p>
|
<p class="purpose">A selection of tests for, or demonstrations of, foundation features.</p>
|
||||||
|
|
||||||
<ul class="toc"><li><a href="S-ut.html#SP1">§1. Strings</a></li><li><a href="S-ut.html#SP2">§2. Literals</a></li><li><a href="S-ut.html#SP3">§3. Dictionaries</a></li><li><a href="S-ut.html#SP4">§4. Regexp</a></li><li><a href="S-ut.html#SP5">§5. Replacements</a></li><li><a href="S-ut.html#SP6">§6. Linked lists</a></li><li><a href="S-ut.html#SP7">§7. Stacks</a></li><li><a href="S-ut.html#SP8">§8. Semantic versions</a></li><li><a href="S-ut.html#SP9">§9. Trees</a></li></ul><hr class="tocbar">
|
<ul class="toc"><li><a href="S-ut.html#SP1">§1. Strings</a></li><li><a href="S-ut.html#SP2">§2. Literals</a></li><li><a href="S-ut.html#SP3">§3. Dictionaries</a></li><li><a href="S-ut.html#SP4">§4. Regexp</a></li><li><a href="S-ut.html#SP5">§5. Replacements</a></li><li><a href="S-ut.html#SP6">§6. Linked lists</a></li><li><a href="S-ut.html#SP7">§7. Stacks</a></li><li><a href="S-ut.html#SP8">§8. Semantic versions</a></li><li><a href="S-ut.html#SP9">§9. Trees</a></li><li><a href="S-ut.html#SP13">§13. JSON</a></li></ul><hr class="tocbar">
|
||||||
|
|
||||||
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Strings. </b></p>
|
<p class="commentary firstcommentary"><a id="SP1" class="paragraph-anchor"></a><b>§1. Strings. </b></p>
|
||||||
|
|
||||||
|
@ -472,6 +472,79 @@ function togglePopup(material_id) {
|
||||||
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
|
<span class="plain-syntax"> </span><span class="reserved-syntax">return</span><span class="plain-syntax"> </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">;</span>
|
||||||
<span class="plain-syntax">}</span>
|
<span class="plain-syntax">}</span>
|
||||||
</pre>
|
</pre>
|
||||||
|
<p class="commentary firstcommentary"><a id="SP13" class="paragraph-anchor"></a><b>§13. JSON. </b></p>
|
||||||
|
|
||||||
|
<pre class="displayed-code all-displayed-code code-font">
|
||||||
|
<span class="reserved-syntax">dictionary</span><span class="plain-syntax"> *</span><span class="identifier-syntax">known_JSON_reqs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">;</span>
|
||||||
|
|
||||||
|
<span class="reserved-syntax">void</span><span class="plain-syntax"> </span><span class="function-syntax">Unit::test_JSON</span><button class="popup" onclick="togglePopup('usagePopup11')"><span class="comment-syntax">?</span><span class="popuptext" id="usagePopup11">Usage of <span class="code-font"><span class="function-syntax">Unit::test_JSON</span></span>:<br/>Program Control - <a href="S-pc.html#SP1">§1</a></span></button><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">arg</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">known_JSON_reqs</span><span class="plain-syntax"> = </span><a href="../foundation-module/2-dct.html#SP2" class="function-link"><span class="function-syntax">Dictionaries::new</span></a><span class="plain-syntax">(32, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">filename</span><span class="plain-syntax"> *</span><span class="identifier-syntax">F</span><span class="plain-syntax"> = </span><a href="../foundation-module/3-fln.html#SP3" class="function-link"><span class="function-syntax">Filenames::from_text</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">arg</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">TEMPORARY_TEXT</span><span class="plain-syntax">(</span><span class="identifier-syntax">JSON</span><span class="plain-syntax">)</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="../foundation-module/4-tf.html#SP5" class="function-link"><span class="function-syntax">TextFiles::read</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">F</span><span class="plain-syntax">, </span><span class="constant-syntax">FALSE</span><span class="plain-syntax">, </span><span class="string-syntax">"unable to read file of JSON"</span><span class="plain-syntax">, </span><span class="constant-syntax">TRUE</span><span class="plain-syntax">,</span>
|
||||||
|
<span class="plain-syntax"> &</span><a href="S-ut.html#SP13" class="function-link"><span class="function-syntax">Unit::test_JSON_helper</span></a><span class="plain-syntax">, </span><span class="identifier-syntax">NULL</span><span class="plain-syntax">, </span><span class="identifier-syntax">JSON</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">JSON</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">Unit::test_JSON_helper</span><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_file_position</span><span class="plain-syntax"> *</span><span class="identifier-syntax">tfp</span><span class="plain-syntax">, </span><span class="reserved-syntax">void</span><span class="plain-syntax"> *</span><span class="identifier-syntax">state</span><span class="plain-syntax">) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">JSON</span><span class="plain-syntax"> = (</span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *) </span><span class="identifier-syntax">state</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-sm.html#SP19" class="function-link"><span class="function-syntax">Str::eq</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">text</span><span class="plain-syntax">, </span><span class="identifier-syntax">I</span><span class="string-syntax">"----"</span><span class="plain-syntax">)) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">match_results</span><span class="plain-syntax"> </span><span class="identifier-syntax">mr</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::create_mr</span></a><span class="plain-syntax">();</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> (</span><a href="../foundation-module/4-pm.html#SP10" class="function-link"><span class="function-syntax">Regexp::match</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">JSON</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">" *<(%C+)> *= *(%c+)"</span><span class="plain-syntax">)) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rname</span><span class="plain-syntax"> = </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0];</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rtext</span><span class="plain-syntax"> = </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[1];</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="constant-syntax">STDOUT</span><span class="plain-syntax">, </span><span class="string-syntax">"JSON requirement <%S> set to:\n%S----\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">rname</span><span class="plain-syntax">, </span><span class="identifier-syntax">rtext</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">JSON_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-jsn.html#SP27" class="function-link"><span class="function-syntax">JSON::decode_req</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rtext</span><span class="plain-syntax">, </span><span class="identifier-syntax">known_JSON_reqs</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">req</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">req</span><span class="plain-syntax">-></span><span class="element-syntax">JSON_type</span><span class="plain-syntax"> == </span><span class="constant-syntax">ERROR_JSONTYPE</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="constant-syntax">STDOUT</span><span class="plain-syntax">, </span><span class="string-syntax">"JSON requirement error: %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">-></span><span class="element-syntax">if_error</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">dict_entry</span><span class="plain-syntax"> *</span><span class="identifier-syntax">de</span><span class="plain-syntax"> = </span><a href="../foundation-module/2-dct.html#SP5" class="function-link"><span class="function-syntax">Dictionaries::create</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">known_JSON_reqs</span><span class="plain-syntax">, </span><span class="identifier-syntax">rname</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">de</span><span class="plain-syntax">) </span><span class="identifier-syntax">de</span><span class="plain-syntax">-></span><span class="element-syntax">value</span><span class="plain-syntax"> = </span><span class="identifier-syntax">req</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="../foundation-module/4-jsn.html#SP31" class="function-link"><span class="function-syntax">JSON::encode_req</span></a><span class="plain-syntax">(</span><span class="constant-syntax">STDOUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">);</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><a href="../foundation-module/4-pm.html#SP10" class="function-link"><span class="function-syntax">Regexp::match</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</span><span class="plain-syntax">, </span><span class="identifier-syntax">JSON</span><span class="plain-syntax">, </span><span class="identifier-syntax">L</span><span class="string-syntax">" *(%c+?) against *(%c+)"</span><span class="plain-syntax">)) {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">rtext</span><span class="plain-syntax"> = </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[0];</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">material</span><span class="plain-syntax"> = </span><span class="identifier-syntax">mr</span><span class="plain-syntax">.</span><span class="element-syntax">exp</span><span class="plain-syntax">[1];</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="constant-syntax">STDOUT</span><span class="plain-syntax">, </span><span class="string-syntax">"JSON verification test on:\n%S-- to match --\n%S\n----\n"</span><span class="plain-syntax">,</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">material</span><span class="plain-syntax">, </span><span class="identifier-syntax">rtext</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">JSON_requirement</span><span class="plain-syntax"> *</span><span class="identifier-syntax">req</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-jsn.html#SP27" class="function-link"><span class="function-syntax">JSON::decode_req</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">rtext</span><span class="plain-syntax">, </span><span class="identifier-syntax">known_JSON_reqs</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">req</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">req</span><span class="plain-syntax">-></span><span class="element-syntax">JSON_type</span><span class="plain-syntax"> == </span><span class="constant-syntax">ERROR_JSONTYPE</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="constant-syntax">STDOUT</span><span class="plain-syntax">, </span><span class="string-syntax">"JSON requirement error: %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">-></span><span class="element-syntax">if_error</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">JSON_value</span><span class="plain-syntax"> *</span><span class="identifier-syntax">value</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-jsn.html#SP9" class="function-link"><span class="function-syntax">JSON::decode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">material</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">value</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">value</span><span class="plain-syntax">-></span><span class="element-syntax">JSON_type</span><span class="plain-syntax"> == </span><span class="constant-syntax">ERROR_JSONTYPE</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="constant-syntax">STDOUT</span><span class="plain-syntax">, </span><span class="string-syntax">"JSON error: %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">value</span><span class="plain-syntax">-></span><span class="element-syntax">if_error</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">linked_list</span><span class="plain-syntax"> *</span><span class="identifier-syntax">errs</span><span class="plain-syntax"> = </span><span class="identifier-syntax">NEW_LINKED_LIST</span><span class="plain-syntax">(</span><span class="reserved-syntax">text_stream</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">v</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-jsn.html#SP25" class="function-link"><span class="function-syntax">JSON::verify</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">value</span><span class="plain-syntax">, </span><span class="identifier-syntax">req</span><span class="plain-syntax">, </span><span class="identifier-syntax">errs</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">v</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="constant-syntax">STDOUT</span><span class="plain-syntax">, </span><span class="string-syntax">"Verifies"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">int</span><span class="plain-syntax"> </span><span class="identifier-syntax">c</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">text_stream</span><span class="plain-syntax"> *</span><span class="identifier-syntax">err</span><span class="plain-syntax">;</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">LOOP_OVER_LINKED_LIST</span><span class="plain-syntax">(</span><span class="identifier-syntax">err</span><span class="plain-syntax">, </span><span class="reserved-syntax">text_stream</span><span class="plain-syntax">, </span><span class="identifier-syntax">errs</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="constant-syntax">0</span><span class="plain-syntax">) </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="constant-syntax">STDOUT</span><span class="plain-syntax">, </span><span class="string-syntax">"\n"</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="constant-syntax">STDOUT</span><span class="plain-syntax">, </span><span class="string-syntax">"%S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">err</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> }</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">else</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="constant-syntax">STDOUT</span><span class="plain-syntax">, </span><span class="string-syntax">"JSON test on:\n%S----\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">JSON</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">JSON_value</span><span class="plain-syntax"> *</span><span class="identifier-syntax">value</span><span class="plain-syntax"> = </span><a href="../foundation-module/4-jsn.html#SP9" class="function-link"><span class="function-syntax">JSON::decode</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">JSON</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">if</span><span class="plain-syntax"> ((</span><span class="identifier-syntax">value</span><span class="plain-syntax">) && (</span><span class="identifier-syntax">value</span><span class="plain-syntax">-></span><span class="element-syntax">JSON_type</span><span class="plain-syntax"> == </span><span class="constant-syntax">ERROR_JSONTYPE</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="constant-syntax">STDOUT</span><span class="plain-syntax">, </span><span class="string-syntax">"JSON error: %S"</span><span class="plain-syntax">, </span><span class="identifier-syntax">value</span><span class="plain-syntax">-></span><span class="element-syntax">if_error</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="reserved-syntax">else</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="../foundation-module/4-jsn.html#SP16" class="function-link"><span class="function-syntax">JSON::encode</span></a><span class="plain-syntax">(</span><span class="constant-syntax">STDOUT</span><span class="plain-syntax">, </span><span class="identifier-syntax">value</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="../foundation-module/4-pm.html#SP9" class="function-link"><span class="function-syntax">Regexp::dispose_of</span></a><span class="plain-syntax">(&</span><span class="identifier-syntax">mr</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="constant-syntax">STDOUT</span><span class="plain-syntax">, </span><span class="string-syntax">"\n--------\n"</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> </span><a href="../foundation-module/4-sm.html#SP15" class="function-link"><span class="function-syntax">Str::clear</span></a><span class="plain-syntax">(</span><span class="identifier-syntax">JSON</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> } </span><span class="reserved-syntax">else</span><span class="plain-syntax"> {</span>
|
||||||
|
<span class="plain-syntax"> </span><span class="identifier-syntax">WRITE_TO</span><span class="plain-syntax">(</span><span class="identifier-syntax">JSON</span><span class="plain-syntax">, </span><span class="string-syntax">"%S\n"</span><span class="plain-syntax">, </span><span class="identifier-syntax">text</span><span class="plain-syntax">);</span>
|
||||||
|
<span class="plain-syntax"> }</span>
|
||||||
|
<span class="plain-syntax">}</span>
|
||||||
|
</pre>
|
||||||
<nav role="progress"><div class="progresscontainer">
|
<nav role="progress"><div class="progresscontainer">
|
||||||
<ul class="progressbar"><li class="progressprev"><a href="S-pc.html">❮</a></li><li class="progresssection"><a href="S-pc.html">pc</a></li><li class="progresscurrent">ut</li><li class="progressnextoff">❯</li></ul></div>
|
<ul class="progressbar"><li class="progressprev"><a href="S-pc.html">❮</a></li><li class="progresssection"><a href="S-pc.html">pc</a></li><li class="progresscurrent">ut</li><li class="progressnextoff">❯</li></ul></div>
|
||||||
</nav><!--End of weave-->
|
</nav><!--End of weave-->
|
||||||
|
|
Binary file not shown.
|
@ -24,6 +24,9 @@ here we are.
|
||||||
@e heterogeneous_tree_CLASS
|
@e heterogeneous_tree_CLASS
|
||||||
@e HTML_file_state_CLASS
|
@e HTML_file_state_CLASS
|
||||||
@e HTML_tag_CLASS
|
@e HTML_tag_CLASS
|
||||||
|
@e JSON_pair_requirement_CLASS
|
||||||
|
@e JSON_requirement_CLASS
|
||||||
|
@e JSON_value_CLASS
|
||||||
@e linked_list_CLASS
|
@e linked_list_CLASS
|
||||||
@e linked_list_item_CLASS
|
@e linked_list_item_CLASS
|
||||||
@e match_avinue_CLASS
|
@e match_avinue_CLASS
|
||||||
|
@ -65,6 +68,9 @@ DECLARE_CLASS(ebook)
|
||||||
DECLARE_CLASS(filename)
|
DECLARE_CLASS(filename)
|
||||||
DECLARE_CLASS(heterogeneous_tree)
|
DECLARE_CLASS(heterogeneous_tree)
|
||||||
DECLARE_CLASS(HTML_file_state)
|
DECLARE_CLASS(HTML_file_state)
|
||||||
|
DECLARE_CLASS(JSON_pair_requirement)
|
||||||
|
DECLARE_CLASS(JSON_requirement)
|
||||||
|
DECLARE_CLASS(JSON_value)
|
||||||
DECLARE_CLASS(linked_list)
|
DECLARE_CLASS(linked_list)
|
||||||
DECLARE_CLASS(method_set)
|
DECLARE_CLASS(method_set)
|
||||||
DECLARE_CLASS(method)
|
DECLARE_CLASS(method)
|
||||||
|
|
|
@ -223,7 +223,7 @@ points to |P|. This allows us to iterate despite the comments above.
|
||||||
The above gives us an almost free implementation of LIFO, last-in-first-out,
|
The above gives us an almost free implementation of LIFO, last-in-first-out,
|
||||||
stacks, where we represent a stack as a linked list whose first entry is at
|
stacks, where we represent a stack as a linked list whose first entry is at
|
||||||
the front. To push an item, we add it at the front; to pull, we remove the
|
the front. To push an item, we add it at the front; to pull, we remove the
|
||||||
front iten.
|
front item.
|
||||||
|
|
||||||
We provide an abstract type name for these stacks, even though they're the
|
We provide an abstract type name for these stacks, even though they're the
|
||||||
exact same structure. For reasons to do with the way |typedef| works in C,
|
exact same structure. For reasons to do with the way |typedef| works in C,
|
||||||
|
|
1047
foundation-module/Chapter 4/JSON.w
Executable file
1047
foundation-module/Chapter 4/JSON.w
Executable file
File diff suppressed because it is too large
Load diff
|
@ -47,6 +47,7 @@ Chapter 4: Text Handling
|
||||||
Preprocessor
|
Preprocessor
|
||||||
Tries and Avinues
|
Tries and Avinues
|
||||||
Pattern Matching
|
Pattern Matching
|
||||||
|
JSON
|
||||||
|
|
||||||
Chapter 5: Generating Websites
|
Chapter 5: Generating Websites
|
||||||
"For making individual web pages, or gathering them into mini-sites or ebooks."
|
"For making individual web pages, or gathering them into mini-sites or ebooks."
|
||||||
|
|
|
@ -380,6 +380,9 @@ functions from //Error Messages// can then report errors where they occur:
|
||||||
@ The //Preprocessor// provides simple iteration and macro expansion in order
|
@ The //Preprocessor// provides simple iteration and macro expansion in order
|
||||||
to turn a marked-up script into a plain text file.
|
to turn a marked-up script into a plain text file.
|
||||||
|
|
||||||
|
@ See //JSON// for convenient ways to encode and decode data to the JSON
|
||||||
|
interchange format.
|
||||||
|
|
||||||
@h Handling webs.
|
@h Handling webs.
|
||||||
Foundation provides routines which can read the metadata of a web, i.e., a
|
Foundation provides routines which can read the metadata of a web, i.e., a
|
||||||
literate program in the //inweb// format, from a copy in the file system.
|
literate program in the //inweb// format, from a copy in the file system.
|
||||||
|
|
|
@ -15,6 +15,7 @@ Choosing which unit test to run on the basis of the command-line arguments.
|
||||||
@e TEST_STACKS_CLSW
|
@e TEST_STACKS_CLSW
|
||||||
@e TEST_SEMVER_CLSW
|
@e TEST_SEMVER_CLSW
|
||||||
@e TEST_TREES_CLSW
|
@e TEST_TREES_CLSW
|
||||||
|
@e TEST_JSON_CLSW
|
||||||
|
|
||||||
=
|
=
|
||||||
int main(int argc, char **argv) {
|
int main(int argc, char **argv) {
|
||||||
|
@ -39,6 +40,8 @@ int main(int argc, char **argv) {
|
||||||
L"test semantic version numbers (X is ignored)");
|
L"test semantic version numbers (X is ignored)");
|
||||||
CommandLine::declare_switch(TEST_TREES_CLSW, L"test-trees", 2,
|
CommandLine::declare_switch(TEST_TREES_CLSW, L"test-trees", 2,
|
||||||
L"test heterogeneous trees (X is ignored)");
|
L"test heterogeneous trees (X is ignored)");
|
||||||
|
CommandLine::declare_switch(TEST_JSON_CLSW, L"test-json", 2,
|
||||||
|
L"test decoding and encoding of JSON file X");
|
||||||
|
|
||||||
CommandLine::read(argc, argv, NULL, &Main::respond, &Main::ignore);
|
CommandLine::read(argc, argv, NULL, &Main::respond, &Main::ignore);
|
||||||
Foundation::end();
|
Foundation::end();
|
||||||
|
@ -56,6 +59,7 @@ void Main::respond(int id, int val, text_stream *arg, void *state) {
|
||||||
case TEST_STACKS_CLSW: Unit::test_stacks(); break;
|
case TEST_STACKS_CLSW: Unit::test_stacks(); break;
|
||||||
case TEST_SEMVER_CLSW: Unit::test_semver(); break;
|
case TEST_SEMVER_CLSW: Unit::test_semver(); break;
|
||||||
case TEST_TREES_CLSW: Unit::test_trees(); break;
|
case TEST_TREES_CLSW: Unit::test_trees(); break;
|
||||||
|
case TEST_JSON_CLSW: Unit::test_JSON(arg); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -414,3 +414,76 @@ int Unit::visit(tree_node *N, void *state, int L) {
|
||||||
} else WRITE("Unknown node\n");
|
} else WRITE("Unknown node\n");
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@h JSON.
|
||||||
|
|
||||||
|
=
|
||||||
|
dictionary *known_JSON_reqs = NULL;
|
||||||
|
|
||||||
|
void Unit::test_JSON(text_stream *arg) {
|
||||||
|
known_JSON_reqs = Dictionaries::new(32, FALSE);
|
||||||
|
filename *F = Filenames::from_text(arg);
|
||||||
|
TEMPORARY_TEXT(JSON)
|
||||||
|
TextFiles::read(F, FALSE, "unable to read file of JSON", TRUE,
|
||||||
|
&Unit::test_JSON_helper, NULL, JSON);
|
||||||
|
DISCARD_TEXT(JSON)
|
||||||
|
}
|
||||||
|
|
||||||
|
void Unit::test_JSON_helper(text_stream *text, text_file_position *tfp, void *state) {
|
||||||
|
text_stream *JSON = (text_stream *) state;
|
||||||
|
if (Str::eq(text, I"----")) {
|
||||||
|
match_results mr = Regexp::create_mr();
|
||||||
|
if (Regexp::match(&mr, JSON, L" *<(%C+)> *= *(%c+)")) {
|
||||||
|
text_stream *rname = mr.exp[0];
|
||||||
|
text_stream *rtext = mr.exp[1];
|
||||||
|
WRITE_TO(STDOUT, "JSON requirement <%S> set to:\n%S----\n", rname, rtext);
|
||||||
|
JSON_requirement *req = JSON::decode_req(rtext, known_JSON_reqs);
|
||||||
|
if ((req) && (req->JSON_type == ERROR_JSONTYPE))
|
||||||
|
WRITE_TO(STDOUT, "JSON requirement error: %S", req->if_error);
|
||||||
|
else {
|
||||||
|
dict_entry *de = Dictionaries::create(known_JSON_reqs, rname);
|
||||||
|
if (de) de->value = req;
|
||||||
|
JSON::encode_req(STDOUT, req);
|
||||||
|
}
|
||||||
|
} else if (Regexp::match(&mr, JSON, L" *(%c+?) against *(%c+)")) {
|
||||||
|
text_stream *rtext = mr.exp[0];
|
||||||
|
text_stream *material = mr.exp[1];
|
||||||
|
WRITE_TO(STDOUT, "JSON verification test on:\n%S-- to match --\n%S\n----\n",
|
||||||
|
material, rtext);
|
||||||
|
JSON_requirement *req = JSON::decode_req(rtext, known_JSON_reqs);
|
||||||
|
if ((req) && (req->JSON_type == ERROR_JSONTYPE))
|
||||||
|
WRITE_TO(STDOUT, "JSON requirement error: %S", req->if_error);
|
||||||
|
else {
|
||||||
|
JSON_value *value = JSON::decode(material);
|
||||||
|
if ((value) && (value->JSON_type == ERROR_JSONTYPE))
|
||||||
|
WRITE_TO(STDOUT, "JSON error: %S", value->if_error);
|
||||||
|
else {
|
||||||
|
linked_list *errs = NEW_LINKED_LIST(text_stream);
|
||||||
|
int v = JSON::verify(value, req, errs);
|
||||||
|
if (v) {
|
||||||
|
WRITE_TO(STDOUT, "Verifies");
|
||||||
|
} else {
|
||||||
|
int c = 0;
|
||||||
|
text_stream *err;
|
||||||
|
LOOP_OVER_LINKED_LIST(err, text_stream, errs) {
|
||||||
|
if (c++ > 0) WRITE_TO(STDOUT, "\n");
|
||||||
|
WRITE_TO(STDOUT, "%S", err);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
WRITE_TO(STDOUT, "JSON test on:\n%S----\n", JSON);
|
||||||
|
JSON_value *value = JSON::decode(JSON);
|
||||||
|
if ((value) && (value->JSON_type == ERROR_JSONTYPE))
|
||||||
|
WRITE_TO(STDOUT, "JSON error: %S", value->if_error);
|
||||||
|
else
|
||||||
|
JSON::encode(STDOUT, value);
|
||||||
|
}
|
||||||
|
Regexp::dispose_of(&mr);
|
||||||
|
WRITE_TO(STDOUT, "\n--------\n");
|
||||||
|
Str::clear(JSON);
|
||||||
|
} else {
|
||||||
|
WRITE_TO(JSON, "%S\n", text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
211
foundation-test/Tests/Test Cases/_Results_Ideal/json.txt
Normal file
211
foundation-test/Tests/Test Cases/_Results_Ideal/json.txt
Normal file
|
@ -0,0 +1,211 @@
|
||||||
|
JSON test on:
|
||||||
|
234
|
||||||
|
----
|
||||||
|
234
|
||||||
|
--------
|
||||||
|
JSON test on:
|
||||||
|
-45
|
||||||
|
----
|
||||||
|
-45
|
||||||
|
--------
|
||||||
|
JSON test on:
|
||||||
|
true
|
||||||
|
----
|
||||||
|
true
|
||||||
|
--------
|
||||||
|
JSON test on:
|
||||||
|
false
|
||||||
|
----
|
||||||
|
false
|
||||||
|
--------
|
||||||
|
JSON test on:
|
||||||
|
null
|
||||||
|
----
|
||||||
|
null
|
||||||
|
--------
|
||||||
|
JSON test on:
|
||||||
|
"Plain text."
|
||||||
|
----
|
||||||
|
"Plain text."
|
||||||
|
--------
|
||||||
|
JSON test on:
|
||||||
|
"Encoded text,\nwith\ttabs and all, including \u0040\u004A\u004b."
|
||||||
|
----
|
||||||
|
"Encoded text,\nwith\ttabs and all, including @JK."
|
||||||
|
--------
|
||||||
|
JSON test on:
|
||||||
|
"Text with
|
||||||
|
carriage return and tabs in it."
|
||||||
|
----
|
||||||
|
"Text with\n\t\tcarriage return and tabs in it."
|
||||||
|
--------
|
||||||
|
JSON test on:
|
||||||
|
[]
|
||||||
|
----
|
||||||
|
[]
|
||||||
|
--------
|
||||||
|
JSON test on:
|
||||||
|
[ ]
|
||||||
|
----
|
||||||
|
[]
|
||||||
|
--------
|
||||||
|
JSON test on:
|
||||||
|
[ 23, 1, 456 ]
|
||||||
|
----
|
||||||
|
[ 23, 1, 456 ]
|
||||||
|
--------
|
||||||
|
JSON test on:
|
||||||
|
[ "fish", 22, true, [ 3, 6, 9 ], null ]
|
||||||
|
----
|
||||||
|
[ "fish", 22, true, [ 3, 6, 9 ], null ]
|
||||||
|
--------
|
||||||
|
JSON test on:
|
||||||
|
{
|
||||||
|
}
|
||||||
|
----
|
||||||
|
{
|
||||||
|
}
|
||||||
|
--------
|
||||||
|
JSON test on:
|
||||||
|
{ "name": "Jemima", "lives": 9 }
|
||||||
|
----
|
||||||
|
{
|
||||||
|
"name": "Jemima",
|
||||||
|
"lives": 9
|
||||||
|
}
|
||||||
|
--------
|
||||||
|
JSON test on:
|
||||||
|
{
|
||||||
|
"firstName": "John",
|
||||||
|
"lastName": "Smith",
|
||||||
|
"isAlive": true,
|
||||||
|
"age": 27,
|
||||||
|
"address": {
|
||||||
|
"streetAddress": "21 2nd Street",
|
||||||
|
"city": "New York",
|
||||||
|
"state": "NY",
|
||||||
|
"postalCode": "10021-3100"
|
||||||
|
},
|
||||||
|
"phoneNumbers": [
|
||||||
|
{
|
||||||
|
"type": "home",
|
||||||
|
"number": "212 555-1234"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "office",
|
||||||
|
"number": "646 555-4567"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"children": [],
|
||||||
|
"spouse": null
|
||||||
|
}
|
||||||
|
----
|
||||||
|
{
|
||||||
|
"firstName": "John",
|
||||||
|
"lastName": "Smith",
|
||||||
|
"isAlive": true,
|
||||||
|
"age": 27,
|
||||||
|
"address": {
|
||||||
|
"streetAddress": "21 2nd Street",
|
||||||
|
"city": "New York",
|
||||||
|
"state": "NY",
|
||||||
|
"postalCode": "10021-3100"
|
||||||
|
},
|
||||||
|
"phoneNumbers": [ {
|
||||||
|
"type": "home",
|
||||||
|
"number": "212 555-1234"
|
||||||
|
}, {
|
||||||
|
"type": "office",
|
||||||
|
"number": "646 555-4567"
|
||||||
|
} ],
|
||||||
|
"children": [],
|
||||||
|
"spouse": null
|
||||||
|
}
|
||||||
|
--------
|
||||||
|
JSON test on:
|
||||||
|
3.141592653
|
||||||
|
----
|
||||||
|
3.14159
|
||||||
|
--------
|
||||||
|
JSON test on:
|
||||||
|
-45.2E+34
|
||||||
|
----
|
||||||
|
-4.52e+35
|
||||||
|
--------
|
||||||
|
JSON requirement <int> set to:
|
||||||
|
number
|
||||||
|
----
|
||||||
|
number
|
||||||
|
--------
|
||||||
|
JSON requirement <record> set to:
|
||||||
|
{ "coordinates": [ double, double, string ], ?"jurisdiction": string, "journal": [ { "date": number, "entry": string }* ] }
|
||||||
|
----
|
||||||
|
{
|
||||||
|
"coordinates": [ double, double, string ],
|
||||||
|
?"jurisdiction": string,
|
||||||
|
"journal": [ {
|
||||||
|
"date": number,
|
||||||
|
"entry": string
|
||||||
|
}* ]
|
||||||
|
}
|
||||||
|
--------
|
||||||
|
JSON verification test on:
|
||||||
|
217
|
||||||
|
-- to match --
|
||||||
|
<int>
|
||||||
|
----
|
||||||
|
Verifies
|
||||||
|
--------
|
||||||
|
JSON verification test on:
|
||||||
|
"six"
|
||||||
|
-- to match --
|
||||||
|
<int>
|
||||||
|
----
|
||||||
|
expected number but found string
|
||||||
|
--------
|
||||||
|
JSON requirement <pair> set to:
|
||||||
|
[ double, string ]
|
||||||
|
----
|
||||||
|
[ double, string ]
|
||||||
|
--------
|
||||||
|
JSON verification test on:
|
||||||
|
[ 0.15, "sky" ]
|
||||||
|
-- to match --
|
||||||
|
<pair>
|
||||||
|
----
|
||||||
|
Verifies
|
||||||
|
--------
|
||||||
|
JSON verification test on:
|
||||||
|
[ "clouds", "sky" ]
|
||||||
|
-- to match --
|
||||||
|
<pair>
|
||||||
|
----
|
||||||
|
array[0]: expected double but found string
|
||||||
|
--------
|
||||||
|
JSON verification test on:
|
||||||
|
{ "coordinates": [ 3.14, 2.17, "gamma" ] }
|
||||||
|
-- to match --
|
||||||
|
<record>
|
||||||
|
----
|
||||||
|
object: member 'journal' missing
|
||||||
|
--------
|
||||||
|
JSON verification test on:
|
||||||
|
{
|
||||||
|
"coordinates": [ 3.14, 2.17, "gamma" ],
|
||||||
|
"journal": [ { "date": 1210, "entry": "Another cloudy day." } ]
|
||||||
|
}
|
||||||
|
-- to match --
|
||||||
|
<record>
|
||||||
|
----
|
||||||
|
Verifies
|
||||||
|
--------
|
||||||
|
JSON verification test on:
|
||||||
|
{
|
||||||
|
"coordinates": [ 3.14, 2.17, "gamma" ],
|
||||||
|
"journal": [ { "date": 1210 } ]
|
||||||
|
}
|
||||||
|
-- to match --
|
||||||
|
<record>
|
||||||
|
----
|
||||||
|
object.journal[0]: member 'entry' missing
|
||||||
|
--------
|
85
foundation-test/Tests/Test Cases/json.txt
Normal file
85
foundation-test/Tests/Test Cases/json.txt
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
234
|
||||||
|
----
|
||||||
|
-45
|
||||||
|
----
|
||||||
|
true
|
||||||
|
----
|
||||||
|
false
|
||||||
|
----
|
||||||
|
null
|
||||||
|
----
|
||||||
|
"Plain text."
|
||||||
|
----
|
||||||
|
"Encoded text,\nwith\ttabs and all, including \u0040\u004A\u004b."
|
||||||
|
----
|
||||||
|
"Text with
|
||||||
|
carriage return and tabs in it."
|
||||||
|
----
|
||||||
|
[]
|
||||||
|
----
|
||||||
|
[ ]
|
||||||
|
----
|
||||||
|
[ 23, 1, 456 ]
|
||||||
|
----
|
||||||
|
[ "fish", 22, true, [ 3, 6, 9 ], null ]
|
||||||
|
----
|
||||||
|
{
|
||||||
|
}
|
||||||
|
----
|
||||||
|
{ "name": "Jemima", "lives": 9 }
|
||||||
|
----
|
||||||
|
{
|
||||||
|
"firstName": "John",
|
||||||
|
"lastName": "Smith",
|
||||||
|
"isAlive": true,
|
||||||
|
"age": 27,
|
||||||
|
"address": {
|
||||||
|
"streetAddress": "21 2nd Street",
|
||||||
|
"city": "New York",
|
||||||
|
"state": "NY",
|
||||||
|
"postalCode": "10021-3100"
|
||||||
|
},
|
||||||
|
"phoneNumbers": [
|
||||||
|
{
|
||||||
|
"type": "home",
|
||||||
|
"number": "212 555-1234"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "office",
|
||||||
|
"number": "646 555-4567"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"children": [],
|
||||||
|
"spouse": null
|
||||||
|
}
|
||||||
|
----
|
||||||
|
3.141592653
|
||||||
|
----
|
||||||
|
-45.2E+34
|
||||||
|
----
|
||||||
|
<int> = number
|
||||||
|
----
|
||||||
|
<record> = { "coordinates": [ double, double, string ], ?"jurisdiction": string, "journal": [ { "date": number, "entry": string }* ] }
|
||||||
|
----
|
||||||
|
<int> against 217
|
||||||
|
----
|
||||||
|
<int> against "six"
|
||||||
|
----
|
||||||
|
<pair> = [ double, string ]
|
||||||
|
----
|
||||||
|
<pair> against [ 0.15, "sky" ]
|
||||||
|
----
|
||||||
|
<pair> against [ "clouds", "sky" ]
|
||||||
|
----
|
||||||
|
<record> against { "coordinates": [ 3.14, 2.17, "gamma" ] }
|
||||||
|
----
|
||||||
|
<record> against {
|
||||||
|
"coordinates": [ 3.14, 2.17, "gamma" ],
|
||||||
|
"journal": [ { "date": 1210, "entry": "Another cloudy day." } ]
|
||||||
|
}
|
||||||
|
----
|
||||||
|
<record> against {
|
||||||
|
"coordinates": [ 3.14, 2.17, "gamma" ],
|
||||||
|
"journal": [ { "date": 1210 } ]
|
||||||
|
}
|
||||||
|
----
|
Loading…
Reference in a new issue