mirror of
https://github.com/nim-lang/Nim.git
synced 2026-07-31 20:49:06 +00:00
671 lines
66 KiB
HTML
671 lines
66 KiB
HTML
<?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>icnifcore</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.3.1">
|
|
|
|
<!-- JS -->
|
|
<script type="text/javascript" src="dochack.js?v=2.3.1"></script>
|
|
</head>
|
|
<body>
|
|
<div class="document" id="documentId">
|
|
<input type="checkbox" id="nav-toggle" hidden>
|
|
<label for="nav-toggle" id="nav-burger">☰</label>
|
|
<label for="nav-toggle" id="nav-overlay"></label>
|
|
<div class="container">
|
|
<h1 class="title">icnifcore</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="#CookieKind" title="CookieKind = enum
|
|
ckParLe, ckParRi, ckSym, ckSymDef, ckIdent, ckStr, ckInt, ckUInt, ckFloat,
|
|
ckChar, ckDot">CookieKind</a></li>
|
|
<li><a class="reference" href="#CookieTok" title="CookieTok = object
|
|
kind*: CookieKind
|
|
tag*: string
|
|
name*: string
|
|
sym*: uint32
|
|
str*: string
|
|
ival*: int64
|
|
uval*: uint64
|
|
fval*: float64
|
|
cval*: uint32">CookieTok</a></li>
|
|
<li><a class="reference" href="#IcBuilder" title="IcBuilder = object
|
|
buf*: TokenBuf">IcBuilder</a></li>
|
|
|
|
</ul>
|
|
</details>
|
|
</li>
|
|
<li>
|
|
<details open>
|
|
<summary><a class="reference reference-toplevel" href="#9" id="59">Lets</a></summary>
|
|
<ul class="simple simple-toc-section">
|
|
<li><a class="reference" href="#icPool" title="icPool = newPool()">icPool</a></li>
|
|
<li><a class="reference" href="#icTags" title="icTags = newTagPool()">icTags</a></li>
|
|
|
|
</ul>
|
|
</details>
|
|
</li>
|
|
<li>
|
|
<details open>
|
|
<summary><a class="reference reference-toplevel" href="#12" id="62">Procs</a></summary>
|
|
<ul class="simple simple-toc-section">
|
|
<ul class="simple nested-toc-section">addAll
|
|
<li><a class="reference" href="#addAll%2CIcBuilder%2CIcBuilder" title="addAll(dest: var IcBuilder; src: var IcBuilder)">addAll(dest: var IcBuilder; src: var IcBuilder)</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">addCharLit
|
|
<li><a class="reference" href="#addCharLit%2CIcBuilder%2Cchar" title="addCharLit(b: var IcBuilder; c: char)">addCharLit(b: var IcBuilder; c: char)</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">addDotToken
|
|
<li><a class="reference" href="#addDotToken%2CIcBuilder" title="addDotToken(b: var IcBuilder)">addDotToken(b: var IcBuilder)</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">addFloatLit
|
|
<li><a class="reference" href="#addFloatLit%2CIcBuilder%2Cfloat64" title="addFloatLit(b: var IcBuilder; v: float64)">addFloatLit(b: var IcBuilder; v: float64)</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">addIdent
|
|
<li><a class="reference" href="#addIdent%2CIcBuilder%2Cstring" title="addIdent(b: var IcBuilder; s: string)">addIdent(b: var IcBuilder; s: string)</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">addIntLit
|
|
<li><a class="reference" href="#addIntLit%2CIcBuilder%2Cint64" title="addIntLit(b: var IcBuilder; v: int64)">addIntLit(b: var IcBuilder; v: int64)</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">addStmtsBody
|
|
<li><a class="reference" href="#addStmtsBody%2CIcBuilder%2CIcBuilder" title="addStmtsBody(dest: var IcBuilder; src: var IcBuilder)">addStmtsBody(dest: var IcBuilder; src: var IcBuilder)</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">addStrLit
|
|
<li><a class="reference" href="#addStrLit%2CIcBuilder%2Cstring" title="addStrLit(b: var IcBuilder; s: string)">addStrLit(b: var IcBuilder; s: string)</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">addSymDef
|
|
<li><a class="reference" href="#addSymDef%2CIcBuilder%2Cstring" title="addSymDef(b: var IcBuilder; s: string)">addSymDef(b: var IcBuilder; s: string)</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">addSymUse
|
|
<li><a class="reference" href="#addSymUse%2CIcBuilder%2Cstring" title="addSymUse(b: var IcBuilder; s: string)">addSymUse(b: var IcBuilder; s: string)</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">addUIntLit
|
|
<li><a class="reference" href="#addUIntLit%2CIcBuilder%2Cuint64" title="addUIntLit(b: var IcBuilder; v: uint64)">addUIntLit(b: var IcBuilder; v: uint64)</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">closeTag
|
|
<li><a class="reference" href="#closeTag%2CIcBuilder" title="closeTag(b: var IcBuilder)">closeTag(b: var IcBuilder)</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">collectBifStrLits
|
|
<li><a class="reference" href="#collectBifStrLits%2Cstring" title="collectBifStrLits(path: string): seq[string]">collectBifStrLits(path: string): seq[string]</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">createIcBuf
|
|
<li><a class="reference" href="#createIcBuf%2Cint" title="createIcBuf(cap = 16): TokenBuf">createIcBuf(cap = 16): TokenBuf</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">cursorPool
|
|
<li><a class="reference" href="#cursorPool%2CCursor" title="cursorPool(c: Cursor): Pool">cursorPool(c: Cursor): Pool</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">flattenForCookie
|
|
<li><a class="reference" href="#flattenForCookie%2CIcBuilder" title="flattenForCookie(b: var IcBuilder): seq[CookieTok]">flattenForCookie(b: var IcBuilder): seq[CookieTok]</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">lineInfo
|
|
<li><a class="reference" href="#lineInfo%2CIcBuilder%2Cstring%2Cint32%2Cint32%2Cstring" title="lineInfo(b: var IcBuilder; file: string; line, col: int32; comment = "")">lineInfo(b: var IcBuilder; file: string; line, col: int32; comment = "")</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">newIcBuilder
|
|
<li><a class="reference" href="#newIcBuilder%2Cint" title="newIcBuilder(cap = 16): IcBuilder">newIcBuilder(cap = 16): IcBuilder</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">openTag
|
|
<li><a class="reference" href="#openTag%2CIcBuilder%2Cstring" title="openTag(b: var IcBuilder; tag: string)">openTag(b: var IcBuilder; tag: string)</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">storeBif
|
|
<li><a class="reference" href="#storeBif%2CIcBuilder%2Cstring%2Cstring" title="storeBif(b: var IcBuilder; path: string; dottedSuffix: string)">storeBif(b: var IcBuilder; path: string; dottedSuffix: string)</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">storeBifStable
|
|
<li><a class="reference" href="#storeBifStable%2CIcBuilder%2Cstring%2Cstring" title="storeBifStable(b: var IcBuilder; path: string; dottedSuffix: string)">storeBifStable(b: var IcBuilder; path: string; dottedSuffix: string)</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">tagId
|
|
<li><a class="reference" href="#tagId%2Cstring" title="tagId(s: string): TagId">tagId(s: string): TagId</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">writeFileStable
|
|
<li><a class="reference" href="#writeFileStable%2CTokenBuf%2Cstring" title="writeFileStable(b: var TokenBuf; path: string; onlyIfChanged = false)">writeFileStable(b: var TokenBuf; path: string; onlyIfChanged = false)</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">writeSemDeps
|
|
<li><a class="reference" href="#writeSemDeps%2CConfigRef%2Cint32%2Cseq%5Bstring%5D" title="writeSemDeps(config: ConfigRef; thisModule: int32; importPaths: seq[string])">writeSemDeps(config: ConfigRef; thisModule: int32; importPaths: seq[string])</a></li>
|
|
|
|
</ul>
|
|
<ul class="simple nested-toc-section">writeStable
|
|
<li><a class="reference" href="#writeStable%2CIcBuilder%2Cstring" title="writeStable(b: var IcBuilder; path: string; onlyIfChanged = false)">writeStable(b: var IcBuilder; path: string; onlyIfChanged = false)</a></li>
|
|
|
|
</ul>
|
|
|
|
</ul>
|
|
</details>
|
|
</li>
|
|
|
|
</ul>
|
|
|
|
</div>
|
|
<div class="nine columns" id="content">
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L1" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L1" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
<div id="tocRoot"></div>
|
|
|
|
<p class="module-desc"><p>nifcore-based IC serialization helpers — Stage 1 of porting the IC backend from the old <tt class="docutils literal"><span class="pre"><span class="Identifier">nifstreams</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Identifier">nifcursors</span></span></tt> NIF stack to <tt class="docutils literal"><span class="pre"><span class="Identifier">nifcore</span></span></tt> (see <tt class="docutils literal"><span class="pre"><span class="Identifier">doc</span><span class="Operator">/</span><span class="Identifier">ic_nifcore_port</span><span class="Operator">.</span><span class="Identifier">md</span></span></tt>).</p>
|
|
<p>It hosts:</p>
|
|
<ul class="simple"><li>the process-wide shared <tt class="docutils literal"><span class="pre"><span class="Identifier">Pool</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Identifier">TagPool</span></span></tt> that stands in for the old global <tt class="docutils literal"><span class="pre"><span class="Identifier">nifstreams</span><span class="Operator">.</span><span class="Identifier">pool</span></span></tt>,</li>
|
|
<li><tt class="docutils literal"><span class="pre"><span class="Identifier">writeFileStable</span></span></tt>, the content-stable file writer mirroring <tt class="docutils literal"><span class="pre"><span class="Identifier">nifcursors</span><span class="Operator">.</span><span class="Identifier">writeFile</span><span class="Punctuation">(</span><span class="Operator">...</span><span class="Punctuation">,</span> <span class="Identifier">OnlyIfChanged</span><span class="Punctuation">)</span></span></tt>,</li>
|
|
<li>the first ported writer (<tt class="docutils literal"><span class="pre"><span class="Identifier">writeSemDeps</span></span></tt>), used as the migration spike.</li>
|
|
</ul>
|
|
<p>No <tt class="docutils literal"><span class="pre"><span class="Identifier">nifstreams</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Identifier">nifcursors</span></span></tt> types cross this module's boundary: callers pass plain Nim values (config, ids, string lists), so it can coexist with the still-old-API <tt class="docutils literal"><span class="pre"><span class="Identifier">ast2nif</span><span class="Operator">.</span><span class="Identifier">nim</span></span></tt> during the migration.</p>
|
|
</p>
|
|
<div class="section" id="6">
|
|
<h1><a class="toc-backref" href="#6">Imports</a></h1>
|
|
<dl class="item">
|
|
<a class="reference external" href="options.html">options</a>, <a class="reference external" href="pathutils.html">pathutils</a>, <a class="reference external" href="typekeys.html">typekeys</a>
|
|
</dl>
|
|
</div>
|
|
<div class="section" id="7">
|
|
<h1><a class="toc-backref" href="#7">Types</a></h1>
|
|
<dl class="item">
|
|
<div id="CookieKind">
|
|
<dt><pre><a href="#CookieKind"><span class="Identifier">CookieKind</span></a> <span class="Other">=</span> <span class="Keyword">enum</span>
|
|
<span class="Identifier">ckParLe</span><span class="Other">,</span> <span class="Identifier">ckParRi</span><span class="Other">,</span> <span class="Identifier">ckSym</span><span class="Other">,</span> <span class="Identifier">ckSymDef</span><span class="Other">,</span> <span class="Identifier">ckIdent</span><span class="Other">,</span> <span class="Identifier">ckStr</span><span class="Other">,</span> <span class="Identifier">ckInt</span><span class="Other">,</span> <span class="Identifier">ckUInt</span><span class="Other">,</span> <span class="Identifier">ckFloat</span><span class="Other">,</span>
|
|
<span class="Identifier">ckChar</span><span class="Other">,</span> <span class="Identifier">ckDot</span></pre></dt>
|
|
<dd>
|
|
|
|
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L167" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L167" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
<div id="CookieTok">
|
|
<dt><pre><a href="#CookieTok"><span class="Identifier">CookieTok</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
|
|
<span class="Identifier">kind</span><span class="Operator">*</span><span class="Other">:</span> <a href="#CookieKind"><span class="Identifier">CookieKind</span></a>
|
|
<span class="Identifier">tag</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
|
|
<span class="Identifier">name</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
|
|
<span class="Identifier">sym</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">uint32</span>
|
|
<span class="Identifier">str</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">string</span>
|
|
<span class="Identifier">ival</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">int64</span>
|
|
<span class="Identifier">uval</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">uint64</span>
|
|
<span class="Identifier">fval</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">float64</span>
|
|
<span class="Identifier">cval</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">uint32</span></pre></dt>
|
|
<dd>
|
|
|
|
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L169" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L169" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
<div id="IcBuilder">
|
|
<dt><pre><a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a> <span class="Other">=</span> <span class="Keyword">object</span>
|
|
<span class="Identifier">buf</span><span class="Operator">*</span><span class="Other">:</span> <span class="Identifier">TokenBuf</span></pre></dt>
|
|
<dd>
|
|
|
|
A thin nifcore <tt class="docutils literal"><span class="pre"><span class="Identifier">TokenBuf</span></span></tt> builder whose surface is <em>primitive types only</em> (strings/ints/floats). It lets the still-old-API <tt class="docutils literal"><span class="pre"><span class="Identifier">ast2nif</span><span class="Operator">.</span><span class="Identifier">nim</span></span></tt> drive a nifcore buffer without any nifcore type crossing the module boundary — the bridge that routes IC output onto the nifcore serializer (Stage 2).
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L47" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L47" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</dl>
|
|
</div>
|
|
<div class="section" id="9">
|
|
<h1><a class="toc-backref" href="#9">Lets</a></h1>
|
|
<dl class="item">
|
|
<div id="icPool">
|
|
<dt><pre><a href="#icPool"><span class="Identifier">icPool</span></a> <span class="Other">=</span> <span class="Identifier">newPool</span><span class="Other">(</span><span class="Other">)</span></pre></dt>
|
|
<dd>
|
|
|
|
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L35" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L35" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
<div id="icTags">
|
|
<dt><pre><a href="#icTags"><span class="Identifier">icTags</span></a> <span class="Other">=</span> <span class="Identifier">newTagPool</span><span class="Other">(</span><span class="Other">)</span></pre></dt>
|
|
<dd>
|
|
|
|
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L36" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L36" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</dl>
|
|
</div>
|
|
<div class="section" id="12">
|
|
<h1><a class="toc-backref" href="#12">Procs</a></h1>
|
|
<dl class="item">
|
|
<div id="addAll-procs-all">
|
|
<div id="addAll,IcBuilder,IcBuilder">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#addAll%2CIcBuilder%2CIcBuilder"><span class="Identifier">addAll</span></a><span class="Other">(</span><span class="Identifier">dest</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">src</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
Append every top-level subtree of <tt class="docutils literal"><span class="pre"><span class="Identifier">src</span></span></tt> into <tt class="docutils literal"><span class="pre"><span class="Identifier">dest</span></span></tt> — the nifcore analogue of the old <tt class="docutils literal"><span class="pre"><span class="Identifier">dest</span><span class="Operator">.</span><span class="Identifier">add</span> <span class="Identifier">wholeBuffer</span></span></tt> splice.
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L140" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L140" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="addCharLit-procs-all">
|
|
<div id="addCharLit,IcBuilder,char">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#addCharLit%2CIcBuilder%2Cchar"><span class="Identifier">addCharLit</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">c</span><span class="Other">:</span> <span class="Identifier">char</span><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L65" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L65" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="addDotToken-procs-all">
|
|
<div id="addDotToken,IcBuilder">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#addDotToken%2CIcBuilder"><span class="Identifier">addDotToken</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L66" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L66" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="addFloatLit-procs-all">
|
|
<div id="addFloatLit,IcBuilder,float64">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#addFloatLit%2CIcBuilder%2Cfloat64"><span class="Identifier">addFloatLit</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">v</span><span class="Other">:</span> <span class="Identifier">float64</span><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L64" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L64" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="addIdent-procs-all">
|
|
<div id="addIdent,IcBuilder,string">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#addIdent%2CIcBuilder%2Cstring"><span class="Identifier">addIdent</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L60" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L60" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="addIntLit-procs-all">
|
|
<div id="addIntLit,IcBuilder,int64">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#addIntLit%2CIcBuilder%2Cint64"><span class="Identifier">addIntLit</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">v</span><span class="Other">:</span> <span class="Identifier">int64</span><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L62" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L62" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="addStmtsBody-procs-all">
|
|
<div id="addStmtsBody,IcBuilder,IcBuilder">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#addStmtsBody%2CIcBuilder%2CIcBuilder"><span class="Identifier">addStmtsBody</span></a><span class="Other">(</span><span class="Identifier">dest</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">src</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">)</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
Append the BODY of a <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">stmts</span> <span class="Operator">.</span> <span class="Operator">.</span> <span class="Operator"><</span><span class="Identifier">body</span><span class="Operator">></span> <span class="Punctuation">)</span></span></tt> builder into <tt class="docutils literal"><span class="pre"><span class="Identifier">dest</span></span></tt>, dropping the wrapper tag and its two leading dot slots (flags/type) — the nifcore analogue of the old <tt class="docutils literal"><span class="pre"><span class="Keyword">for</span> <span class="Identifier">i</span> <span class="Keyword">in</span> <span class="DecNumber">3</span> <span class="Operator">..<</span> <span class="Identifier">content</span><span class="Operator">.</span><span class="Identifier">len</span><span class="Operator">-</span><span class="DecNumber">1</span><span class="Punctuation">:</span> <span class="Identifier">dest</span><span class="Operator">.</span><span class="Identifier">add</span> <span class="Identifier">content</span><span class="Punctuation">[</span><span class="Identifier">i</span><span class="Punctuation">]</span></span></tt>.
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L148" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L148" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="addStrLit-procs-all">
|
|
<div id="addStrLit,IcBuilder,string">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#addStrLit%2CIcBuilder%2Cstring"><span class="Identifier">addStrLit</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L61" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L61" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="addSymDef-procs-all">
|
|
<div id="addSymDef,IcBuilder,string">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#addSymDef%2CIcBuilder%2Cstring"><span class="Identifier">addSymDef</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L59" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L59" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="addSymUse-procs-all">
|
|
<div id="addSymUse,IcBuilder,string">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#addSymUse%2CIcBuilder%2Cstring"><span class="Identifier">addSymUse</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L58" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L58" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="addUIntLit-procs-all">
|
|
<div id="addUIntLit,IcBuilder,uint64">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#addUIntLit%2CIcBuilder%2Cuint64"><span class="Identifier">addUIntLit</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">v</span><span class="Other">:</span> <span class="Identifier">uint64</span><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L63" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L63" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="closeTag-procs-all">
|
|
<div id="closeTag,IcBuilder">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#closeTag%2CIcBuilder"><span class="Identifier">closeTag</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L57" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L57" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="collectBifStrLits-procs-all">
|
|
<div id="collectBifStrLits,string">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#collectBifStrLits%2Cstring"><span class="Identifier">collectBifStrLits</span></a><span class="Other">(</span><span class="Identifier">path</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IOError</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadIOEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
<p>Read a small <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">tag</span> <span class="StringLit">"s"</span> <span class="StringLit">"s"</span> <span class="Identifier">…</span><span class="Punctuation">)</span></span></tt> bif sidecar (<tt class="docutils literal"><span class="pre"><span class="Identifier">semdeps</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Identifier">edges</span></span></tt>) and return every string literal it holds, in order — the binary analogue of the old nifstreams scan that collected <tt class="docutils literal"><span class="pre"><span class="Identifier">StrLit</span></span></tt>s. Keeps nifcore types out of <tt class="docutils literal"><span class="pre"><span class="Identifier">deps</span><span class="Operator">.</span><span class="Identifier">nim</span></span></tt>, which only needs the recorded string list.</p>
|
|
<p>Uses <tt class="docutils literal"><span class="pre"><span class="Identifier">loadFromFile</span></span></tt> (a full read into owned memory) rather than the mmap-backed <tt class="docutils literal"><span class="pre"><span class="Identifier">bif</span><span class="Operator">.</span><span class="Identifier">load</span></span></tt>, then CLOSES the handle. <tt class="docutils literal"><span class="pre"><span class="Identifier">bif</span><span class="Operator">.</span><span class="Identifier">load</span></span></tt> intentionally leaves the mapping resident for the process lifetime; for the <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">ic</span></span></tt> driver that reads these sidecars while <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">m</span></span></tt> children rewrite them, a lingering read mapping is a Windows sharing violation: the child's <tt class="docutils literal"><span class="pre"><span class="Identifier">open</span><span class="Punctuation">(</span><span class="Identifier">path</span><span class="Punctuation">,</span> <span class="Identifier">fmWrite</span><span class="Punctuation">)</span></span></tt> fails with <tt class="docutils literal"><span class="pre"><span class="Identifier">IOError</span><span class="Punctuation">:</span> <span class="Identifier">cannot</span> <span class="Identifier">open</span></span></tt>. These sidecars are tiny, so the zero-copy mmap buys nothing here anyway.</p>
|
|
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L217" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L217" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="createIcBuf-procs-all">
|
|
<div id="createIcBuf,int">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#createIcBuf%2Cint"><span class="Identifier">createIcBuf</span></a><span class="Other">(</span><span class="Identifier">cap</span> <span class="Other">=</span> <span class="DecNumber">16</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">TokenBuf</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
A <tt class="docutils literal"><span class="pre"><span class="Identifier">TokenBuf</span></span></tt> bound to the shared IC pools.
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L38" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L38" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="cursorPool-procs-all">
|
|
<div id="cursorPool,Cursor">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#cursorPool%2CCursor"><span class="Identifier">cursorPool</span></a><span class="Other">(</span><span class="Identifier">c</span><span class="Other">:</span> <span class="Identifier">Cursor</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">Pool</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
The literals pool the cursor's buffer was built against. <tt class="docutils literal"><span class="pre"><span class="Identifier">ast2nif</span><span class="Operator">.</span><span class="Identifier">nim</span></span></tt> imports <tt class="docutils literal"><span class="pre"><span class="Identifier">nifcore</span></span></tt> with <tt class="docutils literal"><span class="pre"><span class="Keyword">except</span> <span class="Identifier">pool</span></span></tt> (to keep nifstreams' global <tt class="docutils literal"><span class="pre"><span class="Identifier">pool</span></span></tt> var the writer uses), so the reader reaches a cursor's pool through here — needed once <tt class="docutils literal"><span class="pre"><span class="Identifier">bif</span></span></tt>-loaded buffers carry their OWN fresh pool rather than the shared <tt class="docutils literal"><span class="pre"><span class="Identifier">icPool</span></span></tt>.
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L95" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L95" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="flattenForCookie-procs-all">
|
|
<div id="flattenForCookie,IcBuilder">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#flattenForCookie%2CIcBuilder"><span class="Identifier">flattenForCookie</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><a href="#CookieTok"><span class="Identifier">CookieTok</span></a><span class="Other">]</span> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
Flatten the nifcore module buffer to the cookie hashers' flat token list.
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L211" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L211" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="lineInfo-procs-all">
|
|
<div id="lineInfo,IcBuilder,string,int32,int32,string">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#lineInfo%2CIcBuilder%2Cstring%2Cint32%2Cint32%2Cstring"><span class="Identifier">lineInfo</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">file</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">line</span><span class="Other">,</span> <span class="Identifier">col</span><span class="Other">:</span> <span class="Identifier">int32</span><span class="Other">;</span> <span class="Identifier">comment</span> <span class="Other">=</span> <span class="StringLit">""</span><span class="Other">)</span> {.
|
|
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
Attach line info (+ optional <tt class="docutils literal"><span class="pre"><span class="Comment">#comment#</span></span></tt>) to the head just emitted. No-op when <tt class="docutils literal"><span class="pre"><span class="Identifier">file</span></span></tt> is empty (matches the old "emit only when info is valid"). Strings are interned in the shared pools; the file/comment ids reproduce the old <tt class="docutils literal"><span class="pre"><span class="Identifier">pool</span><span class="Operator">.</span><span class="Identifier">files</span></span></tt>/<tt class="docutils literal"><span class="pre"><span class="Identifier">pool</span><span class="Operator">.</span><span class="Identifier">strings</span></span></tt> entries by string value.
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L68" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L68" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="newIcBuilder-procs-all">
|
|
<div id="newIcBuilder,int">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#newIcBuilder%2Cint"><span class="Identifier">newIcBuilder</span></a><span class="Other">(</span><span class="Identifier">cap</span> <span class="Other">=</span> <span class="DecNumber">16</span><span class="Other">)</span><span class="Other">:</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a> {.<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L54" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L54" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="openTag-procs-all">
|
|
<div id="openTag,IcBuilder,string">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#openTag%2CIcBuilder%2Cstring"><span class="Identifier">openTag</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">tag</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L56" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L56" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="storeBif-procs-all">
|
|
<div id="storeBif,IcBuilder,string,string">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#storeBif%2CIcBuilder%2Cstring%2Cstring"><span class="Identifier">storeBif</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">path</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">dottedSuffix</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span> {.
|
|
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IOError</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
Persist the buffer as a compact, self-contained binary NIF (<tt class="docutils literal"><span class="pre"><span class="Operator">.</span><span class="Identifier">bif</span></span></tt>).
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L114" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L114" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="storeBifStable-procs-all">
|
|
<div id="storeBifStable,IcBuilder,string,string">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#storeBifStable%2CIcBuilder%2Cstring%2Cstring"><span class="Identifier">storeBifStable</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">path</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">dottedSuffix</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span> {.
|
|
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">WriteIOEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
Content-stable <tt class="docutils literal"><span class="pre"><span class="Identifier">bif</span></span></tt> write — the binary analogue of <tt class="docutils literal"><span class="pre"><span class="Identifier">writeFileStable</span></span></tt>'s <tt class="docutils literal"><span class="pre"><span class="Identifier">onlyIfChanged</span></span></tt>: only replace <tt class="docutils literal"><span class="pre"><span class="Identifier">path</span></span></tt> when the encoded bytes differ, so an unchanged sidecar keeps its mtime and nifmake prunes the dependent rebuild cascade. Used for the iface/impl cookies + dep sidecars whose byte-stability gates incremental builds. (bif encoding is deterministic for a given buffer under fresh pools, so equal content ⇒ equal bytes.)
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L119" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L119" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="tagId-procs-all">
|
|
<div id="tagId,string">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#tagId%2Cstring"><span class="Identifier">tagId</span></a><span class="Other">(</span><span class="Identifier">s</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">)</span><span class="Other">:</span> <span class="Identifier">TagId</span> {.<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
Intern a tag name in the shared tag pool.
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L42" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L42" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="writeFileStable-procs-all">
|
|
<div id="writeFileStable,TokenBuf,string">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#writeFileStable%2CTokenBuf%2Cstring"><span class="Identifier">writeFileStable</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <span class="Identifier">TokenBuf</span><span class="Other">;</span> <span class="Identifier">path</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">onlyIfChanged</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">)</span> {.
|
|
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
Serialize <tt class="docutils literal"><span class="pre"><span class="Identifier">b</span></span></tt> to canonical module NIF text and write it. Mirrors <tt class="docutils literal"><span class="pre"><span class="Identifier">nifcursors</span><span class="Operator">.</span><span class="Identifier">writeFile</span></span></tt>: the module suffix is derived from <tt class="docutils literal"><span class="pre"><span class="Identifier">path</span></span></tt> (<tt class="docutils literal"><span class="pre"><span class="StringLit">"."</span> <span class="Operator">&</span> <span class="Identifier">extractModuleSuffix</span></span></tt>), and <tt class="docutils literal"><span class="pre"><span class="Identifier">onlyIfChanged</span></span></tt> skips the write when the on-disk bytes already match — the content-stability nifmake's incremental rebuild depends on.
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L78" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L78" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="writeSemDeps-procs-all">
|
|
<div id="writeSemDeps,ConfigRef,int32,seq[string]">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#writeSemDeps%2CConfigRef%2Cint32%2Cseq%5Bstring%5D"><span class="Identifier">writeSemDeps</span></a><span class="Other">(</span><span class="Identifier">config</span><span class="Other">:</span> <a href="options.html#ConfigRef"><span class="Identifier">ConfigRef</span></a><span class="Other">;</span> <span class="Identifier">thisModule</span><span class="Other">:</span> <span class="Identifier">int32</span><span class="Other">;</span> <span class="Identifier">importPaths</span><span class="Other">:</span> <span class="Identifier">seq</span><span class="Other">[</span><span class="Identifier">string</span><span class="Other">]</span><span class="Other">)</span> {.
|
|
<span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">OSError</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">,</span> <span class="Identifier">Exception</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">ReadEnvEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span>
|
|
<span class="Identifier">WriteIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteDirEffect</span><span class="Other">,</span> <span class="Identifier">ReadDirEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
Stage 1 spike: the nifcore port of <tt class="docutils literal"><span class="pre"><span class="Identifier">ast2nif</span><span class="Operator">.</span><span class="Identifier">writeSemDeps</span></span></tt>. Serializes the module's resolved direct imports as <tt class="docutils literal"><span class="pre"><span class="Punctuation">(</span><span class="Identifier">semdeps</span> <span class="StringLit">"path"</span> <span class="Operator">...</span><span class="Punctuation">)</span></span></tt>. Byte-identical to the old writer (verified), so <tt class="docutils literal"><span class="pre"><span class="Identifier">nim</span> <span class="Identifier">ic</span></span></tt> build graphs are unaffected.
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L239" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L239" class="link-seesrc" target="_blank" >Edit</a>
|
|
|
|
</dd>
|
|
</div>
|
|
|
|
</div>
|
|
<div id="writeStable-procs-all">
|
|
<div id="writeStable,IcBuilder,string">
|
|
<dt><pre><span class="Keyword">proc</span> <a href="#writeStable%2CIcBuilder%2Cstring"><span class="Identifier">writeStable</span></a><span class="Other">(</span><span class="Identifier">b</span><span class="Other">:</span> <span class="Keyword">var</span> <a href="#IcBuilder"><span class="Identifier">IcBuilder</span></a><span class="Other">;</span> <span class="Identifier">path</span><span class="Other">:</span> <span class="Identifier">string</span><span class="Other">;</span> <span class="Identifier">onlyIfChanged</span> <span class="Other">=</span> <span class="Identifier">false</span><span class="Other">)</span> {.
|
|
<span class="Identifier">inline</span><span class="Other">,</span> <span><span class="Other pragmadots">...</span></span><span class="pragmawrap"><span class="Identifier">raises</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">Exception</span><span class="Other">,</span> <span class="Identifier">IOError</span><span class="Other">]</span><span class="Other">,</span>
|
|
<span class="Identifier">tags</span><span class="Other">:</span> <span class="Other">[</span><span class="Identifier">RootEffect</span><span class="Other">,</span> <span class="Identifier">ReadIOEffect</span><span class="Other">,</span> <span class="Identifier">WriteIOEffect</span><span class="Other">]</span><span class="Other">,</span> <span class="Identifier">forbids</span><span class="Other">:</span> <span class="Other">[</span><span class="Other">]</span></span>.}</pre></dt>
|
|
<dd>
|
|
|
|
|
|
<a href="https://github.com/nim-lang/Nim/tree/devel/compiler/icnifcore.nim#L92" class="link-seesrc" target="_blank">Source</a>
|
|
<a href="https://github.com/nim-lang/Nim/edit/devel/compiler/icnifcore.nim#L92" 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: 2026-07-31 03:44:06 UTC</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script defer data-domain="nim-lang.org" src="https://plausible.io/js/plausible.js"></script>
|
|
|
|
</body>
|
|
</html>
|