Skip to content

Commit

Permalink
Rebuild manuals with latest updates
Browse files Browse the repository at this point in the history
  • Loading branch information
Blake-Madden committed Nov 18, 2023
1 parent 60aca58 commit d0d21cd
Show file tree
Hide file tree
Showing 9 changed files with 172 additions and 119 deletions.
Binary file modified docs/TinyExpr++ReferenceManual.pdf
Binary file not shown.
2 changes: 1 addition & 1 deletion docs/building.html
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,7 @@ <h1 class="title"><span class="chapter-number">6</span>&nbsp; <span class="chapt

</header>

<p><em>TinyExpr++</em> is self-contained in two files: <code>tinyexpr.cpp</code> and <code>tinyexpr.h</code>. To use <em>TinyExpr++</em>, add those files to your project.</p>
<p><em>TinyExpr++</em> is self-contained in two files: tinyexpr.cpp and tinyexpr.h. To use <em>TinyExpr++</em>, add those files to your project.</p>
<p>The API documentation can be built using the following:</p>
<pre><code>doxygen docs/Doxyfile</code></pre>
<section id="requirements" class="level2 unnumbered">
Expand Down
32 changes: 21 additions & 11 deletions docs/comments.html
Original file line number Diff line number Diff line change
Expand Up @@ -314,17 +314,27 @@ <h1 class="title"><span class="chapter-number">5</span>&nbsp; <span class="chapt
<li>single line comments (everything after a <code>//</code> until the end of the current line).</li>
</ul>
<p>For example, assuming that the variables <code>P_LEVEL</code> and <code>N_OBS</code> have been defined within the parser, an expression such as this could be used:</p>
<div class="sourceCode" id="cb1"><pre class="sourceCode cpp code-with-copy"><code class="sourceCode cpp"><span id="cb1-1"><a href="#cb1-1" aria-hidden="true" tabindex="-1"></a><span class="co">/* Returns the p-level of a study if:</span></span>
<span id="cb1-2"><a href="#cb1-2" aria-hidden="true" tabindex="-1"></a><span class="co"> p-level &lt; 5% AND</span></span>
<span id="cb1-3"><a href="#cb1-3" aria-hidden="true" tabindex="-1"></a><span class="co"> number of observations was at least 30.</span></span>
<span id="cb1-4"><a href="#cb1-4" aria-hidden="true" tabindex="-1"></a><span class="co"> Otherwise, NaN is returned. */</span></span>
<span id="cb1-5"><a href="#cb1-5" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-6"><a href="#cb1-6" aria-hidden="true" tabindex="-1"></a>IF<span class="op">(</span><span class="co">// Review the results from the analysis</span></span>
<span id="cb1-7"><a href="#cb1-7" aria-hidden="true" tabindex="-1"></a> AND<span class="op">(</span>P_LEVEL <span class="op">&lt;</span> <span class="fl">.05</span><span class="op">,</span> N_OBS <span class="op">&gt;=</span> <span class="dv">30</span><span class="op">),</span></span>
<span id="cb1-8"><a href="#cb1-8" aria-hidden="true" tabindex="-1"></a> <span class="co">// ...and return the p-level if acceptable</span></span>
<span id="cb1-9"><a href="#cb1-9" aria-hidden="true" tabindex="-1"></a> P_LEVEL<span class="op">,</span></span>
<span id="cb1-10"><a href="#cb1-10" aria-hidden="true" tabindex="-1"></a> <span class="co">// or NaN if not</span></span>
<span id="cb1-11"><a href="#cb1-11" aria-hidden="true" tabindex="-1"></a> NAN<span class="op">)</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<div class="sourceCode" id="annotated-cell-1"><pre class="sourceCode cpp code-annotation-code code-with-copy code-annotated"><code class="sourceCode cpp"><span id="annotated-cell-1-1"><a href="#annotated-cell-1-1" aria-hidden="true" tabindex="-1"></a><span class="co">/* Returns the p-level of a study if:</span></span>
<span id="annotated-cell-1-2"><a href="#annotated-cell-1-2" aria-hidden="true" tabindex="-1"></a><span class="co"> p-level &lt; 5% AND</span></span>
<span id="annotated-cell-1-3"><a href="#annotated-cell-1-3" aria-hidden="true" tabindex="-1"></a><span class="co"> number of observations was at least 30.</span></span>
<a class="code-annotation-anchor" data-target-cell="annotated-cell-1" data-target-annotation="1" onclick="event.preventDefault();">1</a><span id="annotated-cell-1-4" class="code-annotation-target"><a href="#annotated-cell-1-4" aria-hidden="true" tabindex="-1"></a><span class="co"> Otherwise, NaN is returned. */</span></span>
<span id="annotated-cell-1-5"><a href="#annotated-cell-1-5" aria-hidden="true" tabindex="-1"></a></span>
<span id="annotated-cell-1-6"><a href="#annotated-cell-1-6" aria-hidden="true" tabindex="-1"></a>IF<span class="op">(</span><span class="co">// Review the results from the analysis</span></span>
<span id="annotated-cell-1-7"><a href="#annotated-cell-1-7" aria-hidden="true" tabindex="-1"></a> AND<span class="op">(</span>P_LEVEL <span class="op">&lt;</span> <span class="fl">.05</span><span class="op">,</span> N_OBS <span class="op">&gt;=</span> <span class="dv">30</span><span class="op">),</span></span>
<span id="annotated-cell-1-8"><a href="#annotated-cell-1-8" aria-hidden="true" tabindex="-1"></a> <span class="co">// ...and return the p-level if acceptable</span></span>
<a class="code-annotation-anchor" data-target-cell="annotated-cell-1" data-target-annotation="2" onclick="event.preventDefault();">2</a><span id="annotated-cell-1-9" class="code-annotation-target"><a href="#annotated-cell-1-9" aria-hidden="true" tabindex="-1"></a> P_LEVEL<span class="op">,</span></span>
<span id="annotated-cell-1-10"><a href="#annotated-cell-1-10" aria-hidden="true" tabindex="-1"></a> <span class="co">// or NaN if not</span></span>
<span id="annotated-cell-1-11"><a href="#annotated-cell-1-11" aria-hidden="true" tabindex="-1"></a> NAN<span class="op">)</span></span><div class="code-annotation-gutter-bg"></div><div class="code-annotation-gutter"></div></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<dl class="code-annotation-container-grid">
<dt data-target-cell="annotated-cell-1" data-target-annotation="1">1</dt>
<dd>
<span data-code-cell="annotated-cell-1" data-code-lines="4" data-code-annotation="1">Comment that can span multiple lines.</span>
</dd>
<dt data-target-cell="annotated-cell-1" data-target-annotation="2">2</dt>
<dd>
<span data-code-cell="annotated-cell-1" data-code-lines="9" data-code-annotation="2">Single line comment.</span>
</dd>
</dl>


