Skip to content

Commit

Permalink
deploy: 0f26458
Browse files Browse the repository at this point in the history
  • Loading branch information
abxh committed Oct 9, 2024
1 parent f07323c commit eccc220
Show file tree
Hide file tree
Showing 4 changed files with 386 additions and 285 deletions.
4 changes: 2 additions & 2 deletions arena_8h.html
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,7 @@ <h2 class="memtitle"><span class="permalink"><a href="#a0b3456d662ef3f1b979c250e
<dl class="section return"><dt>Returns</dt><dd>A pointer to reallocated the memory chunk. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">NULL</td><td>If arena doesn't have enough memory for the reallocation. </td></tr>
<tr><td class="paramname">NULL</td><td>If arena doesn't have enough memory for the reallocation or invalid parameters are given. </td></tr>
</table>
</dd>
</dl>
Expand Down Expand Up @@ -428,7 +428,7 @@ <h2 class="memtitle"><span class="permalink"><a href="#a4205d66b5a5640a3d23ef545
<dl class="section return"><dt>Returns</dt><dd>A pointer to reallocated the memory chunk. </dd></dl>
<dl class="retval"><dt>Return values</dt><dd>
<table class="retval">
<tr><td class="paramname">NULL</td><td>If arena doesn't have enough memory for the reallocation. </td></tr>
<tr><td class="paramname">NULL</td><td>If arena doesn't have enough memory for the reallocation or invalid parameters are given. </td></tr>
</table>
</dd>
</dl>
Expand Down
101 changes: 100 additions & 1 deletion examples_2fstack_2valid_parentheses_8c-example.html
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,106 @@
</div><!--header-->
<div class="contents">
<p>Examples of how <code><a class="el" href="fstack_8h.html" title="Fixed-size array-based stack.">fstack.h</a></code> header file is used in practice.</p>
<div class="fragment"></div><!-- fragment --> </div><!-- contents -->
<div class="fragment"><div class="line"><span class="preprocessor">#include &lt;stdint.h&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;stdio.h&gt;</span></div>
<div class="line"><span class="preprocessor">#include &lt;string.h&gt;</span></div>
<div class="line"> </div>
<div class="line"><span class="preprocessor">#define NAME paren_stk</span></div>
<div class="line"><span class="preprocessor">#define VALUE_TYPE char</span></div>
<div class="line"><span class="preprocessor">#include &quot;<a class="code" href="fstack_8h.html">fstack.h</a>&quot;</span></div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">void</span> print_paren_stk(<span class="keyword">struct</span> paren_stk *stk)</div>
<div class="line">{</div>
<div class="line"> <span class="keywordflow">if</span> (stk-&gt;count &gt; 0) {</div>
<div class="line"> printf(<span class="stringliteral">&quot;%c&quot;</span>, paren_stk_at(stk, 0));</div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">else</span> {</div>
<div class="line"> printf(<span class="stringliteral">&quot;(empty)&quot;</span>);</div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 1; i &lt; stk-&gt;count; i++) {</div>
<div class="line"> printf(<span class="stringliteral">&quot; &lt;- %c&quot;</span>, paren_stk_at(stk, (uint32_t)i));</div>
<div class="line"> }</div>
<div class="line"> printf(<span class="stringliteral">&quot;\n&quot;</span>);</div>
<div class="line">}</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">char</span> matching_paren(<span class="keywordtype">char</span> c)</div>
<div class="line">{</div>
<div class="line"> <span class="keywordflow">switch</span> (c) {</div>
<div class="line"> <span class="keywordflow">case</span> <span class="charliteral">&#39;(&#39;</span>:</div>
<div class="line"> <span class="keywordflow">return</span> <span class="charliteral">&#39;)&#39;</span>;</div>
<div class="line"> <span class="keywordflow">case</span> <span class="charliteral">&#39;{&#39;</span>:</div>
<div class="line"> <span class="keywordflow">return</span> <span class="charliteral">&#39;}&#39;</span>;</div>
<div class="line"> <span class="keywordflow">case</span> <span class="charliteral">&#39;[&#39;</span>:</div>
<div class="line"> <span class="keywordflow">return</span> <span class="charliteral">&#39;]&#39;</span>;</div>
<div class="line"> <span class="keywordflow">case</span> <span class="charliteral">&#39;)&#39;</span>:</div>
<div class="line"> <span class="keywordflow">return</span> <span class="charliteral">&#39;(&#39;</span>;</div>
<div class="line"> <span class="keywordflow">case</span> <span class="charliteral">&#39;}&#39;</span>:</div>
<div class="line"> <span class="keywordflow">return</span> <span class="charliteral">&#39;{&#39;</span>;</div>
<div class="line"> <span class="keywordflow">case</span> <span class="charliteral">&#39;]&#39;</span>:</div>
<div class="line"> <span class="keywordflow">return</span> <span class="charliteral">&#39;[&#39;</span>;</div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">return</span> <span class="charliteral">&#39;\0&#39;</span>;</div>
<div class="line">}</div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">bool</span> isValid(<span class="keywordtype">char</span> *s)</div>
<div class="line">{</div>
<div class="line"> <span class="keyword">const</span> <span class="keywordtype">size_t</span> n = strlen(s);</div>
<div class="line"> <span class="keyword">struct </span>paren_stk *stk = paren_stk_create((uint32_t)n);</div>
<div class="line"> </div>
<div class="line"> <span class="keywordtype">bool</span> retVal = <span class="keyword">true</span>;</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i &lt; n; i++) {</div>
<div class="line"> <span class="keywordflow">switch</span> (s[i]) {</div>
<div class="line"> <span class="keywordflow">case</span> <span class="charliteral">&#39;(&#39;</span>:</div>
<div class="line"> <span class="keywordflow">case</span> <span class="charliteral">&#39;{&#39;</span>:</div>
<div class="line"> <span class="keywordflow">case</span> <span class="charliteral">&#39;[&#39;</span>:</div>
<div class="line"> <span class="keywordflow">if</span> (!paren_stk_is_full(stk)) {</div>
<div class="line"> paren_stk_push(stk, matching_paren(s[i]));</div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">else</span> {</div>
<div class="line"> assert(<span class="keyword">false</span>);</div>
<div class="line"> }</div>
<div class="line"> <span class="keywordflow">break</span>;</div>
<div class="line"> <span class="keywordflow">case</span> <span class="charliteral">&#39;)&#39;</span>:</div>
<div class="line"> <span class="keywordflow">case</span> <span class="charliteral">&#39;}&#39;</span>:</div>
<div class="line"> <span class="keywordflow">case</span> <span class="charliteral">&#39;]&#39;</span>:</div>
<div class="line"> retVal &amp;= !paren_stk_is_empty(stk) &amp;&amp; paren_stk_pop(stk) == s[i];</div>
<div class="line"> <span class="keywordflow">break</span>;</div>
<div class="line"> <span class="keywordflow">default</span>:</div>
<div class="line"> assert(<span class="keyword">false</span>);</div>
<div class="line"> <span class="keywordflow">break</span>;</div>
<div class="line"> }</div>
<div class="line"> }</div>
<div class="line"> retVal &amp;= stk-&gt;count == 0;</div>
<div class="line"> </div>
<div class="line"> paren_stk_destroy(stk);</div>
<div class="line"> </div>
<div class="line"> <span class="keywordflow">return</span> retVal;</div>
<div class="line">}</div>
<div class="line"> </div>
<div class="line"><span class="preprocessor">#define print_and_assert(expr, expected) \</span></div>
<div class="line"><span class="preprocessor"> __extension__({ \</span></div>
<div class="line"><span class="preprocessor"> bool res = (expr); \</span></div>
<div class="line"><span class="preprocessor"> assert(res == (expected)); \</span></div>
<div class="line"><span class="preprocessor"> printf(&quot;%-17s = %s\n&quot;, #expr, res ? &quot;true&quot; : &quot;false&quot;); \</span></div>
<div class="line"><span class="preprocessor"> })</span></div>
<div class="line"> </div>
<div class="line"><span class="keywordtype">int</span> main(<span class="keywordtype">void</span>)</div>
<div class="line">{</div>
<div class="line"> (void)(print_paren_stk);</div>
<div class="line"> </div>
<div class="line"> print_and_assert(isValid(<span class="stringliteral">&quot;()&quot;</span>), <span class="keyword">true</span>);</div>
<div class="line"> print_and_assert(isValid(<span class="stringliteral">&quot;(&quot;</span>), <span class="keyword">false</span>);</div>
<div class="line"> print_and_assert(isValid(<span class="stringliteral">&quot;)&quot;</span>), <span class="keyword">false</span>);</div>
<div class="line"> print_and_assert(isValid(<span class="stringliteral">&quot;(]&quot;</span>), <span class="keyword">false</span>);</div>
<div class="line"> print_and_assert(isValid(<span class="stringliteral">&quot;([]){}&quot;</span>), <span class="keyword">true</span>);</div>
<div class="line"> print_and_assert(isValid(<span class="stringliteral">&quot;([){}&quot;</span>), <span class="keyword">false</span>);</div>
<div class="line"> print_and_assert(isValid(<span class="stringliteral">&quot;{[][]}&quot;</span>), <span class="keyword">true</span>);</div>
<div class="line"> print_and_assert(isValid(<span class="stringliteral">&quot;{[[]}&quot;</span>), <span class="keyword">false</span>);</div>
<div class="line"> print_and_assert(isValid(<span class="stringliteral">&quot;{[(])}&quot;</span>), <span class="keyword">false</span>);</div>
<div class="line">}</div>
<div class="ttc" id="afstack_8h_html"><div class="ttname"><a href="fstack_8h.html">fstack.h</a></div><div class="ttdoc">Fixed-size array-based stack.</div></div>
</div><!-- fragment --> </div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated by&#160;<a href="https://www.doxygen.org/index.html"><img class="footer" src="doxygen.svg" width="104" height="31" alt="doxygen"/></a> 1.12.0
Expand Down
4 changes: 3 additions & 1 deletion freelist_8h.html
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,9 @@
<div class="textblock"><p>Best-fit free list allocator. </p>
<p>Sources used: </p><ul>
<li><a href="https://www.gingerbill.org/article/2021/11/30/memory-allocation-strategies-005/">https://www.gingerbill.org/article/2021/11/30/memory-allocation-strategies-005/</a> </li>
<li><a href="https://www.boost.org/doc/libs/1_46_1/doc/html/interprocess/memory_algorithms.html">https://www.boost.org/doc/libs/1_46_1/doc/html/interprocess/memory_algorithms.html</a> </li>
<li><a href="https://www.boost.org/doc/libs/1_46_1/doc/html/interprocess/memory_algorithms.html">https://www.boost.org/doc/libs/1_46_1/doc/html/interprocess/memory_algorithms.html</a></li>
</ul>
<p>Inspiration: </p><ul>
<li><a href="https://github.com/csehydrogen/malloclab/blob/master/mm.c">https://github.com/csehydrogen/malloclab/blob/master/mm.c</a> </li>
</ul>
</div></div><!-- contents -->
Expand Down
Loading

0 comments on commit eccc220

Please sign in to comment.