-
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 56dc828
Showing
8 changed files
with
2,195 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,175 @@ | ||
<?xml version="1.0" encoding="utf-8" ?> | ||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> | ||
<!-- This file is generated by Nim. --> | ||
<html xmlns="https://www.w3.org/1999/xhtml" xml:lang="en" lang="en" data-theme="auto"> | ||
<head> | ||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> | ||
<meta name="viewport" content="width=device-width, initial-scale=1.0"> | ||
<title>src/skinsuit/conditional</title> | ||
|
||
<!-- Google fonts --> | ||
<link href='https://fonts.googleapis.com/css?family=Lato:400,600,900' rel='stylesheet' type='text/css'/> | ||
<link href='https://fonts.googleapis.com/css?family=Source+Code+Pro:400,500,600' rel='stylesheet' type='text/css'/> | ||
|
||
<!-- Favicon --> | ||
<link rel="shortcut icon" href="data:image/x-icon;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAUAAAAF////AP///wD///8A////AP///wD///8A////AP///wD///8A////AAAAAAIAAABbAAAAlQAAAKIAAACbAAAAmwAAAKIAAACVAAAAWwAAAAL///8A////AP///wD///8A////AAAAABQAAADAAAAAYwAAAA3///8A////AP///wD///8AAAAADQAAAGMAAADAAAAAFP///wD///8A////AP///wAAAACdAAAAOv///wD///8A////AP///wD///8A////AP///wD///8AAAAAOgAAAJ3///8A////AP///wAAAAAnAAAAcP///wAAAAAoAAAASv///wD///8A////AP///wAAAABKAAAAKP///wAAAABwAAAAJ////wD///8AAAAAgQAAABwAAACIAAAAkAAAAJMAAACtAAAAFQAAABUAAACtAAAAkwAAAJAAAACIAAAAHAAAAIH///8A////AAAAAKQAAACrAAAAaP///wD///8AAAAARQAAANIAAADSAAAARf///wD///8AAAAAaAAAAKsAAACk////AAAAADMAAACcAAAAnQAAABj///8A////AP///wAAAAAYAAAAGP///wD///8A////AAAAABgAAACdAAAAnAAAADMAAAB1AAAAwwAAAP8AAADpAAAAsQAAAE4AAAAb////AP///wAAAAAbAAAATgAAALEAAADpAAAA/wAAAMMAAAB1AAAAtwAAAOkAAAD/AAAA/wAAAP8AAADvAAAA3gAAAN4AAADeAAAA3gAAAO8AAAD/AAAA/wAAAP8AAADpAAAAtwAAAGUAAAA/AAAA3wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAAD/AAAA/wAAAP8AAADfAAAAPwAAAGX///8A////AAAAAEgAAADtAAAAvwAAAL0AAADGAAAA7wAAAO8AAADGAAAAvQAAAL8AAADtAAAASP///wD///8A////AP///wD///8AAAAAO////wD///8A////AAAAAIcAAACH////AP///wD///8AAAAAO////wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A////AP///wD///8A//8AAP//AAD4HwAA7/cAAN/7AAD//wAAoYUAAJ55AACf+QAAh+EAAAAAAADAAwAA4AcAAP5/AAD//wAA//8AAA=="/> | ||
<link rel="icon" type="image/png" sizes="32x32" href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAA3XAAAN1wFCKJt4AAAAB3RJTUUH4QQQEwksSS9ZWwAAAk1JREFUWMPtll2ITVEUx39nn/O7Y5qR8f05wtCUUr6ZIS++8pEnkZInPImneaCQ5METNdOkeFBKUhMPRIkHKfEuUZSUlGlKPN2TrgfncpvmnntnmlEyq1Z7t89/rf9a6+y99oZxGZf/XeIq61EdtgKXgdXA0xrYAvBjOIF1AI9zvjcC74BSpndrJPkBWDScTF8Aa4E3wDlgHbASaANmVqlcCnwHvgDvgVfAJ+AikAAvgfVZwLnSVZHZaOuKoQi3ZOMi4NkYkpe1p4J7A8BpYAD49hfIy/oqG0+hLomiKP2L5L+1ubn5115S+3OAn4EnwBlgMzCjyt6ZAnQCJ4A7wOs88iRJHvw50HoujuPBoCKwHWiosy8MdfZnAdcHk8dxXFJ3VQbQlCTJvRBCGdRbD4M6uc5glpY3eAihpN5S5w12diSEcCCEcKUO4ljdr15T76ur1FDDLIQQ3qv71EdDOe3Kxj3leRXyk+pxdWnFWod6Wt2bY3de3aSuUHcPBVimHs7mK9WrmeOF6lR1o9qnzskh2ar2qm1qizpfXaPeVGdlmGN5pb09qMxz1Xb1kLqgzn1RyH7JUXW52lr5e/Kqi9qpto7V1atuUzfnARrV7jEib1T76gG2qxdGmXyiekkt1GswPTtek0aBfJp6YySGBfWg2tPQ0FAYgf1stUfdmdcjarbYJEniKIq6gY/Aw+zWHAC+p2labGpqiorFYgGYCEzN7oQdQClN07O1/EfDyGgC0ALMBdYAi4FyK+4H3gLPsxfR1zRNi+NP7nH5J+QntnXe5B5mpfQAAAAASUVORK5CYII="> | ||
|
||
<!-- CSS --> | ||
<link rel="stylesheet" type="text/css" href="nimdoc.out.css?v=2.2.0"> | ||
|
||
<!-- JS --> | ||
<script type="text/javascript" src="dochack.js?v=2.2.0"></script> | ||
</head> | ||
<body> | ||
<div class="document" id="documentId"> | ||
<div class="container"> | ||
<h1 class="title">src/skinsuit/conditional</h1> | ||
<div class="row"> | ||
<div class="three columns"> | ||
<div class="theme-select-wrapper"> | ||
<label for="theme-select">Theme: </label> | ||
<select id="theme-select" onchange="setTheme(this.value)"> | ||
<option value="auto">🌗 Match OS</option> | ||
<option value="dark">🌑 Dark</option> | ||
<option value="light">🌕 Light</option> | ||
</select> | ||
</div> | ||
<div id="global-links"> | ||
<ul class="simple"> | ||
<li><a id="indexLink" href="theindex.html">Index</a></li> | ||
</ul> | ||
</div> | ||
<div id="searchInputDiv"> | ||
Search: <input type="search" id="searchInput" oninput="search()"/> | ||
</div> | ||
<div> | ||
Group by: | ||
<select onchange="groupBy(this.value)"> | ||
<option value="section">Section</option> | ||
<option value="type">Type</option> | ||
</select> | ||
</div> | ||
<ul class="simple simple-toc" id="toc-list"> | ||
<li> | ||
<a class="reference reference-toplevel" href="#6" id="56">Imports</a> | ||
</li> | ||
<li> | ||
<details open> | ||
<summary><a class="reference reference-toplevel" href="#7" id="57">Types</a></summary> | ||
<ul class="simple simple-toc-section"> | ||
<li><a class="reference" href="#ConditionalFieldDefect" title="ConditionalFieldDefect = object of FieldDefect">ConditionalFieldDefect</a></li> | ||
|
||
</ul> | ||
</details> | ||
</li> | ||
<li> | ||
<details open> | ||
<summary><a class="reference reference-toplevel" href="#17" id="67">Macros</a></summary> | ||
<ul class="simple simple-toc-section"> | ||
<ul class="simple nested-toc-section">conditional | ||
<li><a class="reference" href="#conditional.m" title="conditional(body)">conditional(body)</a></li> | ||
|
||
</ul> | ||
|
||
</ul> | ||
</details> | ||
</li> | ||
|
||
</ul> | ||
|
||
</div> | ||
<div class="nine columns" id="content"> | ||
<a href="https://github.com/metagn/skinsuit/tree/master/src/skinsuit/conditional.nim#L1" class="link-seesrc" target="_blank">Source</a> | ||
<a href="https://github.com/metagn/skinsuit/edit/master/src/skinsuit/conditional.nim#L1" class="link-seesrc" target="_blank" >Edit</a> | ||
|
||
<div id="tocRoot"></div> | ||
|
||
<p class="module-desc"><p>object variants generalized to any condition for each possible union value</p> | ||
<p>currently uses {.union.} (in the future it may change), so can be buggy with memory managed types</p> | ||
|
||
<p><strong class="examples_text">Example:</strong></p> | ||
<pre class="listing"><span class="Keyword">import</span> <span class="Identifier">src</span><span class="Operator">/</span><span class="Identifier">skinsuit</span><span class="Operator">/</span><span class="Identifier">conditional</span> | ||
<span class="Keyword">type</span> <span class="Identifier">Foo</span> <span class="Punctuation">{</span><span class="Operator">.</span><span class="Identifier">conditional</span><span class="Operator">.</span><span class="Punctuation">}</span> <span class="Operator">=</span> <span class="Keyword">ref</span> <span class="Keyword">object</span> | ||
<span class="Identifier">num</span><span class="Punctuation">:</span> <span class="Identifier">int</span> | ||
<span class="Keyword">case</span> <span class="Identifier">branch</span><span class="Punctuation">:</span> <span class="Identifier">_</span> <span class="Comment"># type has to be _, all types without a case branch with _ as discriminator type are kept in the type section</span> | ||
<span class="Comment"># the name "branch" can be changed or made _ in which case it defaults to "branch" for now</span> | ||
<span class="Keyword">of</span> <span class="Identifier">Odd</span><span class="Punctuation">,</span> <span class="Identifier">num</span> <span class="Keyword">mod</span> <span class="DecNumber">2</span> <span class="Operator">==</span> <span class="DecNumber">1</span><span class="Punctuation">:</span> <span class="Comment"># branch names can also be _</span> | ||
<span class="Identifier">name</span><span class="Punctuation">:</span> <span class="Identifier">string</span> | ||
<span class="Keyword">of</span> <span class="Identifier">DoubleEven</span><span class="Punctuation">,</span> <span class="Identifier">num</span> <span class="Keyword">mod</span> <span class="DecNumber">4</span> <span class="Operator">==</span> <span class="DecNumber">0</span><span class="Punctuation">:</span> | ||
<span class="Identifier">a</span><span class="Punctuation">,</span> <span class="Identifier">b</span><span class="Punctuation">:</span> <span class="Identifier">int</span> | ||
<span class="Keyword">of</span> <span class="Identifier">Even</span><span class="Punctuation">:</span> | ||
<span class="Identifier">a</span><span class="Punctuation">:</span> <span class="Identifier">int</span> <span class="Comment"># duplicate names are allowed, only the accessors care that they have the same type</span> | ||
|
||
<span class="Keyword">var</span> <span class="Identifier">foo</span> <span class="Operator">=</span> <span class="Identifier">Foo</span><span class="Punctuation">(</span><span class="Identifier">num</span><span class="Punctuation">:</span> <span class="DecNumber">1</span><span class="Punctuation">)</span> | ||
<span class="Identifier">foo</span><span class="Operator">.</span><span class="Identifier">name</span> <span class="Operator">=</span> <span class="StringLit">"abc"</span> | ||
<span class="Identifier">doAssert</span> <span class="Identifier">foo</span><span class="Operator">.</span><span class="Identifier">name</span> <span class="Operator">==</span> <span class="StringLit">"abc"</span> | ||
<span class="Identifier">doAssert</span> <span class="Identifier">foo</span><span class="Operator">.</span><span class="Identifier">branch</span> <span class="Operator">==</span> <span class="Identifier">Odd</span> <span class="Comment"># branch is not an actual variable</span> | ||
<span class="Identifier">foo</span><span class="Operator">.</span><span class="Identifier">num</span> <span class="Operator">=</span> <span class="DecNumber">2</span> | ||
<span class="Identifier">foo</span><span class="Operator">.</span><span class="Identifier">resetBranch</span><span class="Punctuation">(</span><span class="Punctuation">)</span> <span class="Comment"># advantage over object variants, named after "branch"</span> | ||
<span class="Identifier">foo</span><span class="Operator">.</span><span class="Identifier">a</span> <span class="Operator">=</span> <span class="DecNumber">3</span> | ||
<span class="Identifier">doAssert</span> <span class="Identifier">foo</span><span class="Operator">.</span><span class="Identifier">a</span> <span class="Operator">==</span> <span class="DecNumber">3</span> | ||
<span class="Identifier">doAssert</span> <span class="Identifier">foo</span><span class="Operator">.</span><span class="Identifier">branch</span> <span class="Operator">==</span> <span class="Identifier">Even</span> | ||
<span class="Identifier">foo</span><span class="Operator">.</span><span class="Identifier">num</span> <span class="Operator">=</span> <span class="DecNumber">16</span> | ||
<span class="Identifier">doAssert</span> <span class="Identifier">foo</span><span class="Operator">.</span><span class="Identifier">a</span> <span class="Operator">==</span> <span class="DecNumber">3</span> | ||
<span class="Identifier">foo</span><span class="Operator">.</span><span class="Identifier">b</span> <span class="Operator">=</span> <span class="DecNumber">4</span> | ||
<span class="Identifier">doAssert</span> <span class="Identifier">foo</span><span class="Operator">.</span><span class="Identifier">b</span> <span class="Operator">==</span> <span class="DecNumber">4</span> | ||
<span class="Identifier">doAssert</span> <span class="Identifier">foo</span><span class="Operator">.</span><span class="Identifier">branch</span> <span class="Operator">==</span> <span class="Identifier">DoubleEven</span> | ||
<span class="Identifier">foo</span><span class="Operator">.</span><span class="Identifier">resetBranch</span><span class="Punctuation">(</span><span class="Punctuation">)</span> | ||
<span class="Identifier">doAssert</span> <span class="Identifier">foo</span><span class="Operator">.</span><span class="Identifier">a</span> <span class="Operator">==</span> <span class="DecNumber">0</span> | ||
<span class="Identifier">doAssert</span> <span class="Identifier">foo</span><span class="Operator">.</span><span class="Identifier">b</span> <span class="Operator">==</span> <span class="DecNumber">0</span></pre></p> | ||
<div class="section" id="6"> | ||
<h1><a class="toc-backref" href="#6">Imports</a></h1> | ||
<dl class="item"> | ||
<a class="reference external" href="utils.html">utils</a> | ||
</dl> | ||
</div> | ||
<div class="section" id="7"> | ||
<h1><a class="toc-backref" href="#7">Types</a></h1> | ||
<dl class="item"> | ||
<div id="ConditionalFieldDefect"> | ||
<dt><pre><a href="conditional.html#ConditionalFieldDefect"><span class="Identifier">ConditionalFieldDefect</span></a> <span class="Other">=</span> <span class="Keyword">object</span> <span class="Keyword">of</span> <span class="Identifier">FieldDefect</span></pre></dt> | ||
<dd> | ||
|
||
|
||
<a href="https://github.com/metagn/skinsuit/tree/master/src/skinsuit/conditional.nim#L41" class="link-seesrc" target="_blank">Source</a> | ||
<a href="https://github.com/metagn/skinsuit/edit/master/src/skinsuit/conditional.nim#L41" class="link-seesrc" target="_blank" >Edit</a> | ||
|
||
</dd> | ||
</div> | ||
|
||
</dl> | ||
</div> | ||
<div class="section" id="17"> | ||
<h1><a class="toc-backref" href="#17">Macros</a></h1> | ||
<dl class="item"> | ||
<div id="conditional-macros-all"> | ||
<div id="conditional.m"> | ||
<dt><pre><span class="Keyword">macro</span> <a href="#conditional.m"><span class="Identifier">conditional</span></a><span class="Other">(</span><span class="Identifier">body</span><span class="Other">)</span></pre></dt> | ||
<dd> | ||
|
||
|
||
<a href="https://github.com/metagn/skinsuit/tree/master/src/skinsuit/conditional.nim#L285" class="link-seesrc" target="_blank">Source</a> | ||
<a href="https://github.com/metagn/skinsuit/edit/master/src/skinsuit/conditional.nim#L285" class="link-seesrc" target="_blank" >Edit</a> | ||
|
||
</dd> | ||
</div> | ||
|
||
</div> | ||
|
||
</dl> | ||
</div> | ||
|
||
</div> | ||
</div> | ||
|
||
<div class="twelve-columns footer"> | ||
<span class="nim-sprite"></span> | ||
<br> | ||
<small style="color: var(--hint);">Made with Nim. Generated: 2024-10-05 19:21:01 UTC</small> | ||
</div> | ||
</div> | ||
</div> | ||
|
||
</body> | ||
</html> |
Oops, something went wrong.