<div id="refs" class="references csl-bib-body hanging-indent" data-line-spacing="2" role="list" style="display: none">
Expand Down
16 changes: 8 additions & 8 deletions docs/custom-extensions.html
Original file line number Diff line number Diff line change
Expand Up @@ -333,7 +333,7 @@ <h2 class="unnumbered anchored" data-anchor-id="custom-variables">Binding to Cus
<span id="cb1-11"><a href="#cb1-11" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
<span id="cb1-12"><a href="#cb1-12" aria-hidden="true" tabindex="-1"></a> <span class="at">const</span> <span class="dt">char</span><span class="op">*</span> expression <span class="op">=</span> argv<span class="op">[</span><span class="dv">1</span><span class="op">];</span></span>
<span id="cb1-13"><a href="#cb1-13" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb1-14"><a href="#cb1-14" aria-hidden="true" tabindex="-1"></a> <span class="dt">double</span> x<span class="op">{</span> <span class="dv">0</span> <span class="op">},</span> y<span class="op">{</span> <span class="dv">0</span> <span class="op">};</span> <span class="co">// x and y are bound at eval-time.</span></span>
<span id="cb1-14"><a href="#cb1-14" aria-hidden="true" tabindex="-1"></a> <span class="dt">te_type</span> x<span class="op">{</span> <span class="dv">0</span> <span class="op">},</span> y<span class="op">{</span> <span class="dv">0</span> <span class="op">};</span> <span class="co">// x and y are bound at eval-time.</span></span>
<span id="cb1-15"><a href="#cb1-15" aria-hidden="true" tabindex="-1"></a> <span class="co">// Store variable names and pointers.</span></span>
<span id="cb1-16"><a href="#cb1-16" aria-hidden="true" tabindex="-1"></a> te_parser tep<span class="op">;</span></span>
<span id="cb1-17"><a href="#cb1-17" aria-hidden="true" tabindex="-1"></a> tep<span class="op">.</span>set_variables_and_functions<span class="op">({</span> <span class="op">{</span><span class="st">"x"</span><span class="op">,</span> <span class="op">&amp;</span>x<span class="op">},</span> <span class="op">{</span><span class="st">"y"</span><span class="op">,</span> <span class="op">&amp;</span>y<span class="op">}</span> <span class="op">});</span></span>
Expand All @@ -358,7 +358,7 @@ <h2 class="unnumbered anchored" data-anchor-id="custom-variables">Binding to Cus
<section id="binding-to-custom-functions" class="level2 unnumbered minipage">
<h2 class="unnumbered anchored" data-anchor-id="binding-to-custom-functions">Binding to Custom Functions</h2>
<p><em>TinyExpr++</em> can call custom functions also. Here is a short example:</p>
<div class="sourceCode" id="cb2"><pre class="sourceCode cpp code-with-copy"><code class="sourceCode cpp"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="dt">double</span> my_sum<span class="op">(</span><span class="dt">double</span> a<span class="op">,</span> <span class="dt">double</span> b<span class="op">)</span></span>
<div class="sourceCode" id="cb2"><pre class="sourceCode cpp code-with-copy"><code class="sourceCode cpp"><span id="cb2-1"><a href="#cb2-1" aria-hidden="true" tabindex="-1"></a><span class="dt">te_type</span> my_sum<span class="op">(</span><span class="dt">te_type</span> a<span class="op">,</span> <span class="dt">te_type</span> b<span class="op">)</span></span>
<span id="cb2-2"><a href="#cb2-2" aria-hidden="true" tabindex="-1"></a> <span class="op">{</span></span>
<span id="cb2-3"><a href="#cb2-3" aria-hidden="true" tabindex="-1"></a> <span class="co">/* Example function that adds two numbers together. */</span></span>
<span id="cb2-4"><a href="#cb2-4" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> a <span class="op">+</span> b<span class="op">;</span></span>
Expand All @@ -376,7 +376,7 @@ <h2 class="unnumbered anchored" data-anchor-id="binding-to-custom-functions">Bin
<div class="sourceCode" id="cb3"><pre class="sourceCode cpp code-with-copy"><code class="sourceCode cpp"><span id="cb3-1"><a href="#cb3-1" aria-hidden="true" tabindex="-1"></a>te_parser tep<span class="op">;</span></span>
<span id="cb3-2"><a href="#cb3-2" aria-hidden="true" tabindex="-1"></a>tep<span class="op">.</span>set_variables_and_functions<span class="op">({</span></span>
<span id="cb3-3"><a href="#cb3-3" aria-hidden="true" tabindex="-1"></a> <span class="op">{</span> <span class="st">"mysum"</span><span class="op">,</span></span>
<span id="cb3-4"><a href="#cb3-4" aria-hidden="true" tabindex="-1"></a> <span class="op">[](</span><span class="dt">double</span> a<span class="op">,</span> <span class="dt">double</span> b<span class="op">)</span> <span class="kw">noexcept</span></span>
<span id="cb3-4"><a href="#cb3-4" aria-hidden="true" tabindex="-1"></a> <span class="op">[](</span><span class="dt">te_type</span> a<span class="op">,</span> <span class="dt">te_type</span> b<span class="op">)</span> <span class="kw">noexcept</span></span>
<span id="cb3-5"><a href="#cb3-5" aria-hidden="true" tabindex="-1"></a> <span class="op">{</span> <span class="cf">return</span> a <span class="op">+</span> b<span class="op">;</span> <span class="op">}</span> <span class="op">}</span></span>
<span id="cb3-6"><a href="#cb3-6" aria-hidden="true" tabindex="-1"></a> <span class="op">});</span></span>
<span id="cb3-7"><a href="#cb3-7" aria-hidden="true" tabindex="-1"></a></span>
Expand All @@ -392,21 +392,21 @@ <h2 class="unnumbered anchored" data-anchor-id="custom-classes">Binding to Custo
<span id="cb4-3"><a href="#cb4-3" aria-hidden="true" tabindex="-1"></a><span class="kw">public</span><span class="op">:</span></span>
<span id="cb4-4"><a href="#cb4-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">explicit</span> te_expr_array<span class="op">(</span><span class="at">const</span> te_variable_flags type<span class="op">)</span> <span class="kw">noexcept</span> <span class="op">:</span></span>
<span id="cb4-5"><a href="#cb4-5" aria-hidden="true" tabindex="-1"></a> te_expr<span class="op">(</span>type<span class="op">)</span> <span class="op">{}</span></span>
<span id="cb4-6"><a href="#cb4-6" aria-hidden="true" tabindex="-1"></a> <span class="bu">std::</span>array<span class="op">&lt;</span><span class="dt">double</span><span class="op">,</span> <span class="dv">5</span><span class="op">&gt;</span> <span class="va">m_data</span> <span class="op">=</span> <span class="op">{</span> <span class="dv">5</span><span class="op">,</span> <span class="dv">6</span><span class="op">,</span> <span class="dv">7</span><span class="op">,</span> <span class="dv">8</span><span class="op">,</span> <span class="dv">9</span> <span class="op">};</span></span>
<span id="cb4-6"><a href="#cb4-6" aria-hidden="true" tabindex="-1"></a> <span class="bu">std::</span>array<span class="op">&lt;</span><span class="dt">te_type</span><span class="op">,</span> <span class="dv">5</span><span class="op">&gt;</span> <span class="va">m_data</span> <span class="op">=</span> <span class="op">{</span> <span class="dv">5</span><span class="op">,</span> <span class="dv">6</span><span class="op">,</span> <span class="dv">7</span><span class="op">,</span> <span class="dv">8</span><span class="op">,</span> <span class="dv">9</span> <span class="op">};</span></span>
<span id="cb4-7"><a href="#cb4-7" aria-hidden="true" tabindex="-1"></a> <span class="op">};</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<p>Next, create two functions that can accept this object and perform actions on it. (Note that proper error handling is not included for brevity.):</p>
<div class="sourceCode" id="cb5"><pre class="sourceCode cpp code-with-copy"><code class="sourceCode cpp"><span id="cb5-1"><a href="#cb5-1" aria-hidden="true" tabindex="-1"></a><span class="co">// Returns the value of a cell from the object's data.</span></span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a><span class="dt">double</span> cell<span class="op">(</span><span class="at">const</span> te_expr<span class="op">*</span> context<span class="op">,</span> <span class="dt">double</span> a<span class="op">)</span></span>
<span id="cb5-2"><a href="#cb5-2" aria-hidden="true" tabindex="-1"></a><span class="dt">te_type</span> cell<span class="op">(</span><span class="at">const</span> te_expr<span class="op">*</span> context<span class="op">,</span> <span class="dt">te_type</span> a<span class="op">)</span></span>
<span id="cb5-3"><a href="#cb5-3" aria-hidden="true" tabindex="-1"></a> <span class="op">{</span></span>
<span id="cb5-4"><a href="#cb5-4" aria-hidden="true" tabindex="-1"></a> <span class="kw">auto</span><span class="op">*</span> c <span class="op">=</span> <span class="kw">dynamic_cast</span><span class="op">&lt;</span><span class="at">const</span> te_expr_array<span class="op">*&gt;(</span>context<span class="op">);</span></span>
<span id="cb5-5"><a href="#cb5-5" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="kw">static_cast</span><span class="op">&lt;</span><span class="dt">double</span><span class="op">&gt;(</span>c<span class="op">-&gt;</span><span class="va">m_data</span><span class="op">[</span><span class="kw">static_cast</span><span class="op">&lt;</span><span class="dt">size_t</span><span class="op">&gt;(</span>a<span class="op">)]);</span></span>
<span id="cb5-5"><a href="#cb5-5" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="kw">static_cast</span><span class="op">&lt;</span><span class="dt">te_type</span><span class="op">&gt;(</span>c<span class="op">-&gt;</span><span class="va">m_data</span><span class="op">[</span><span class="kw">static_cast</span><span class="op">&lt;</span><span class="dt">size_t</span><span class="op">&gt;(</span>a<span class="op">)]);</span></span>
<span id="cb5-6"><a href="#cb5-6" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span>
<span id="cb5-7"><a href="#cb5-7" aria-hidden="true" tabindex="-1"></a></span>
<span id="cb5-8"><a href="#cb5-8" aria-hidden="true" tabindex="-1"></a><span class="co">// Returns the max value of the object's data.</span></span>
<span id="cb5-9"><a href="#cb5-9" aria-hidden="true" tabindex="-1"></a><span class="dt">double</span> cell_max<span class="op">(</span><span class="at">const</span> te_expr<span class="op">*</span> context<span class="op">)</span></span>
<span id="cb5-9"><a href="#cb5-9" aria-hidden="true" tabindex="-1"></a><span class="dt">te_type</span> cell_max<span class="op">(</span><span class="at">const</span> te_expr<span class="op">*</span> context<span class="op">)</span></span>
<span id="cb5-10"><a href="#cb5-10" aria-hidden="true" tabindex="-1"></a> <span class="op">{</span></span>
<span id="cb5-11"><a href="#cb5-11" aria-hidden="true" tabindex="-1"></a> <span class="kw">auto</span><span class="op">*</span> c <span class="op">=</span> <span class="kw">dynamic_cast</span><span class="op">&lt;</span><span class="at">const</span> te_expr_array<span class="op">*&gt;(</span>context<span class="op">);</span></span>
<span id="cb5-12"><a href="#cb5-12" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="kw">static_cast</span><span class="op">&lt;</span><span class="dt">double</span><span class="op">&gt;(</span></span>
<span id="cb5-12"><a href="#cb5-12" aria-hidden="true" tabindex="-1"></a> <span class="cf">return</span> <span class="kw">static_cast</span><span class="op">&lt;</span><span class="dt">te_type</span><span class="op">&gt;(</span></span>
<span id="cb5-13"><a href="#cb5-13" aria-hidden="true" tabindex="-1"></a> <span class="op">*</span><span class="bu">std::</span>max_element<span class="op">(</span>c<span class="op">-&gt;</span><span class="va">m_data</span><span class="op">.</span>cbegin<span class="op">(),</span> c<span class="op">-&gt;</span><span class="va">m_data</span><span class="op">.</span>cend<span class="op">()));</span></span>
<span id="cb5-14"><a href="#cb5-14" aria-hidden="true" tabindex="-1"></a> <span class="op">}</span></span></code><button title="Copy to Clipboard" class="code-copy-button"><i class="bi"></i></button></pre></div>
<p>Finally, create an instance of the class and connect the custom functions to it, while also adding them to the parser:</p>
Expand Down
Loading

0 comments on commit d0d21cd

Please sign in to comment.